Finde fehler nicht in login.php

  • Themenstarter Themenstarter ByeBye 177919
  • Beginndatum Beginndatum
das Beginn der Session muss vor Ausgabe von HTML oder ähnlichem Krimms kramms passieren. Also setze das

Code:
session_start();

in die erste Zeile - so wie "splasch" es dir geschrieben hat:

Code:
<? session_start() ;?>
<form id="form1" name="form1" method="post" action="index.php?p=login"> 
  <p align="center" class="tdglobal"><span class="b01">Login</span></p> 
  <table width="200" border="0" align="center" class="liteoption"> 
    <tr> 
      <td width="97" class="right"><div align="left">Username:</div></td> 
      <td width="93" class="right"><input name="user" type="text" class="liteoption" id="user" size="15" maxlength="15" /></td> 
    </tr> 
    <tr> 
      <td class="right"><div align="left">Password:</div></td> 
      <td class="right"><input name="pass" type="text" class="liteoption" id="pass" size="15" maxlength="15" /></td> 
    </tr> 
  </table> 
  <p align="center" class="tdglobal"><span class="right"> 
    <input name="submit" type="submit" class="liteoption" id="submit" value="Log In" size="15" maxlength="15" /> 
  </span></p> 
</form> 
<p align="center" class="tdglobal"> 

<?php 
include ("cfg/config.php");  
....

Dann müsste es auch funtionieren
 
Wenn du die Beiträge hier nicht liest kann dir keiner Weiterhelfen!
Zuerst beheb mal den Session Fehler. Der Befehl gehört in die Zeile 1 in der index datei oder von wo auch immer du die Login datein includest.

2. Hab ich Dich aufgefordert den Tabellen inhalt mal zu Post.
3. Wird von dem obigen gepostet script erwarte das die Spalten in der Tabelle user und pass heißen ,ob das der Falls ist weiß ich nicht. Da wir ja deine Tabelle nicht kennen.

Mfg Splasch
 
PHP:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/tomekk/html/mycms/index.php:4) in /home/tomekk/html/mycms/modules/login.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/tomekk/html/mycms/index.php:4) in /home/tomekk/html/mycms/modules/login.php on line 1

und

PHP:
SELECT * FROM `accounts` WHERE name='tomekk' and password='DASPW' Die Benutzerdaten stimmen leider nicht überein!

sagt echo.

Also geht immer noch nicht. Pw sollte md5 verschlüsselt sein.

Hier meine index.php >
PHP:
<?php session_start() ;?>
<form id="form1" name="form1" method="post" action="index.php?p=login">  
  <p align="center" class="tdglobal"><span class="b01">Login</span></p>  
  <table width="200" border="0" align="center" class="liteoption">  
    <tr>  
      <td width="97" class="right"><div align="left">Username:</div></td>  
      <td width="93" class="right"><input name="user" type="text" class="liteoption" id="user" size="15" maxlength="15" /></td>  
    </tr>  
    <tr>  
      <td class="right"><div align="left">Password:</div></td>  
      <td class="right"><input name="pass" type="text" class="liteoption" id="pass" size="15" maxlength="15" /></td>  
    </tr>  
  </table>  
  <p align="center" class="tdglobal"><span class="right">  
    <input name="submit" type="submit" class="liteoption" id="submit" value="Log In" size="15" maxlength="15" />  
  </span></p>  
</form>  
<p align="center" class="tdglobal">  
<?php
ob_start();

include ('./cfg/config.php');

$conn = mysql_connect($dbh, $dbu, $dbp);
$db = mysql_select_db($db);

$query = mysql_query('SELECT * FROM accounts WHERE name="'.mysql_real_escape_string($_POST['user']).'"');
$row = mysql_fetch_array($query);
echo "SELECT * FROM `accounts` WHERE name='".$_POST['user']."' and password='".$_POST['pass']."'"; 
if (isset($_POST['submit'])) {
    if (empty($_POST['user'])) {
        die ('Bitte geben Sie einen Usernamen ein!<br />');
    } else {
        if (empty($_POST['pass'])) {
            die ('Bitte geben Sie ihr Passwort ein!<br />');
        } else {
            if ($_POST['user'] != $row['user'] && md5($_POST['pass']) != $row['pass']) {
                die ('Die Benutzerdaten stimmen leider nicht überein!<br />');
            } else {
                # Session setzen. ggf. anpassen!
                $_SESSION['login'] = TRUE;
                echo ('Logged in.... Klick <a href=./?op=user><strong>hier</strong></a><br />');
            }
        }
    }
}

?>
 
xD immer noch fehler am besten du setzt das session_start(); in der ersten Zeile deiner index.php

dann ist der Fehler ganz sicher behoben und deine Sessions funktionieren auch ;)
 
Wer lesen kann ist klar im Vorteil also noch mal extra für Dich

Deine Index datei
PHP:
<?php session_start()  // Ganz oben danach die restlichen sachen

Deine Login Datei
Dort löscht du das session_start() raus auch das ob_start();

Mfg Splasch
 
@splasch

Sry :) Nutze Squid. Deswegen hab ich die obrigen post mit dem "1, 2, 3" usw nicht gesehen :)

PHP:
3. Wird von dem obigen gepostet script erwarte das die Spalten in der Tabelle user und pass heißen ,ob das der Falls ist weiß ich nicht. Da wir ja deine Tabelle nicht kennen.

Tabelle sieht so aus > Also die tabelle selber heißt accounts, darin sieht es so aus >

Code:
ID    name     password                    admin        active
1      test    "mitMD5gecrypteswp"     0                 1

Wer lesen kann ist klar im Vorteil also noch mal extra für Dich

Deine Index datei
PHP:
<?php session_start()  // Ganz oben danach die restlichen sachen
Deine Login Datei
Dort löscht du das session_start() raus auch das ob_start();

Mfg Splasch
Hab ich getan. Jetzt sind die fehlermeldungen weg :) Aber login geht immer noch nicht >

PHP:
SELECT * FROM `accounts` WHERE name='tomekk' and password='27b14dd934'Die Benutzerdaten stimmen leider nicht überein!
Das PW heißt "giants". Wenn ich tomekk als login und giants als pw nehme, geht es nicht. Deswegen hab ich mir "27b14dd934" aus der datenbank genommen und es direkt eingegeben. Geht auch nicht. Nutze md5.
 
Wenn das alles ist was der MD5 Hash zurück gibt dann kann es nicht funktionieren. Du hast sicherlich eine Länge von 10 Zeichen für dein Passwortfeld angegeben.. Richtig?

Das kann nicht funktionieren. Der erzeugt MD5-Hash hat eine Länge von 32 Zeichen;)

Das heißt verlängere Die max.möglichen Zeichen deines Passwortfeldes auf genau 32


und dann probier es nochmal

Ach und dass passwort musst du noch mal mit der Funktion md5 erzeugen....
 
Versuch mal das
Login Datei
PHP:
<form id="form1" name="form1" method="post" action="index.php?p=login">  
  <p align="center" class="tdglobal"><span class="b01">Login</span></p>  
  <table width="200" border="0" align="center" class="liteoption">  
    <tr>  
      <td width="97" class="right"><div align="left">Username:</div></td>  
      <td width="93" class="right"><input name="user" type="text" class="liteoption" id="user" size="15" maxlength="15" /></td>  
    </tr>  
    <tr>  
      <td class="right"><div align="left">Password:</div></td>  
      <td class="right"><input name="pass" type="text" class="liteoption" id="pass" size="15" maxlength="15" /></td>  
    </tr>  
  </table>  
  <p align="center" class="tdglobal"><span class="right">  
    <input name="submit" type="submit" class="liteoption" id="submit" value="Log In" size="15" maxlength="15" />  
  </span></p>  
</form>  
<p align="center" class="tdglobal">  

<?php  
include ("cfg/config.php");  
if(isset($_POST['submit'])) {  
$U =mysql_real_escape_string($_POST['user']);  
$P =mysql_real_escape_string(md5($_POST['pass']));  
echo "user:".$U."<br>";
echo"pass:".$P."<br>";
$conn = mysql_connect($dbh, $dbu, $dbp); //Verbindung zur Db 
$db = mysql_select_db($db); // Dbname auswählen 

$sql = sprintf("SELECT * FROM `accounts` WHERE name='%s' and password='%s'",($U),($P));  
$query = mysql_query($sql, $conn);  
$count = mysql_num_rows($query);  
while($row = mysql_fetch_assoc($result)) {
	echo $row['name']."<br>";
	echo $row['password']."<br>";
	
}
echo "Test Ausgabe count:".$count;  // Ergebniss am Browser ausgeben 
    if($count == 1){  
        $_SESSION["User"]=$U; // Session Variable erstellen 
        $_SESSION["Pass"]=$P;  
        echo('Logged in.... Klick <a href=?op=user><strong>hier</strong></a>');  
        }  
        else {echo "<strong>Account ist gebannt.</strong>";}  
}  
?>


So Teste mal damit sollte Alles ausgeben werden und wir sehen ob die Daten Übereinstimmen
Mfg Splasch
 
Zuletzt bearbeitet:
@Splasch
PHP:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'tomekk'@'localhost' (using password: NO) in /home/tomekk/html/mycms/modules/login.php on line 22

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/tomekk/html/mycms/modules/login.php on line 22

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'tomekk'@'localhost' (using password: NO) in /home/tomekk/html/mycms/modules/login.php on line 23

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/tomekk/html/mycms/modules/login.php on line 23
user:
pass:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/tomekk/html/mycms/modules/login.php on line 32
Test Ausgabe count:0Account ist gebannt.
 
Sorry mußt mysql_escape_string nehmen statt mysql_real_escape_string
und in der while Schleife hab ich nee falsche variable genohmen hier die korecktur.
while($row = mysql_fetch_assoc($query))

PHP:
<form id="form1" name="form1" method="post" action="index.php?p=login">  
  <p align="center" class="tdglobal"><span class="b01">Login</span></p>  
  <table width="200" border="0" align="center" class="liteoption">  
    <tr>  
      <td width="97" class="right"><div align="left">Username:</div></td>  
      <td width="93" class="right"><input name="user" type="text" class="liteoption" id="user" size="15" maxlength="15" /></td>  
    </tr>  
    <tr>  
      <td class="right"><div align="left">Password:</div></td>  
      <td class="right"><input name="pass" type="text" class="liteoption" id="pass" size="15" maxlength="15" /></td>  
    </tr>  
  </table>  
  <p align="center" class="tdglobal"><span class="right">  
    <input name="submit" type="submit" class="liteoption" id="submit" value="Log In" size="15" maxlength="15" />  
  </span></p>  
</form>  
<p align="center" class="tdglobal">  

<?php  
include ("cfg/config.php");  
if(isset($_POST['submit'])) {  
$U=mysql_escape_string ($_POST['user']);  
$P=mysql_escape_string (md5($_POST['pass']));  
echo "user:".$U."<br>";
echo"pass:".$P."<br>";
$conn = mysql_connect($dbh, $dbu, $dbp); //Verbindung zur Db 
$db = mysql_select_db($db); // Dbname auswählen 

$sql = sprintf("SELECT * FROM `accounts` WHERE name='%s' and password='%s'",($U),($P));  
$query = mysql_query($sql, $conn);  
$count = mysql_num_rows($query);  
while($row = mysql_fetch_assoc($query)) {
	echo $row['name']."<br>";
	echo $row['password']."<br>";
	
}
echo "Test Ausgabe count:".$count;  // Ergebniss am Browser ausgeben 
    if($count == 1){  
        $_SESSION["User"]=$U; // Session Variable erstellen 
        $_SESSION["Pass"]=$P;  
        echo('Logged in.... Klick <a href=?op=user><strong>hier</strong></a>');  
        }  
        else {echo "<strong>Account ist gebannt.</strong>";}  
}  
?>
 
Zuletzt bearbeitet:
Zurück