tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
396
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    funnyzocker funnyzocker ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    144
    Hallo.
    Ich habe heute meinen neuen Server bekommen.
    Leider habe ich jetzt das problem das ich das Script was auf dem alten Server lief auf dem neuen nicht mehr läuft.

    Genauer gesagt das einloggen nicht mehr.
    PHP Version ist auf beiden Servern identisch.

    Der einzige Unterschied ist diese Zeil aus der phpinfo
    Neuer Server
    Server API Apache 2.0 Handler
    Alter server
    Server API CGI/FastCGI

    Hat das was zu bedeuten?

    PHP-Code:
    <?php
      
    }elseif(!$_POST['username'] || $_POST['username'] == "") {
        echo 
    '<p align="center">Einen Benutzernamen brauchen wir schon ;-)<br><br><a href="index.php?page=login">Zurück</a></p>';
      }elseif(!
    $_POST['password'] || $_POST['password'] == "") {
        echo 
    '<form action="index.php?page=login" method="post">';
        echo 
    '<p align="center">Ein Passwort brauchen wir schon ;-)<br><br>';
        echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
        echo 
    '<input type="submit" name="zurueck" value="Zurück">';
        echo 
    '</p>';
        echo 
    '</form>';
      }else{
        
    $password md5($password);
        
    $query = @mysql_query("SELECT user, pass FROM users WHERE user = '".$_POST['username']."'") or die('Select ist hlgeschlagen!');
        
    $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a ef="index.php?page=login">Zurück</a></p>');
        if(
    $password != $result['pass']){
          echo 
    '<form action="index.php?page=login" method="post">';
          echo 
    '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
          echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
          echo 
    '<input type="submit" name="zurueck" value="Zurück"></p>';
          echo 
    '</form>';
          die;
        }else{
          
    $user $result['user'];
          
    session_register('user');
          echo 
    '<p align="center">LogIn erfolgreich! :-)<br><br><a href="user/index.php?page=start">Weiter</a></p>';
        }
      }
      
    ?>
     

  2. #2
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Gibt es eine Fehlermeldung?
    Vielleicht wenn Du mal den MySQL-Funktionen die Moeglichkeit gibst sich zu beschweren?
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  3. #3
    funnyzocker funnyzocker ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    144
    Gibt keine Fehlermeldung.
    Er sagt beim einloggen nur das das Passwort nicht stimmt.
    Oder kann es auch sein das ein Server nicht mit MD5 Verschlüsselung klarkommt?
     

  4. #4
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    MySQL nimmt die Daten nur entgegen. Da Du nicht ueber die MySQL-eigene MD5-Funktion den Hash erzeugst faellt MySQL in der Hinsicht flach. Es koennte aber sein, dass Du die Feldlaenge zu kurz gewaehlt hast sodass nicht der gesamte Hash gespeichert wird und somit der Hash des eingegebenen Passworts nicht mit dem gespeicherten Hash uebereinstimmen kann.
    Wuerde, aus welchem Grund auch immer, md5() in PHP nicht funktionieren wuerdest Du wohl eine Fehlermeldung bekommen.
    MD5 ist uebrigens keine Verschluesselung sondern ein Hash-Verfahren.

    Gib doch testweise einfach mal den aus der Eingabe erstellten und den aus der Datenbank geholten Hash untereinander aus. Dann solltest Du ja sehen ob diese identisch sind.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal Folgendes:
    PHP-Code:
    <?php

        $query 
    '
            SELECT
                    1
              FROM
                    `users`
              WHERE
                    `user` = "'
    .mysql_real_escape_string($_POST['username']).'"
                AND `pass` = "'
    .md5($_POST['password']).'"
            '
    ;
        if( 
    mysql_num_rows(mysql_query($query)) <= ) {
            echo 
    'Benutzername und Passwort stimmen nicht überein! Prüfen Sie bitte Ihre Eingaben und versuchen Sie es erneut.';
        } else {
            echo 
    'Erfolgreich angemeldet.';
        }

    ?>
     
    Markus Wulftange

  6. #6
    funnyzocker funnyzocker ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    144
    hm habe es Probiert.

    Komischerweise ist der Hash aus der DB anders als der Hash den ich als passwort eingebe.
    Ist aber exakt das Passwort das ich vorher angelegt habe
     

  7. #7
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Ist der Hash aus der Datenbank vielleicht kuerzer? Wie gesagt, ist es moeglich, dass das Feld fuer den Passwort-Hash nicht lang genug ist um den gesamten Wert aufzunehmen?
    Womit hast Du das Passwort gespeichert? Auch mit einem PHP-Script?
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  8. #8
    funnyzocker funnyzocker ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    144
    Ja das passwort wird auch mit einem php script gespeichert.

    Die Hash länge in der DB ist auf 50 gestellt. Das hat bisher immer gereicht

    @Gumbo bei deiner Version kommt sofort ein fehler
    Parse error: parse error, unexpected $ in /var/www/vhosts/bilder-gigant.de/subdomains/caseconstruction/httpdocs/login.php on line 52

    Hier ist das Script womit ich user anlege
    PHP-Code:
    <?php

        $query 
    '
            SELECT
                    COUNT(*)
              FROM
                    `users`
              WHERE
                    `user` = "'
    .mysql_real_escape_string($_POST['username']).'"
            '
    ;
        if( 
    mysql_result(mysql_query($query), 0) > ) {
            echo 
    'Der Username ist bereits vergeben.';
            die;
        }

        
    $query '
            INSERT INTO
                    `users`
              SET
                    `user` = "'
    .mysql_real_escape_string($_POST['username']).'",
                    `pass` = "'
    .md5($_POST['password']).'"
            '
    ;
        
    $result mysql_query($query)
            or die(
    mysql_error());
            
    //mkdir ("user/uploadbin/$_POST[username]", 0777);
        
    echo '<p>Der neue Benutzer wurde erfolgreich angelegt!</p><p><a href="index.php?page=login">Zur Startseite</a></p>';

    ?>
    Geändert von funnyzocker (13.04.06 um 15:52 Uhr)
     

  9. #9
    funnyzocker funnyzocker ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    144
    so habe den Fehler gefunden.

    Allerdings taucht nun folgendes auf
    Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
    Kann mir jemand sagen was das bedeutet? Mein English ist grausam
     

  10. #10
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Mal sehen, was meine Englischkenntnisse noch so hergeben:
    Warnung: unbekannt(): Ihr Skrip verlässt sich vielleicht auf einen Nebeneffekt von Sitzungen, der seit PHP 4.2.3 existert. Bitte seien Sie darauf aufmerksam gemacht, dass Sitzungen nicht globale Variablen als Datenquelle berücksichtigen, außer register_globals ist aktiv. Sie können diese Funktionsweise und damit diese Warnung unterbinden, indem sie session.bug_compat_42 beziehungsweise session.bug_compat_warn auf off setzen.
     
    Markus Wulftange

  11. #11
    funnyzocker funnyzocker ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    144
    Zitat Zitat von Gumbo
    Mal sehen, was meine Englischkenntnisse noch so hergeben:
    Vielen vielen Dank. Das war es. Habe eben mal die php.ini geändert und schon luppts.
     

Ähnliche Themen

  1. Antworten: 21
    Letzter Beitrag: 10.02.07, 19:08
  2. script geht bei server wechsel nicht
    Von jackob100 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 01.05.06, 16:06
  3. Antworten: 7
    Letzter Beitrag: 09.09.05, 17:51
  4. WinTV-Karte auf einem PCI erkannt aufm andern nicht!?
    Von titusas im Forum Microsoft Windows
    Antworten: 2
    Letzter Beitrag: 19.02.05, 00:54
  5. Antworten: 4
    Letzter Beitrag: 27.11.04, 19:15