tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
623
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Mako Mako ist offline Mitglied Bronze
    Registriert seit
    Oct 2003
    Beiträge
    38
    Hi Leute,

    ich bin etwas verwirrt. Mein Login-Skript funktioniert Lokal einwandfrei. Nur wenn ich es auf den Server spiele, dann klappt es mal und mal nicht. Hat jemand vielleicht eine Erklärung dafür?

    Hier der Code:
    PHP-Code:
    include( "connect_db.php" );
    $ergebnis "SELECT * FROM phpbb_users WHERE (username = '".$_POST["name"]."') AND (user_password = '".md5($_POST["passwort"])."')";
    $result mysql_query $ergebnis );
    if ( 
    mysql_num_rows $result ) == true )
    {
    session_start();
    session_register "login" );
    session_register "nickname" );
    $nickname $_POST["name"];
    $login "666";
    header "LOCATION: pong.php" );
    }
    else {
    header "LOCATION: fehler.php" );

    Die Feldernamen habe ich überprüft, es liegt weder ein Tippfehler noch eine Verwechslung vor.

    Danke im Voraus
     

  2. #2
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    Was klappt denn nicht?
    Fehlermeldung?
     

  3. #3
    simrml simrml ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    56
    Probier es einmal mit absoluten URIs anstatt relativen bei header('Location...');
     

  4. #4
    Mako Mako ist offline Mitglied Bronze
    Registriert seit
    Oct 2003
    Beiträge
    38
    Hi,

    @simrml: Klappt leider auch damit nicht.

    @Ben Ben: Das Problem ist, dass ich obwohl der Benutzername und das Passwort stimmt ich immer wieder auf die fehler.php weitergeleitet werde und nicht auf die pong.php.

    Lokal geht das Ganze aber. Kann es sein dass der Part bei mysql_num_rows einen Fehler enthält. Wenn ich mir $result anzeigen lasse bekomme ich als Ausgabe Resource id #3. Ist das korrekt wenn ich dann mit true und false den Wert checke oder müsste es mir da sowieso eine Zahl ausgeben?

    Grüße und Danke
     

  5. #5
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    ich hätte das true sowieso weggelassen, da

    PHP-Code:
    if ( mysql_num_rows $result ) ) 
    das gleiche bewirkt.

    Was gibt dir denn ein var_dump(mysql_num_rows ( $result )) aus?

    Wegen der Sessionvariablen, auch wenn das nicht unmittelbar das Problem betrifft,, ich würde sie so zuweisen: $_SESSION['variable1'] = $wer1; usw
     

  6. #6
    Borderlinegirl Tutorials.de Gastzugang
    Hast du richtig erkannt. Da liegt wohl der Fehler. mysql_num_rows liefert die Anzahl der Zeilen des Abfrageergebnisses (bei dir 3). Also kannst du dort nicht mit true/false vergleichen sondern z.B. mit ">= 0" oder so.
    True wird mit 1 gleichgesetzt. Also würdest du zur Zeit nur in die "Richtig-Schleife" kommen, wenn 1 Zeile aus deiner Abfrage geliefert wird.
     

  7. #7
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    @Borderline: Das stimmt nicht ganz. Da er nur auf == true verlgeich muss es nur ein von 0 verschiedener Wert sein, dieser wird als true gewertet. Würde er auch noch auf den Datentyp mit === verlgleichen wäre das ein Problem. Denn if( mysql_num_rows() ) trifft dem zufolge dann zu, wenn der Rückgabewert != 0 ist.

    Die 3 ist auch nicht die Anzahl der Datenstäze, was auch logisch falsch wäre, denn so gäbe es 3 Nutzer (gleich im Benutzernamen und Passwort). Es ist nur eine Ressource mit der ID 3.
     

  8. #8
    Mako Mako ist offline Mitglied Bronze
    Registriert seit
    Oct 2003
    Beiträge
    38
    Hi,

    danke Leute für die schnelle hilfe. Also wenn ich das mit var_dump ausgeben lasse bekomme ich "in(1)" als ERgebnis. Müsste doch eigentlich also alles passen. GEht aber dennoch nicht.

    Nachtrag: Das ist echt total unglaublich. Gerade eben habe ich es nochmals probiert und jetzt gings wieder ohne, dass ich was geändert hatte. Das var_dump habe ich halt dazugetan aber mehr auch nicht. An was kann das liegen, das es einmal geht und einmal nicht. Am Code demnach wohl kaum. Oder doch?

    Grüße Markus
    Geändert von Mako (16.08.04 um 13:34 Uhr)
     

  9. #9
    Mako Mako ist offline Mitglied Bronze
    Registriert seit
    Oct 2003
    Beiträge
    38
    Echt mysteriös, so wie es scheint muss das an der Session liegen. Manchmal setzt er sie und manchmal nicht. Bei meinem Provider ist session.auto_start() auf off gesetzt. Ich eröffne aber sowieso immer mit session_start();

    Hat irgendwer eine Idee, selbiges Problem oder eine Lösung.

    Ich verzweifle hier. Einmal gehts und einmal nicht. Das kann man dem User doch nicht antun.

    Hier nochmal der neue Code. Die Sessionerstellung wurde ein wenig umgestellt:

    PHP-Code:
    $ergebnis "SELECT * FROM phpbb_users WHERE (username = '".$_POST["name"]."') AND (user_password = '".md5($_POST["passwort"])."')";
    $result mysql_query $ergebnis );
    var_dump(mysql_num_rows $result ));
    if ( 
    mysql_num_rows $result ) )
    {
    session_start();
    $_SESSION['login'] = '666';
    $_SESSION['nickname'] = $_POST["name"];

    header "LOCATION: pong.php" ); 
    Grüße Markus
     

Ähnliche Themen

  1. TCPListener Probleme im Netzwerk, aber lokal geht
    Von Vlami im Forum .NET Web und Kommunikation
    Antworten: 7
    Letzter Beitrag: 18.03.10, 10:36
  2. Antworten: 1
    Letzter Beitrag: 06.12.07, 10:19
  3. AJAX geht lokal aber nicht im www
    Von Eiszwerg im Forum Javascript & Ajax
    Antworten: 15
    Letzter Beitrag: 30.08.07, 22:16
  4. Antworten: 13
    Letzter Beitrag: 22.04.06, 20:07
  5. FTP Server läuft lokal aber nicht online!
    Von fexx im Forum Hosting & Webserver
    Antworten: 2
    Letzter Beitrag: 29.05.03, 04:16