Login-Script in Seite einbauen

Sebastian Wramba

Erfahrenes Mitglied
Ich hab nun folgende Dateien:
form.php (die Eingabefelder)

PHP:
<?
echo "<form name=\"form1\" method=\"post\" action="validate.php">";
echo "<font size=\"1\">Username:</font>";
echo "<input type=\"text\" name=\"username\">";
echo "<font size=\"1\">Password:</font>";
echo "<input type=\"password\" name\"pass\">";
echo "<input type=\"submit\" name=\"submit\" value\"Login\">";
echo "</form>";
?>
Nich schwer zu kapieren, oda? :)

validate.php (überprüft ob User vorhanden ist):

PHP:
<?php
require("admin/connect.php")

$validate = SELECT username,pass FROM docs_admin;
mysql_query($validate);

while ($row = mysql_fetch_array($validate)) 
{
$dbusername = $row['username'];
$dbpassword = $row['pass']
   }

// Session starten
session_start ();

// Benutzername und Passwort prüfen
if (($username == "$dbusername") && ($pass == "dbpassword")) {
  $isloggedin = true;
echo "You are now logged in.";
echo "User: " . $username . " ";
} else {
  $isloggedin = false;
}

// Variable in der Session registrieren
session_register ("isloggedin");

admincenter.php (Admin-Funktionen):

PHP:
<?php
require("admin/connect.php")


session_start ();

if (session_is_registered ("isloggedin")) {
  if ($isloggedin) {
echo "Welcome to the Admin Center of DOCS, " . $username . " ";
echo "<br>"
echo "Folgende Funktionen stehen zur Verfügung:";
echo "<br>"
echo "<a href=\"news/newsadmin.php3\">News schreiben</a>";
echo "<a href=\"members/admin.php3\"> Members bearbeiten</a>";
echo "<br>";
echo "<b>Warplaner</b>";
echo "<br>";
echo "<a href=\"wars.php3?&admin=add\"> Eintrag hinzufügen</a><br>";
echo "<a href=\"wars.php3?&admin=del\"> Eintrag löschen</a><br>";
echo "<a href=\"wars.php3?&admin=edit\"> Eintrag bearbeiten</a><br>";
echo "<a href=\"wars.php3?&admin=pic\"> Bilder uploaden</a><br>";

  } else {
    echo "You have not the permission to view this site!"
  }
} else {
  "You have not the permission to view this site!"
}
?>

Wie kann ich nun folgendes hinbekommen:

In einer Tabellenspalte befindet sich die form.php

Wenn man auf Login klickt, soll die validate.php an der gleichen Stelle ausgeführt werden.

Wie bleibt die session erhalten, wenn man auf andere Seiten geht?
(in der ja die Tabellenspalte mit der form.php jedesmal steht).
 
Zuletzt bearbeitet:
Was ist denn nun mit den Scripts? Was willst du wissen? Steht ja keine Frage da!

Ich seh auf den ersten Blick so einige Fehler mit dem ". Du hast öfter mal ein \ vergessen.

Dann ist deine Suche in der Datenbank recht uneffektiv. Wäre es nicht besser die SQL-Anweisung so zu gestalten?:

SELECT * FROM tabelle WHERE name='$name' AND pwd='$pwd'
 
Was ist denn nun mit den Scripts? Was willst du wissen? Steht ja keine Frage da!

Ich weiß, ich hab meine Frage vergessen, hab schon editiert.

Ich seh auf den ersten Blick so einige Fehler mit dem ". Du hast öfter mal ein \ vergessen.

Das änder ich noch. Erstmal zu der Funktion.

Dann ist deine Suche in der Datenbank recht uneffektiv. Wäre es nicht besser die SQL-Anweisung so zu gestalten?:

Code:
SELECT * FROM tabelle WHERE name='$name' AND pwd='$pwd'


Wie findet er dann heraus, ob es den Namen gibt oder nicht?
 
Wenn der Name und das dazugehörige Passwort in der Datenbank vorhanden ist, wird mindestens ein Datensatz zurückgegeben. Wenn nicht, dann wird nichts zurückgegeben.

Du kannst die Anzahl der Datensätze mit mysql_num_rows($result); herausfinden.
 
Wie kann ich nun folgendes hinbekommen:

In einer Tabellenspalte befindet sich die form.php

Wenn man auf Login klickt, soll die validate.php an der gleichen Stelle ausgeführt werden.

Wie bleibt die session erhalten, wenn man auf andere Seiten geht?
(in der ja die Tabellenspalte mit der form.php jedesmal steht).

Wenn ich mich nicht täusche musst du den Session-Name und die Session-ID immer mit übergeben, ob nun Link oder Formular.
 
-

Original geschrieben von -=[KfD]Gouraud=-
Wie denn genau?
Wenn du die SID per Formular weitergeben willst, machst du das Ganze mit einem versteckten Element. Das baust du dann einfach in dein Formular mit ein
PHP:
<input type="hidden" name="<?PHP print session_name() ?>"
value="<?PHP print session_id() ?>">

Wenn du die SID per Link weitergeben willst, machst du das sö:
PHP:
<a href="blabla.php?<?PHP print SID ?>">Linkname</a>

Zu Beachten ist natürlich, dass du vorher eine Session gestartet hast.


best regards

TimeFlash
 
fast schon peinliche Verständnisfrage(n)

Aha.
Dann muss ich also ein völlig neues Menü schreiben. Das ganze dann mit if-Abfragen. Und Cookies lass ich besser gleich bleiben. :) ;)

PHP:
if (session_is_registered ("isloggedin")) {
  if ($isloggedin) {
echo "<a href=\"blabla.php? " . $SID . " \">Go to Blabla</a>";
}
else {
echo "<a href=\"blabla.php\">Go to Blabla</a>";
}

So wie wird jetzt die Variable SID festgelegt.
Und so wie ich das mitbekommen habe, muss auf jeder xxxx.php3 nun session_start(); stehen, oder?
 
-

Original geschrieben von -=[KfD]Gouraud=-

So wie wird jetzt die Variable SID festgelegt.
Und so wie ich das mitbekommen habe, muss auf jeder xxxx.php3 nun session_start(); stehen, oder?
PHP:
session_start();
session_register( "session" );
Den oberen Quelltext würde ich in einer Bibliothek speichern und auf jeder Seite includen oder du schreibst ihn immer wieder hin.
PHP:
function initSession( $id, $login, $pass)
 {
 global $session;
 $session[id] = $id;
 $session[login] = $login;
 $session[passwort] = $pass;
 $session[logged_in] = true;
 }
Wenn du diese ganzen Daten in einem Array speicherst, kannst du auf jeder neuen Seite die Berechtigung überprüfen.
PHP:
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] )
{
header( "Location: login.php" );
exit;
}
$session[logged_in] = true;
return $user_ds;
}
Das gute an dieser Funktion ist, dass du 1. die Überprüfung durchgeführt hast und zweitens Benutzerdaten in dem Array $user_ds zurückgibst, mit denen du auf der Seite noch arbeiten kannst.
 
Hä???

PHP:
session_start();
session_register( "admin" );

Kapiert.

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

Nicht ganz kapiert. Wo werden müssen die Variablen namens id, login und pass festgelegt werden?

PHP:
function ueberpruefeBenutzer()
{
global $session, $logged_in;
$session[logged_in] = false;
$user_ds = auslesenDb( "Tabelle", "id", $session[id] ); // wo kommt die id her?
if ( ! $user_ds || $user_ds[login] != $session[login] || $user_ds[passwort] != $session[passwort] )
{
header( "Location: login.php" ); // natürlich kann ich da ja auch wieder das Formular-Einblenden lassen, ne?
exit;
}
$session[logged_in] = true;
return $user_ds; // was is das?
}

Fragen, siehe oragene Kommentare. :D
 

Neue Beiträge

Zurück