Login Fehler mit Tutorial Script

germanius

Mitglied
Hi
ich hatte das Tutorial leicht abgeändert von den variablen und dateinamen eingebaut, aber wenn ich mich einloggen will, erkennt er die Daten nicht - ungültig.

Hier das geänderte script, denke mir, dass es sinniger ist, über email zu erkennen, die wird kaum doppelt sein und verhindert ein Suchen nach dem usernamen beim Neuregistrieren.
PHP:
<?php 
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen 
include('db_connect.php');
mysql_select_db(db123456) or die(mysql_error());

$sql = "SELECT ". 
    "ID, email, vname, nname ". 
  "FROM ". 
    "adressdaten ". 
  "WHERE ". 
    "(email like '".$_REQUEST["email"]."') AND ". 
    "(passwort = '".md5 ($_REQUEST["passwort"])."')"; 
$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_email"] = $data["email"]; 
  $_SESSION["user_nachname"] = $data["nname"]; 
  $_SESSION["user_vorname"] = $data["vname"]; 

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

hier die loginbox.php
Code:
<?php session_start (); ?> 
<html> 
<head> 
  <title>Login</title> 
</head> 

<body> 
<?php 
if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
<form action="login.php" method="post"> 
  Email: <input type="text" name="email" size="20"><br> 
  Kennwort: <input type="passwort" name="passwort" size="20"><br> 
  <input type="submit" value="Login"> 
</form> 
</body> 
</html>
oder muß man in dem Fall eine speziell Tabelle für die logindaten anlegen. Ich wollte auf die vorhandene zugreifen, wo natürlich noch mehr drinsteht oder muß man das dann anders formulieren ? Eigentlich müßte es doch gehen, aber ;) wohl nicht ganz korrekt so...

Merci 4help

mfg
Germanius
 
habe hier was für dich was dich weiterbringen könnt. habe es mit deinen daten angepasst und läuft bei mir sehr gut.
kopier die dateien einfach und speicher sie unter den richtigen namen ab.

zu deinem anderen abgeänderten script, würde ich sagen das du bei der select anweisung vergessen hast das passwortfeld mit abzufragen...

loginbox.php

PHP:
<?php
session_start();
include("config.inc.php");
include("opendb.inc");
if ( isset( $aktion ) && $aktion == "login" )
    {
    if ( empty( $email ) || empty( $passwort )  )
        $nachricht .= "Sie müssen alle Felder ausfüllen<br>\n";
    elseif ( ! ( $ds = pruefePasswort( $email, $passwort ) ) )
        $nachricht .= "Falsches Passwort, versuchen Sie es nochmal<br>\n";
    if ( $nachricht == "" )
        {include("sechen.inc");
        initSession( $ds[id],$ds[email],$ds[passwort],$ds[nname],$ds[vname]); 
 		header("Location: start.php?".SID); /// deine Zieladresse eintragen
		exit;		
}
    }
?>
<table border="0" cellpadding="0" cellspacing="0" class="content" >
                <form action="<? $php_self ?>" method="post">
                  <input type="hidden" name="aktion" value="login">
                  <input type="hidden" name="<?php echo session_name();?>" value="<?php echo session_id();?>">
                  <tr valign="middle" class="uberschrift2" > 
                    
      <td height="1" align="middle" > 
        <div align="center"> 
                        <p align="center">User - Login </p>
                      </div></td>
                    <td height="1" align="middle" >
<div align="center"></div></td>
                  </tr>
                  <tr class="uberschrift2" > 
                    <td height="1" align="middle" > 
                      <div align="left"> 
                        
          <input name='email' type='text'  id="email" onFocus="this.value='';" value="email" size='20'>
                      </div></td>
                    <td align="middle" valign="middle" >&nbsp;</td>
                  </tr>
                  <tr class="uberschrift2" > 
                    <td height="8" align="middle"> <div align="left"> 
                        
          <input name='passwort' type='password'  id="passwort" onFocus="this.value='';" value="passwort" size='20'>
                      </div></td>
                    <td align="middle" valign="middle" > <div align="center"> 
                        <input name="submit" type="submit" class="content" value="&nbsp;&nbsp; Login &nbsp;&nbsp;">
                      </div></td>
                  </tr>
                </form>
              </table>
              <br>
              <?php
if ( $nachricht != "" )
    {
    print "<font  size=\"3\" class=\"error\"><b>$nachricht</b></font><p>";
    } ?>

config.inc.php

PHP:
<?php
$db_server = "localhost";
$db_name = "test";
$db_user = "root";
$db_pass = "";  
?>

opendb.inc

PHP:
<?php

//Verbindung zur Datenbank herstellen
$link;
$link = mysql_connect($db_server,$db_user,$db_pass);
	if(!$link)
		die ("Keine Verbindung zu MySQL");
	mysql_select_db($db_name,$link)
		or die ("Keine Verbindung zur Datenbank \"$db_name\": ".mysql_error() );



function pruefePasswort( $email, $passwort)

 {
  include("config.inc.php");
 global $link;
    $ergebnis = mysql_query( "SELECT * FROM adressdaten WHERE email='$email' and passwort='$passwort'",$link );
    if ( ! $ergebnis )
        die ( "pruefePasswort fatal error: ".mysql_error() );
    if ( mysql_num_rows( $ergebnis ) )
        return mysql_fetch_array( $ergebnis );
    return false;

	
 }
	
function pruefeBenutzer ($email)
   {
    $ergebnis = mysql_query( "SELECT  *
                FROM adressdaten
                WHERE email='$email'",
                $link );
    if ( ! $ergebnis )
        die ( "pruefeBenutzer fatal error: ".mysql_error() );
    if ( mysql_num_rows( $ergebnis ) )
        return mysql_fetch_array( $ergebnis );
    return false;
    }

?>

sechen.inc.php

PHP:
<?php
session_start();
session_register( "session" );
session_name("Member"); 


function initSession( $id,$vname,$nname,$email)
        {
         global $session;
        $session[id]=$id;
        $session[vname]=$vname;
	    $session[nname]=$nname;
        $session[email]=$email;
        $session[logged_in] = true;

            }

?>
 
den Login führt es aus und dann sehe ich eine leere Seite vor mir. In der URL Zeile steht als Datei dabei nur login.php ohne Session ID dran.
Die Seite, auf die ich leite, wird nicht geladen.

Die Dateinamen sind 1zu 1 übernommen...ebenso der code.

Wenn es bei dir geht, muß es bei mir doch auch gehen ?! seltsam...
Den Login überprüft er auch, wenn ich was falsches eingebe, das alles funktioniert.
Hast du eine Idee ?
 
zeig mir mal was du hier geschrieben hast

PHP:
header("Location: start.php?".SID);

sollte ja eigentlich login.php drin stehen. wenn dem so ist, überprüfe mal den pfad. das muss gehen.

ansonsten häng mal den php code als zip datei an oder schick es mir per mail.

das kriegen wir schon gelöst....
 
ich hatte start.php so stehen. Wenn ich login.php reinschreibe, bleibt der Bildschirm auch leer. Auch keine session oben angezeigt oder meinest du das anders ?
PHP:
  {include("sechen.inc"); 
        initSession( $ds[id],$ds[email],$ds[passwort],$ds[nname],$ds[vname]); 
        header("Location: login.php?".SID); /// deine Zieladresse eintragen 
        exit;
oben steht loginbox.php als dateiname und seite leer...
oder versteh ich da was falsch ?
Oder muß ich hinter das "?" die Datei angeben ?
 
Zurück