Warning: mysql_num_rows()

syntax

Mitglied
Hallo Leute,

beschäftige mich erst seit kurzem mit PHP und habe mich mit dem PHP-Tutorial http://www.tutorials.de/forum/php-tutorials/9684-php-mysql-login-system-mit-sessions.html beschäftigt.

Komme an sich mit dem Script klar, ich habe bloß das Problem wenn ich mich einloggen will kommt diese Fehlermeldung:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/web2/21/16/51700816/htdocs/login/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /mnt/web2/21/16/51700816/htdocs/login/login.php:21) in /mnt/web2/21/16/51700816/htdocs/login/login.php on line 34


Ich habe die DB bei Strato. In der Tabelle Login bei der Spalte mit dem Passwort habe ich MD5 ausgewählt, da das in dem Script auch so deklariert ist.

In Zeile 21 des Login Scriptes steht:

PHP:
if (mysql_num_rows ($result) > 0)
{
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["id"]; 
  $_SESSION["user_nickname"] = $data["benutzername"];  

  header ("Location: intern.php"); 
} 
else 
{ 
  header ("Location: formular.php?fehler=1"); 
} 
?>

Muss aber erhlich sagen das ich diese Zeile nicht ganz verstehe und auch nicht weis wo ich da suchen soll um eine Erklärung zu finden.

Wär schön wenn ihr mir da helfen könntet.

Vielen Dank.
 
Zuletzt bearbeitet:
Du müsstest irgendwo Folgendes bei dir stehen haben:
PHP:
$result = mysql_query('...');
Ändere das mal in Folgendes:
PHP:
$result = mysql_query('...') or die(mysql_error());
Somit bekommst du eine Erklärung, warum deine Abfrage falsch ist. Dies bedingt, dass keine Ergebnisresource erstellt wird, was bedingt, dass eine Fehlermeldung erscheint, was bedeutet, dass vor header() schon eine Ausgabe an den Bildschirm geschieht, was wiederrum bedeutet, dass der Header vorher gesendet wurde.

PS: Bei ... muss natürlich deine Abfrage rein.
 
Ahh...


jetzt konnte ich diesen Fehler beheben und statt eine Fehlermeldung werde ich jetzt immer wieder auf meine Loginseite zurück geworfen.

Also habe ich Entwerder einen Fehler im Script

intern.php

PHP:
<?php 
include ("checkuser.php"); 
?> 
<html> 
<head> 
  <title>Vertriebspartner-Bereich</title> 
</head> 
<body> 
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br> 
  Nickname: <?php echo $_SESSION["user_nickname"]; ?>
  <hr> 
  <a href="logout.php">Ausloggen</a> 
</body> 
</html>

oder im checkuser.php

PHP:
<?php 
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
  header ("Location: formular.php"); 
} 
?>


Meine Vermutung ist ja das er schon irgendwas beim checkuser.php script nicht machen will oder lieg ich da Falsch ?
 
Zuletzt bearbeitet:
Geh mal deinen genauen Ablauf durch und prüfe wo die $_SESSION["user_id"] gesetzt wird. Denn wenn du immer wieder auf die formular.php umgeleitet wirst, bedeutet das ja das es sie an der Stelle nicht gibt.
 
Ach ja warum man sich bei neuen Sachen aber dann auch immer Überblöd anstellen muss.

Aktuelle checkuser.php Datei war nicht auf dem Server.

Eine Frage hätte ich noch. Ich muss ja die Login Daten der Verbindung zur DB angeben

PHP:
// Datenbankverbindung aufbauen 
$connectionid = mysql_connect ("DATENBANK-SERVER", "BENUTZERNAME", "PASSWORT"); 
if (!mysql_select_db ("DATENBANK", $connectionid)) 
{ 
  die ("Keine Verbindung zur Datenbank"); 
}

Ich hab bei Strato eine Datenbank mit einem festgelegten Benutzer, das Passwort kann ich selbst bestimmen (Es ist auch eingerichtet).

Ich hab in dem Script alle Daten ausgefüllt auch das Passwort denn wenn ich es leer lasse kommt diese Fehlermeldung:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'BENUTZERNAME'@'sloggo.store' (using password: NO) in /mnt/web2/21/16/51700816/htdocs/login/login.php on line 6

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /mnt/web2/21/16/51700816/htdocs/login/login.php on line 7
Keine Verbindung zur Datenbank

Kann ich das beruhigt in dem Script stehen lassen oder ist das ein grober Fehler, denn es sollen ja keine normalen Benutzer die komplette DB verwalten dürfen sondern nur ich.

Und wenn nicht was muss ich tun damit er die Verbindung ohne Passwort herstellen kann.
 
Zuletzt bearbeitet:
Nein, du solltest das nicht so dastehen lassen, da dir diese Meldung eben sagt, dass keine Verbindung hergestellt werden konnte. Außerdem kann man auch noch entnehmen, dass dieser Nutzer kein Kennwort festgelegt hat und du somit dich mit der Datenbank ohne solches anmelden kannst.
 
Hab ich dann was in der DB-Tabelle falsch deklariert oder warum kommt die Fehlermeldung wenn ich das Passwort für die DB Verbindung leer lasse?
 
Wenn in der Fehlermeldung "(using password: NO)" steht, dann wirst du kein Passwort bei mysql_connect() angegeben haben. Hast du das zur Sicherheit einmal überprüft und ob auch wirklich die richtige Datei auf dem Server liegt? ;)
 
Ja, wie obenn beschrieben. Die Antwort von Euch war das ich es nicht drin stehen lassen soll.

Deshalb ist ja meine Frage wie ich ohne Adminrechte und Passwort als normaler Bentuzer auf die DB zugreifen kann.
 
Zurück