Login Script nicht ganz

Grunge

Erfahrenes Mitglied
Hi Leute dank eures Tutorials habe ich versucht meinen Auftrag hier fertig z ustellen, doch er nicht. Er logged sic nicht aus und nicht ein - wieso!!!? hier die codes. (P.S.: ich habe ein 3-spalten layout verwendet und daher werden alle wichtigen dateien [auch die wo die db verbunden wird] in der index included...)

ich habe 3 dateien bearbeitet:
Login.php (dort sendet das formular die daten hin)
menu.php (hier wird geprüft ob eine SID vergeben ist, damit ein entsprechendes menü dazu gebeldent werden kann)
Logut.php (zum ausloggen logischer weise)
hoffe ihr wisst weiter....thx
login.php:

:

Code:
<?php
echo "<br><br><br>";

?>

<html>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#3399CC"><div align="left">::Startseite</div></td>
</tr>
</table><br>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#FFFFFF"><div align="center">
<?
 $sql = "SELECT ". 
    "id, username, nachname, vorname ". 
  "FROM ". 
    "customers ". 
  "WHERE ". 
    "(username like '".$_REQUEST["user"]."') AND ". 
    "(kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

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["username"]; 
  $_SESSION["user_nachname"] = $data["nachname"]; 
  $_SESSION["user_vorname"] = $data["vorname"]; 
//wenn login ok -  testweise aufs impressum linken
  header ("Location: index.php?section=impressum"); 
} 
else 
{ 
  header ("Location: index.php?section=login"); 
} 
?>
</div></td>
</tr></table>

menu.php:


Code:
<br><br><br>

<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  <tr>
    <td bordercolor="#000000" bgcolor="#3399CC"><div align="center">:: MEN&Uuml; :: </div></td>
  </tr></table><br>
<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
    <td width="30%" bordercolor="#000000"><div align="center"><a href="index.php?section=">Start</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=shop">Shop</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=contact">Kontakt</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=impressum">Impressum</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=store">Warenkorb</a></div></td>
  </tr>
</table><br><br>

<?php

if (!isset ($_SESSION["user_id"])) 
{ 
 include "user.php";

}else{
include "no_user.php";
}
?>
<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  <tr>
    <td bordercolor="#000000" bgcolor="#3399CC"><div align="center">:: Werbung/Partner :: </div></td>
  </tr></table><br>
  <table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
    <td width="30%" bordercolor="#000000"><div align="center"><a href="index.php">Platzhalter</a></div></td>
  </tr></table>

logout.php:
Code:
<?
ob_start (); 

session_start ();
session_unset (); 
session_destroy ($_SESSION["user_id"]); 

header ("Location: index.php");
ob_end_flush ();
?>
 
Bei deiner menu.php schau mal die folgende Zeile an:

PHP:
if (!isset ($_SESSION["user_id"]))

Sollte bestimmt ohne >!< (Ausrufezeichen) sein, oder?

Des weiteren hab' ich so beim Überfliegen gesehen, dass in keiner Datei als erstes "session_start()" vorkommt. Dies muss imho immer an erster Stelle einer Datei stehen, sobald du Session-Variablen benutzen willst.

mfG,
MAN
 
Also die logout funktion scheit zu funktionieren. die session_start hat ich raus genomm weil er mir immer wiede rgesagt hatte als fehler: Session already started, oder so. Kommt nun aber nicht mehr vor. Die login datei scheint noch fehlerhaft zu sein, da er nicht einlogged und zur entsprechenden funktion weiterleitet
 
Dann schreib mal bitte mit [ PHP]-Tags deine aktuelle Login.php hin, was genau noch das Problem ist (wann tritt wo was auf) und was du dieser Datei übergibst (eventuell noch das Login-Formular dranheften).

Denn im Code von dir oben finde ich irgendwie kein so rechten Fehler :rolleyes:
 
okay hier sind alle meiner meinung nac hwichtigen dateien:
1x logged_in.php (dort wrden die dinge aus dem forumlar hingesendet und ausgewertet)
1x loggin.php (hier liegt das forumlar)
1x menu.php (wenn ein user eingelogged ist, soll ein entsprechender menü eintrag hinzugefügt werden)
1x logout.php (logisch,oder!?)
FEHLERMELDUNGEN: KEINE - der user kann sich nur nicht einloggen und wird halt wieder auf die loggin.php weitergeleitet, so wie ich es auch deklariert hatte in der logged_in.php. Also kurz: man kann sich ncht einloggenDANKE IM VORRAUS


login.php (das formular)

PHP:
<?php
echo "<br><br><br>";

?>
<html>

<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#3399CC"><div align="left">::Login</div></td>
</tr>
</table><br>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#FFFFFF"><div align="center">
  <p>Um sich in das Kundencenter einzuloggen m&uuml;ssen sie die folgenden Felder ausf&uuml;llen:</p>
  <form name="form1" method="post" action="logged_in.php">
    <table width="350" border="0">
      <tr>
        <td width="133"><div align="left">Username&nbsp;&nbsp;&nbsp;&nbsp;</div></td>
        <td width="5">:</td>
        <td width="151"><input name="user" type="text" id="user2"></td>
      </tr>
      <tr>
        <td><div align="left">Passwort&nbsp;</div></td>
        <td>:</td>
        <td><input name="pwd" type="password" id="pwd" maxlength="8"></td>
      </tr>
    </table>
    <p>
      <input type="submit" name="Submit" value="Senden">
      <input type="reset" name="Submit2" value="Zurücksetzen">
</p>
  </form>
  <p>&nbsp; </p>
</div></td>
</tr>
</table>

logged_in.php(daten werden ausgewertet):
PHP:
<?php
echo "<br><br><br>";

?>

<html>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#3399CC"><div align="left">::Startseite</div></td>
</tr>
</table><br>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#FFFFFF"><div align="center">
<?
session_start();
 $sql = "SELECT ". 
    "id, username, nachname, vorname ". 
  "FROM ". 
    "customers ". 
  "WHERE ". 
    "(username like '".$_REQUEST["user"]."') AND ". 
    "(kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$result = mysql_query ($sql); 

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["username"]; 
  $_SESSION["user_nachname"] = $data["nachname"]; 
  $_SESSION["user_vorname"] = $data["vorname"]; 

  header ("Location: index.php?section=impressum"); 
} 
else 
{ 
  header ("Location: index.php?section=login"); 
} 
?>
</div></td>
</tr></table>

menu.php:
PHP:
<br><br><br>

<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  <tr>
    <td bordercolor="#000000" bgcolor="#3399CC"><div align="center">:: MEN&Uuml; :: </div></td>
  </tr></table><br>
<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
    <td width="30%" bordercolor="#000000"><div align="center"><a href="index.php?section=">Start</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=shop">Shop</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=contact">Kontakt</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=impressum">Impressum</a></div></td>
  </tr>
  <tr>
    <td bordercolor="#000000"><div align="center"><a href="index.php?section=store">Warenkorb</a></div></td>
  </tr>
</table><br><br>

<?php
session_start();
if (isset ($_SESSION["user_id"])) 
{ 
 include "user.php";

}else{
include "no_user.php";
}
?>
<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  <tr>
    <td bordercolor="#000000" bgcolor="#3399CC"><div align="center">:: Shoutbox :: </div></td>
  </tr></table><br>
  <table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
    <td width="30%" bordercolor="#000000"><div align="center">Sagen sie uns ihr Feedback direkt und schnell:</div></td>
  </tr></table><br><br>
<table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
  <tr>
    <td bordercolor="#000000" bgcolor="#3399CC"><div align="center">:: Werbung/Partner :: </div></td>
  </tr></table><br>
  <table width="235" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
    <td width="30%" bordercolor="#000000"><div align="center"><a href="index.php">Platzhalter</a></div></td>
  </tr></table>

logout.php:
PHP:
<?
ob_start (); 

session_start ();
session_unset (); 
session_destroy ($_SESSION["user_id"]); 

header ("Location: index.php");
ob_end_flush ();
?>
 
Ersetze mal folgendes.

Das:

PHP:
$sql = "SELECT ". 
    "id, username, nachname, vorname ". 
  "FROM ". 
    "customers ". 
  "WHERE ". 
    "(username like '".$_REQUEST["user"]."') AND ". 
    "(kennwort = '".md5 ($_REQUEST["pwd"])."')";
Mit dem:

PHP:
$sql = "SELECT `id`, `username`, `nachname`, `vorname` "
      ."FROM   `customers` "
	  ."WHERE  `username`='".$_REQUEST["user"]."' "
	  ."AND    `kennwort`=MD5('".$_REQUEST["pwd"]."')";
Okay... viel verändert (mal abgesehen von der Anordnung) wurde jetzt nicht, außer dass jetzt nicht LIKE benutzt wird. Denn wenn du einen Usernamen mit dem in der Datenbank vergleichen willst, dann machst du einfach einen direkten Vergleich.

Leider kann ich dir wieder nicht sagen, ob das schon die Lösung des Problems ist, denn ich habe es nicht getestet.

Und.... wenn es immer noch nicht gehen sollte, lass dir doch einfach mal an bestimmten Stellen mit echo deine Variableninhalte ausgeben, vielleicht werden die schon an einer bestimmten Stelle nicht übergeben o. Ä....

Oder vielleicht auch dein sesssion_start() GANZ nach oben zu setzen, also auf jeder Seite am obersten Rand:

PHP:
<?php session_start(); ?>
Aber ich weiß nicht, ob es damit was zu tun hat (ich habe es so aufgegriffen, es immer ganz am Anfang der Seite zu schreiben).


Hope that helps!
 
also... ich habs geändert und ein paar sachen aus meinem anderen problem die ich durch MAN gelernt habe. Diese Fehlermeldung habe ich erhalten (unten ist noch mal der Code:

Warning: mysql_query(): Access denied for user: 'root@localhost' (Using password: NO) in /usr/export/www/hosting/ruelingpunks/Wolftec/hp/logged_in.php on line 21

Warning: mysql_query(): A link to the server could not be established in /usr/export/www/hosting/ruelingpunks/Wolftec/hp/logged_in.php on line 21

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/ruelingpunks/Wolftec/hp/logged_in.php on line 23

also momentan hab ich ja nur ein MYSQL problem wie es auschaut.. woran kann es liegen: hier die datei (bitte nicht schimpfen wenn ich alf fortgeschrittener anfänger blöde fehler gemacht hab)

PHP:
<?php
echo "<br><br><br>";

?>

<html>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#3399CC"><div align="left">::Startseite</div></td>
</tr>
</table><br>
<table width="100%" border="1" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
<tr>
<td bordercolor="#000000" bgcolor="#FFFFFF"><div align="center">
<?
session_start();
 $sql = "SELECT `id`, `username`, `nachname`, `vorname` " 
      ."FROM   `customers` " 
      ."WHERE  `username`='".$_REQUEST["user"]."' " 
      ."AND    `kennwort`=MD5('".$_REQUEST["pwd"]."')";
$result = mysql_query ($sql); 

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["username"]; 
  $_SESSION["user_nachname"] = $data["nachname"]; 
  $_SESSION["user_vorname"] = $data["vorname"];

  header ("Location: index.php?section=impressum&sid=".session_id()); 
} 
/*else 
{ 
  header ("Location: index.php?section=login"); 
} */
?>
</div></td>
</tr></table>
 
Klarer Fall: entweder gar kein Datenbank-Connect gemacht, oder du hast die DB-Connect-Daten falsch übergeben.

Die andren beiden Fehler müßten somit Folgefehler sein, weil die mysql_querys keine results zurückgeben können ohne eine Verbindung zur DB.

Wenn ich falsch liege, berichtigt mich ^^
 

Neue Beiträge

Zurück