PHP Loginscript Problem

yeronimo

Erfahrenes Mitglied
Ich hab ein loginscript in php, das ich nicht zum laufen bekomme. hab alle abfragen mehrmals kontrolliert, alles schonmal umgeschrieben usw.

Ich hab mit testabfragen soweit rumgespielt, das ich eingrenzen knn wo wohl der Fehler liegen muss.

Der Fehler sollte nach meinen einschatezungen irgendwo in der Systax der sqlabfrage liegen auch wenn der Fehler :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web574/html/login.php on line 23

anders aussieht. Die Ausgabe scheint irgendwie einen falscen Wert zu beinhaltn. Die Daten sind vollständig in der Datenbank, hab ich mehrmals gecheckt.


PHP:
<?php
// session start
session_start(); 

include ("config.php");
// db connec
$connectionid = @mysql_connect ($mysql_host,$mysql_user,$mysql_pass);
@mysql_select_db ($mysql_name, $connectionid) OR
die("Die Datenbank konnte nicht gefunden werden [".mysql_error()."]");

$sql = "SELECT ".
    "Id, Nickname, Nachname, Vorname, Admin, Status, superadmin, moderator ".
  "FROM ".
    "benutzerdaten ".
  "WHERE ".
    "(Nickname like '".$_REQUEST["name"]."') AND ".
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);

if (mysql_num_rows($result) > 0)
{
echo "test";
  // Benutzerdaten rein ins array.
  $data = mysql_fetch_array ($result);

  // Sessionvariablen erstellen und registrieren
  $_SESSION["user_id"] = $data["Id"];
  $_SESSION["user_nickname"] = $data["Nickname"];
  $_SESSION["user_nachname"] = $data["Nachname"];
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_admin"] = $data["Admin"];
  $_SESSION["user_status"] = $data["Status"];
?>
 <script language ="JavaScript"> 
<!-- 
document.location.href="index.php?content=intern"; 
// --> 
</script>
<?
}
else
{
 ?>
 <script language ="JavaScript"> 
<!-- 
document.location.href="index.php?content=formular&fehler=1"; 
// --> 
</script>
<?
}

?>


Die request daten kommen asu dem vorherigen eingabeformular und werden mit $_REQUEST geholt, ich weiß soll angeblich veraltet sein, aber die daten kommen einwandfrei an.


Bitte helft mir, sonst verzweifel ich noch.... :(
 
Probier es mal so:

PHP:
<?php
// session start
session_start(); 

include ("config.php");
// db connec
$connectionid = @mysql_connect ($mysql_host,$mysql_user,$mysql_pass);
@mysql_select_db ($mysql_name, $connectionid) OR
die("Die Datenbank konnte nicht gefunden werden [".mysql_error()."]");

$sql = 'SELECT Id, Nickname, Nachname, Vorname, Admin, Status, superadmin, moderator FROM benutzerdaten 
        WHERE Nickname = \''.$_REQUEST["name"].'\' AND Kennwort = \''.md5($_REQUEST["pwd"]).'\')';
        
$result = mysql_query ($sql);

if (mysql_num_rows($result) > 0)
{
echo "test";
  // Benutzerdaten rein ins array.
  $data = mysql_fetch_assoc($result);

  // Sessionvariablen erstellen und registrieren
  $_SESSION["user_id"] = $data["Id"];
  $_SESSION["user_nickname"] = $data["Nickname"];
  $_SESSION["user_nachname"] = $data["Nachname"];
  $_SESSION["user_vorname"] = $data["Vorname"];
  $_SESSION["user_admin"] = $data["Admin"];
  $_SESSION["user_status"] = $data["Status"];
?>
 <script language ="JavaScript"> 
<!-- 
document.location.href="index.php?content=intern"; 
// --> 
</script>
<?
}
else
{
 ?>
 <script language ="JavaScript"> 
<!-- 
document.location.href="index.php?content=formular&fehler=1"; 
// --> 
</script>
<?
}

?>

Setze nicht auf REQUEST... Verwende POST ;) Ich hab es mal so gelassen, da du es ja gern die Daten über REQUEST möchtest.
 
selber fehler, aendert nichts ;)

trotzdem danke ^^


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web574/html/login.php on line 18
 
Mach mal die @-Zeichen von der Verbindungsvariable und so weg und bau mal das oben bei dir im Script ein:

error_reporting(E_ALL);

Entweder du hast keine Datenbankverbindung und kannst es ja nicht sehen weil du es unterdrückt hast oder in der Abfrage ist ein Fehler.
 
....immernoch das gleiche problem....

PHP:
<?php 
// session start 
session_start(); 
error_reporting(E_ALL); 

include ("config.php"); 
// db connec 
$connectionid = mysql_connect ($mysql_host,$mysql_user,$mysql_pass); 
mysql_select_db ($mysql_name, $connectionid) OR 
die("Die Datenbank konnte nicht gefunden werden [".mysql_error()."]"); 

$sql = 'SELECT Id, Nickname, Nachname, Vorname, Admin, Status, superadmin, moderator FROM benutzerdaten  
        WHERE Nickname = \''.$_REQUEST["name"].'\' AND Kennwort = \''.md5($_REQUEST["pwd"]).'\')'; 
         
$result = mysql_query ($sql); 

if (mysql_num_rows($result) > 0) 
{ 
echo "test"; 
  // Benutzerdaten rein ins array. 
  $data = mysql_fetch_assoc($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 
  $_SESSION["user_admin"] = $data["Admin"]; 
  $_SESSION["user_status"] = $data["Status"]; 
?> 
 <script language ="JavaScript">  
<!--  
document.location.href="index.php?content=intern";  
// -->  
</script> 
<? 
} 
else 
{ 
 ?> 
 <script language ="JavaScript">  
<!--  
document.location.href="index.php?content=formular&fehler=1";  
// -->  
</script> 
<? 
} 

?>



:(
 
Pack mal das komplette script rein weil da fehlen sehr sehr viele Abfragen.... Aber egal... Aufjedenfall muss du das Komplette script posten damit auch andere dir mithelfen können das script einwandfrei nutzen zu können. Ich sehe kein Formular im Script, und kann auch somit z.B nicht nachvollziehen was du im Action-Attribute im Form-Tag hast..
 
formular.php:

PHP:
form action="login.php" method="post"></td></tr>
  <tr align="left" bgcolor="#A4CECC"><td>Name: </td><td><input type="text" name="name" size="20"><br></td>
  <tr align="left" bgcolor="#A4CECC"><td>Kennwort:</td><td><input type="password" name="pwd" size="20"><br></td></tr>
<tr align="left"><td><input type="submit" value="Login"></td><td align="right">» <a href="index.php?content=lostpw">passwort vergessen</a>?</td></tr>
</form>

login.php:
PHP:
<?php 
// session start 
session_start(); 
error_reporting(E_ALL); 

include ("config.php"); 
// db connec 
$connectionid = mysql_connect ($mysql_host,$mysql_user,$mysql_pass); 
mysql_select_db ($mysql_name, $connectionid) OR 
die("Die Datenbank konnte nicht gefunden werden [".mysql_error()."]"); 

$sql = 'SELECT Id, Nickname, Nachname, Vorname, Admin, Status, superadmin, moderator FROM benutzerdaten  
        WHERE Nickname = \''.$_REQUEST["name"].'\' AND Kennwort = \''.md5($_REQUEST["pwd"]).'\')'; 
         
$result = mysql_query ($sql); 

if (mysql_num_rows($result) > 0) 
{ 
echo "test"; 
  // Benutzerdaten rein ins array. 
  $data = mysql_fetch_assoc($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 
  $_SESSION["user_admin"] = $data["Admin"]; 
  $_SESSION["user_status"] = $data["Status"]; 
?> 
 <script language ="JavaScript">  
<!--  
document.location.href="index.php?content=intern";  
// -->  
</script> 
<? 
} 
else 
{ 
 ?> 
 <script language ="JavaScript">  
<!--  
document.location.href="index.php?content=formular&fehler=1";  
// -->  
</script> 
<? 
} 

?>



sorry, aber wüsste nicht wo da sehr sehr viel fehlt ?

formulardaten kommen hier einwandfrei an, deshalb hab ichs fuer unnotig gehalten dne oart hie rzu posten ....

naja dennoch thx :)
 
Gib mal den Sql mit echo aus und kopier den befehl und teste das unter phpmyadmin dann bekommste eine genauere Fehler meldung.

Probier mal das

PHP:
$name=trim($_POST["name"]);
$pwd=md5(trim($_POST["pwd"]));

$sql = sprintf ("SELECT Id, Nickname, Nachname, Vorname, Admin, Status, superadmin,moderator FROM benutzerdaten WHERE Nickname='%s' AND Kennwort='%s' ",($name),($pwd));
echo $sql;

Mfg Splasch
 
Zuletzt bearbeitet:
Zurück