Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] echo wird ignoriert?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] echo wird ignoriert?

    Hallo,
    ich habe ein htaccess Verzeichnis, welches geschützt ist. Dort liegt dann eine Datei drin, die mittels Get Parameter einen Wert ausliest und dann ausgeben soll. Leider funktioniert es nur, wenn ich nach dem echo Befehl den Befehl exit; anhänge. Außerdem habe ich dannach eine Weiterleitung, die also nicht funktionieren dürfte, da der Header bereits ausgegeben wurde.

    Wo kann der Fehler wohl liegen? Kann es an der Serverkonfiguration liegen oder weshalb wird der PHP Code nicht ausgegeben? Die Fehler werden über:
    PHP-Code:
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors'1); 
        
    ini_set('display_startup_errors'1); 
    angezeigt.

  • #2
    Bitte Script posten. Auf dieser Basis kann man nix sagen.

    Kommentar


    • #3
      Gerne.

      PHP-Code:
      <?php
      error_reporting
      (E_ALL|E_STRICT);
      ini_set('display_errors'1); 
          
      ini_set('display_startup_errors'1); 
      require_once(
      "../../functions.php");

      DataBase::verbindungAufbauen();
      function 
      saltPassword($password$salt,$username)
      {
      return 
      hash('sha256'md5(strtolower($username)) . $password $salt);
      }
      $user mysql_real_escape_string($_POST["username"]);

      $pw mysql_real_escape_string($_POST["password"]);
      $pw saltPassword($pw'...',$user);
      echo 
      $user.$pw;

      $sql "SELECT 

          `uid`

        FROM 

          `table_admin`

        WHERE `username` like '
      $user' AND `password` = '$pw'"

      $result mysql_query ($sql) or die(mysql_error()); 

      echo 
      mysql_num_rows ($result);
      print_r($_POST);

      if (
      mysql_num_rows ($result) > 0


          
      session_start();

        
      // Benutzerdaten in ein Array auslesen. 

        
      $data mysql_fetch_array ($result); 



        
      // Sessionvariablen erstellen und registrieren 

        
      $_SESSION["s_id"] = session_id();
      $_SESSION["userid"] = $data["uid"];

        
      header ('Location: folder/index.php?'SID); 



      else 



        
      header ("Location: index.php?login=failed"); 



      ?>

      Kommentar


      • #4
        Nebenbei: LIKE ist nicht wirklich sinnvoll für sowas, weil LIKE Wildcards zulässt. Ein `username` LIKE '$username' ist zwar tendeziell weniger problematisch als ein `password` LIKE '$pw', aber: Wieso nicht einfach „=“?

        - http://dev.mysql.com/doc/refman/5.6/...#operator_like

        LIMIT 0,1 kann bei solchen Queries auch nicht schaden.

        Kommentar


        • #5
          Am Ende des Scriptes machst du auf jeden Fall eine Weiterleitung, per Location-Header, also siehst du die Ausgabe nicht, weil der Browser eine neue Seite aufruft.
          Normalerweise funktioniert diese Weiterleitung nicht, wenn vorher eine Ausgabe gemacht wurde. Da sie aber anscheinend funktioniert, ist auf dem Server Output-Buffering aktiv, kann z.B. in der php.ini eingestellt werden oder auch manuell mit ob_start();

          Kommentar


          • #6
            Bei Output Buffering steht 4096.

            Außerdem funktioniert es ja sonst in den anderen Ordnern. Nur dort einfach nicht. Also wo kann dann sonst noch der Fehler liegen?
            mysql_num_rows ($result) ergibt übrigens 0, obwohl es bei einer Direkteingabe in PHPMyAdmin 1 liefert.

            Kommentar


            • #7
              Zitat von Snoopey Beitrag anzeigen
              Bei Output Buffering steht 4096.

              Außerdem funktioniert es ja sonst in den anderen Ordnern. Nur dort einfach nicht. Also wo kann dann sonst noch der Fehler liegen?
              Dann hast du den "Fehler" ja schon:

              http://php.net/manual/de/outcontrol.configuration.php

              "Funktionieren" ist hier wohl der falsche Begriff. Du versuchst hier absichtlich einen Fehler zu produzieren. Ich glaube kaum das du das in deinen anderen Scripten tust.

              Kommentar


              • #8
                Zitat von Snoopey Beitrag anzeigen
                Also wo kann dann sonst noch der Fehler liegen?
                Wenn du eine Weiterleitung machst, kannst du keine Ausgabe sehen, was ist daran nicht zu verstehen?

                Kommentar


                • #9
                  Was soll da funktionieren? Du musst schon sagen, was du unter "richtig" und "falsch" verstehst...

                  Im oberen Teil des Scriptes erfolgen bereits Ausgaben, d.h. ohne Outputbuffering würden die Header aus dem unteren Teil nicht funktionieren. Mit Outputbuffering bekommst du keine Ausgabe zu sehen (obwohl sie gemacht wurde), weil die Header den Browser zum sofortigen Umleiten veranlassen.

                  Kommentar


                  • #10
                    Das Problem liegt beim SQL Statement. Leider geht dieses nicht, obwohl es in PHPMyAdmin funktionierte. Wie kann so etwas sein?

                    Kommentar


                    • #11
                      Leider geht dieses nicht
                      Was genau heisst das? Liefert es einen Fehler oder "nur" eine leere Ergebnismenge? mysql_error benutzen!

                      Kommentar


                      • #12
                        Habe es hinbekommen. Beim SQL Statement fehlte ein Zeichen bei der SQL Tabelle. Danke

                        Kommentar

                        Lädt...
                        X