Login-Script in Seite einbauen

-

$pass und $login ergeben sich durch die Eingaben im Formular.

Mach es am besten so:
Schreibst ein Formular, wo man Login und Passwort eingeben muss. Dann schickst du eine SELECT Abfrage an deine Datenbank.
PHP:
ueberpruefePasswort
{
global $link;
$ergebnis = mysql_query( "SELECT id, login, passwort FROM tabelle WHERE login='$login' and passwort='$passwort'", $link );
if( mysql_num_rows( $ergebnis) )
return mysql_fetch_array( $ergebnis );
return false;
}
Wenn hier keine Fehler aufgetreten sind, also der User alles richtig eingegeben hat, wird die initSession() Funktion aufgerufen, wo wir dann alles in einer Variablen speichern. Die $id ergibt sich aus der Datenbank, wo jedem User eine ID zugeteilt wird.
 
Mein Formular:

PHP:
<?php
echo "<form name=\"form1\" method=\"post\" action="checkuser.php">";
echo "<font size=\"1\">Username:</font>";
echo "<input type=\"text\" name=\"login\">";
echo "<font size=\"1\">Password:</font>";
echo "<input type=\"password\" name\"pass\">";
echo "<input type=\"submit\" name=\"submit\" value\"Login\">
echo "</form>";
?>

Richtig?

Meine checkuser.php:

PHP:
<?php

// erstmal connecten, ne?

function initSession( $id, $login, $pass)
 {
 global $session;
 $session[id] = $id;
 $session[login] = $login;
 $session[passwort] = $pass;
 $session[logged_in] = true;
 }

function ueberpruefeBenutzer()
{
global $session, $logged_in;
$session[logged_in] = false;
$user_ds = auslesenDb( "Tabelle", "id", $session[id] );
if ( ! $user_ds || $user_ds[login] != $session[login] || $user_ds[passwort] != $session[passwort] )
{
include("form.php");
exit;
}
$session[logged_in] = true;
return $user_ds;
}


ueberpruefePasswort
{
global $link;
$ergebnis = mysql_query( "SELECT id, login, passwort FROM tabelle WHERE login='$login' and passwort='$passwort'", $link );
if( mysql_num_rows( $ergebnis) )
return mysql_fetch_array( $ergebnis );
return false;
}
?>

Richtig? Ich hab nämlich echt nicht kapiert, was wohin muss. :confused:

Wie kann ich nun bewirken, dass entweder der Link mit der SID angezeigt wird oder nicht?
Also das ganze als if-Schleife. Damit kann ich nämlich arbeiten. :-)

Bsp.:
PHP:
// vereinfacht:
if ($eingeloggt == true) {
echo "link mit SID";
}
else {
echo "link";
 
Zuletzt bearbeitet:

:D Muss mich erstmal entschuldigen, bin auch ein bisschen durcheinander gekommen.

Also nochmal ganz in Ruhe :)
Zuerst muss eine Session gestartet werden.
PHP:
session_start();
session_register( "session" );
Jetzt kommen die Funktionen, die wir brauchen, damit wir den User überprüfen können.
PHP:
ueberpruefePasswort ()
{
global $link;
$ergebnis = mysql_query( "SELECT id, login, passwort FROM tabelle WHERE login='$login' and passwort='$passwort'", $link );
if( mysql_num_rows( $ergebnis) )
return mysql_fetch_array( $ergebnis );
return false;
}

function initSession( $id, $login, $pass)
 {
 global $session;
 $session[id] = $id;
 $session[login] = $login;
 $session[passwort] = $pass;
 $session[logged_in] = true;
 }
Jetzt kommen wir zum Aufrufen der Funktionen:
PHP:
$bla = ueberpruefePasswort( $form[login], $form[passwort] )
Wenn der User registriert ist und auch alles richtig eingegeben hat, übergeben wir die Informationen, wie id, login und pass an initSession
PHP:
initSession( $bla[id], $bla[login], $bla[passwort] );
header( "Location: woauchimmer.php?".SID );
exit;
Jetzt brauchen wir nur noch das Formular:
PHP:
<form action="<?PHP print $PHP_SELF;?>">
<input type="hidden" name="<?PHP print session_name() ?>" value="<?PHP print session_id() ?>">
Login:<input type="text" name="form[login]" value="<?PHP print $form[login] ?>">
Passwort:<input type="passwort" name="form[passwort]" value="">

Wenn du dann später eine Navigation für eingeloggte User haben willst, dann geht das über dein If - Schleife. Dafür haben wir auch schon in initSession eine Flag definiert.
PHP:
if ($session[logged_in])
{
<a href="blub.php?<?PHP print SID?>">Link</a>
 

Also weiter im Text: :)
Alles was wir eben geschrieben haben, kannst du in eine PHP Datei packen. Er überprüft, ob ein User mit den Angaben in der Datenbank zu finden ist und übergibt das dann in das Session Array. Danach leiten wir den User dann auf die nächste Seite. Dort muss als erstes wieder die Session aufgenommen werden, damit wir den User nicht verlieren. Also wieder:
PHP:
session_start();
session_register( "session" );
An dieser Stelle jetzt brauchen wir das Script von vorhin:
PHP:
function ueberpruefeBenutzer()
{
global $session, $logged_in;
$session[logged_in] = false;
$user_ds = auslesenDb( "Tabelle", "id", $session[id] ); //Die ID aus der Session wird mit der Id aus der Datenbank verglichen.
if ( ! $user_ds || $user_ds[login] != $session[login] || $user_ds[passwort] != $session[passwort] )
{
header( "Location: login.php" );
exit;
}
$session[logged_in] = true;
return $user_ds;
}
Jetzt hast du den User überprüft und er ist eingeloggt. Jetzt kannst du selbst entscheiden, was er so alles machen kann. Aber nicht vergessen - Bei einem Link immer die SID übergeben und bei einem Formular das mit einem versteckten Element machen. Jetzt dürften wir alles haben.
 
*heul*

form.php

PHP:
<form method=\"post\" action="checkuser.php">
<input type="hidden" name="<?PHP print session_name() ?>" value="<?PHP print session_id() ?>">
Login:<input type="text" name="form[login]" value="<?PHP print $form[login] ?>">
Passwort:<input type="passwort" name="form[passwort]" value="">

checkuser.php

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

ueberpruefePasswort ()
{
global $link;
$ergebnis = mysql_query( "SELECT id, login, passwort FROM tabelle WHERE login='$login' and passwort='$passwort'", $link );
if( mysql_num_rows( $ergebnis) )
return mysql_fetch_array( $ergebnis );
return false;
}

function initSession( $id, $login, $pass)
 {
 global $session;
 $session[id] = $id;
 $session[login] = $login;
 $session[passwort] = $pass;
 $session[logged_in] = true;
 }

$checkpw = ueberpruefePasswort( $form[login], $form[passwort] )

initSession( $checkpw[id], $checkpw[login], $checkpw[passwort] );
include("admincenter.php".SID);
exit;
?>

admincenter.php

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

function ueberpruefeBenutzer()
{
global $session, $logged_in;
$session[logged_in] = false;
$user_ds = auslesenDb( "Tabelle", "id", $session[id] ); //Die ID aus der Session wird mit der Id aus der Datenbank verglichen.
if ( ! $user_ds || $user_ds[login] != $session[login] || $user_ds[passwort] != $session[passwort] )
{
echo "You are not logged in!";
include ("form.php");
exit;
}
$session[logged_in] = true;
return $user_ds;
}
echo "Inhalt wenn alles klar ist...";
?>

Nun meine Frage noch mal: Woher bekommt er die SID? Ist das eine standardmäßige PHP-Variable?
 
Zurück