• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Auf Testserver ok, online Fehler

Lischen2209

Neues Mitglied
Hallo!

Ich versuche seit einer halben Stunde herauszufinden, woran es liegt, aber meine Loginseite funktioniert nur auf dem Testserver, aber auf dem richtigen Server nicht. Gebe ich auf meinem localhost Passwort und Login korrekt ein, wird das Login bestätigt. Tue ich das selbe auf dem Testserver, haut es mir ein 'Fehler oder Passwort stimmen nicht.' um die Ohren. Ich habe keine Idee mehr. Könnte jemand vielleicht mal ein Auge drauf werfen...?
Wäre sehr lieb... ;)
LG Lischen2209

PHP:
<h1>Login</h1>
  <form method="post" action="#">
  <table border="0" cellpadding="0" cellspacing="6">
   <tr>
   <td align="left">Loginname:</td>
   <td><input name="nickname" type="text" size="29" maxlength="20"></td>
   </tr>
   
   <tr>
   <td align="left">Passwort:</td>
   <td><input name="password" type="password" size="30" maxlength="25"></td>
   </tr>
   
   <tr>
   <td align="left"></td>
   <td><input type="Submit" value="Bestätigen"></td>
   </tr>
  </table>
 </form>
 <a href="passwordforgotton.php">Passwort vergessen?</a> 
 <br>
 <br>
<?php
 if($_POST) {
   $password = $_POST['password'];
   $username = $_POST['nickname'];
   
  if((empty($username) && !empty($password)) || (!empty($username) && empty($password))) {
   echo 'Fehler: Du musst alle Felder ausfüllen!';
  }
  else {
   $dbhost = 'localhost';
   $dbuser = 'meeeeeep';
   $dbpass = 'trollkuckuckschwall';
   $dbname = 'krahkrahkrah';
   $conn = mysql_connect($dbhost,$dbuser,$dbpass)
    or die ('Fehler. Es konnte keine Verbindung zur Datenbank hergestellt werden.');
   mysql_select_db($dbname);
   $query = sprintf("SELECT COUNT(id)FROM users WHERE UPPER(username) = UPPER('%s') AND password='%s'",
   mysql_real_escape_string($username),
   mysql_real_escape_string(md5($password)));
   $result=mysql_query($query);
   list($count) = mysql_fetch_row($result);
    if ($count == 1) {
     echo 'Du wurdest erfolgreich eingeloggt';
     $_SESSION ['authenticated'] = true;
     $_SESSION ['username'] = $username;
    }
    else {
     echo 'Dein Login oder das Passwort sind nicht korrekt.';
    }
  }
 }
?>

Anmerkung: Es sollte ja eigentlich Du wurdest erfolgreich eingeloggt auswerfen, stattdessen bekomme ich eine <fehlermeldung, das Passwort sei nicht korrekt... Hilfe... :S
 
Vergleiche mal mittels phpinfo() die PHP-Einstellungen der beiden Server. Ggfs. ist auch die PHP-Version interessant.
 
also wenn das richtig geschrieben hast, kommen daten aber die db prufung sagt nö, hast den benutzer in der db stehen?

cheffchen
 
Also PHP-Version ist 5.4.14 ;)
Und phpinfo() wirft vom Server das aus.


[TD="class: e"]System [/TD]
[TD="class: v"]Linux host4 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2 x86_64 [/TD]

[TD="class: e"]Build Date [/TD]
[TD="class: v"]Apr 19 2013 14:51:36 [/TD]

[TD="class: e"]Server API [/TD]
[TD="class: v"]CGI/FastCGI [/TD]

[TD="class: e"]Virtual Directory Support [/TD]
[TD="class: v"]disabled [/TD]

[TD="class: e"]PHP API [/TD]
[TD="class: v"]20100412 [/TD]

[TD="class: e"]PHP Extension [/TD]
[TD="class: v"]20100525 [/TD]

[TD="class: e"]Zend Extension [/TD]
[TD="class: v"]220100525 [/TD]

[TD="class: e"]Zend Extension Build [/TD]
[TD="class: v"]API220100525,NTS [/TD]

[TD="class: e"]PHP Extension Build [/TD]
[TD="class: v"]API20100525,NTS [/TD]

[TD="class: e"]Debug Build [/TD]
[TD="class: v"]no [/TD]

[TD="class: e"]Thread Safety [/TD]
[TD="class: v"]disabled [/TD]

[TD="class: e"]Zend Signal Handling [/TD]
[TD="class: v"]disabled [/TD]

[TD="class: e"]Zend Memory Manager [/TD]
[TD="class: v"]enabled [/TD]

[TD="class: e"]Zend Multibyte Support [/TD]
[TD="class: v"]provided by mbstring [/TD]

[TD="class: e"]IPv6 Support [/TD]
[TD="class: v"]disabled [/TD]

[TD="class: e"]DTrace Support [/TD]
[TD="class: v"]disabled [/TD]

[TD="class: e"]Registered PHP Streams[/TD]
[TD="class: v"]compress.zlib, compress.bzip2, dict, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtmp, rtsp, scp, sftp, smtp, smtps, telnet, tftp, php, file, glob, data, phar, zip[/TD]

[TD="class: e"]Registered Stream Socket Transports[/TD]
[TD="class: v"]tcp, udp, unix, udg, ssl, sslv3, tls[/TD]

[TD="class: e"]Registered Stream Filters[/TD]
[TD="class: v"]zlib.*, bzip2.*, convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk[/TD]
 
Ich erkläre mal genauer was ich gemacht habe:

ich hab einfach mit nem SQL-Befehl eine Tabelle erstellt:

CREATE TABLE users (
username varchar(250),
password varchar(50),
PRIMARY KEY (id)
);

Und in diese kann man sich problemfrei so registrieren wie ich es will, es wird alles brav eingetragen, mit id und allem wie ich es wollte.

Dann hab ich den obigen Code vom Testserver geklaut und alle Zugangsdaten ausgewechelt und auch auf den Server.
Und dort funtioniert der obige Code trotzdem nicht. Es wird kein Fehler ausgewofen, dass keine Serververbindung da ist und den Teil, der auf die Tabelle zugreift hab ich von der funktionierenden Registrierungsseite, also muss das ja funktionieren, da hat er auf die richtige Datenbank und tabelle rausgesucht und sonstwas gemacht damit.

Es muss irgendwie im letzten Teil des Codes stecken, aber ich kapier nicht was und hab auch erst im Dezember angefangen PHP zu lernen, hab somit keine große Erfahrung.
 
Dann musst Du mal selbst debuggen. Z.B. folgendes:

Ergänze vor

PHP:
$result=mysql_query($query);

mal

PHP:
echo $query;

Dadurch würde beim Aufruf der Loginprüfung dann das fertige Statement ausgegeben werden. Führe das mal im phpmyadmin deines Live-Servers aus. Wenn dort 0 Ergebnisse kommen, dann unterscheiden sich die Bedingungen in dem Statement an irgendeiner Stelle von den tatsächlichen Datenbankinhalten.

Weiterer Gedanke:
Wenn Du die Registrierung durchführst, speicherst Du das Passwort doch sicher identisch: mittels der PHP-Funktion md5() - oder? Wenn nein, dann könnte das evtl. ein Grund sein.
 
hallo,

bei =2 hosting gibt es zwar fast immer probleme mit datenbank.

aber deins ist echt einfach und tippe auf abgleich fehler.
mach das doch mal in klar text zum test und md5 ist veraltet da viel zu unsicher.

cheffchen
 
Zurück
Oben