Problem mit dem Tutorial Loginskript!

icefire

Erfahrenes Mitglied
Hallo!

Ich habe versucht das Loginskript aus den Tutorials zu benutzen - bekomme aber diese Fehlermeldungen:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /local/var/....../intern/login.php on line 18

Warning: Cannot modify header information - headers already sent by (output started at /local/var/....../intern/login.php:18) in /local/var/...../intern/login.php on line 29

PHP:
<?
session_start (); 

include("connect_sql.php"); 

$verbindung = @mysql_connect($mysqlserver, $mysqluser, $mysqlpass) 
   or die("Konnte keine Verbindung zum Datenbankserver aufbauen!"); 
   
$selectdb = @mysql_select_db($mysqldb, $verbindung)            
   or die("Konnte die Datenbank <b>$mysqldb</b> nicht auswählen!"); 
  
$sql = "SELECT "."ident_user_id, ident_nick, ident_pass, ident_mail"."FROM "."inf_mem_ident". 
  "WHERE ". 
    "(ident_nick like '".$_REQUEST["ident_nick"]."') AND ". 
    "(ident_mail = '".md5 ($_REQUEST["ident_mail"])."')"; 
$result = mysql_query ($sql); 

if (mysql_num_rows ($result) > 0) 
{ 
  $data = mysql_fetch_array ($result); 
  $_SESSION["ident_user_id"] = $data["ident_user_id"]; 
  $_SESSION["ident_nick"] = $data["ident_nick"]; 
  $_SESSION["ident_pass"] = $data["ident_pass"]; 
  $_SESSION["ident_mail"] = $data["ident_mail"]; 
  header ("Location: index.php?file=adminpanel"); 
} 
else 
{ 
  header ("Location: index.php?file=adminlog?fehler=1"); 
} 
?>

Was gabe ich denn da falsch gemacht bzw wie kann ich den Fehler beseitigen?

thx for help
ice
 
Ist denn auch die Tabelle "inf_mem_ident" mit den Feldern "ident_user_id", "ident_nick", "ident_pass" und "ident_mail" in Deiner Datenbank vorhanden?

// Edit:
Bzw. mach mal aus der Zeile
PHP:
$result = mysql_query ($sql);
folgende:
PHP:
$result = mysql_query ($sql) or die ("Ungültige Abfrage: " . mysql_error());
 
Zuletzt bearbeitet:
Problem wird folgendes sein:
Laut dem Script hast du folgendes:
PHP:
$sql = "SELECT "."ident_user_id, ident_nick, ident_pass, ident_mail"."FROM "."inf_mem_ident". 
  "WHERE ";

Vor dem FROM und vor dem WHERE fehlt das Leerzeichen. Das nimmt dir SQL richtig übel.
 
Ja, Datenbank ist vorhanden. Auch einen User habe ich zum testen angelegt. Auch ist mir ein kleiner Fehler aufgefallen - ich hatee statt ident_pass ident_mail mit md5 funktin ausgestatten....klar das das nicht gehen kann.

Ich habe das entsprechend mal eingefügt und erhalte nun folgende Felhlermeldung:
Ungültige Abfrage: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(ident_nick like 'Runner') AND (ident_pass = '9fd926573e431272a < endet hier!
 
Also der Code für das Loginskript sollte möglicherweise mal überarbeitet bzw aktuallisiert werden!?

Ich habe die Abfrage entsprechend geändert:
PHP:
$sql = "SELECT ident_user_id, ident_nick, ident_pass, ident_mail FROM inf_mem_ident WHERE 
    ident_nick like '$_SESSION[ident_nick]' AND ident_pass = 'md5 ($_SESSION[ident_pass])'";

Nun erhalte nicht mehr diese Fehlermeldung....aber hab die nächsten Probleme!
Wenn ich versuche mit header() die Seite aufzubauen bleibt die Seite weiss. Wenn ich include() verwende kommt folgende Meldungen:


Warning: main(index.php?file=intern/adminlog?fehler=1): failed to open stream: No such file or directory in /local/var/www/133/2098/www/intern/login.php on line 27
Warning: main(): Failed opening 'index.php?file=intern/adminlog?fehler=1' for inclusion (include_path='.:/usr/share/pear:/var/www/133/2098/inc/') in /local/var/www/133/2098/www/intern/login.php on line 27


Ich weiss das er die index.php nicht finden kann weil die ja im Hauptverzeichnis ist und das Loginskript in einem Unterverzeichnis (intern) gelagert ist. Nur wie kann ich erreichen das alle Seiten aufgerufen werden ohne das ich die Struktur verändern muss?
 
Nun erstmal zum ersten Punkt:
Wie kommst du darauf, dass die benötigten Werte für die SQL-Anweisung in der Session gespeichert sind? Deine Abfrage hat oben meines Erachtens einfach nicht funktioniert weil dort ein Leerzeichen hinter bzw. vor dem WHERE gefehlt hat. Die Werte danach kommen definitiv aus dem Formular wenn du das Script nicht abgeändert hast!

Zweites Problem:
Ich denke, dass includes mit Variablenübergabe nicht funktionieren. Hast du ja auch gar nicht nötig, da die Variablen bei einer per include(); eingefügten Datei automatisch gelten, da sie ja nicht separat aufgerufen, sondern in die aufrufende Datei eingefügt wird.
Es reicht also wenn du den Dateinamen ohne Parameter übergibst.

Drittes Problem:
Das ist schon eine etwas schwierigere Sache. Ich persönlich löse das ganze seit langer Zeit so:
Ich speichere in jeder aufrufbaren Datei den relativen Pfad zum Hauptverzeichnis. Diesen Wert setze ich einfach vor jeden Link. Ist zwar am Anfang etwas schreibarbeit ... aber wenn du es geschickt anwendest ist das eine super Variante.



Ich hoffe ich konnte etwas weiterhelfen.
 
Du setzt eine variable

$path = " /var/www/111/222/www/"; //absoluter path

und setzt dann einen entsprechenden link

<a HREF="<?echo $path; ?>index.php?file=news">

...hab ich das so richtig verstanden?
 
Naja es reich an dieser Stelle eigentlich der relative Pfad zu dem Rootverzeichnis deiner Webseite. Den Absoluten Pfad auf dem Server würde ein Link ja gar nicht finden.

PHP:
$path = "../"; // Wir befinden uns in Verzeichnis '/ordner'

echo "<a href=\"".$path."datei.php\">Link</a>";
 
Zurück