Loginbereiche...ohne Cookie !

blubber

Erfahrenes Mitglied
Hi,

ich möchte für meine Site einen loginbereich machen, so dass sich jeder user erst registrieren und einloggen muss, um bestimmte bereiche zu sehen.

Wie ich das umsetzte weis ich eigentlich schon, mir gehts hauptsächlich um das WIE speicher ich zugangsdaten der User.

Ich hab mir das so vorgestellt:

In der MySQL Datenbank eine tabelle, "user" oder so, is ja egal, mit 3 spalten (wenn wir den ganzen andern kram ausser id, username und password weglassen). Die ID Spalte ist auf auto_increment, also erhöht selber immer um 1, wenn sich ein neuer user registriert.

nun zu den spalten username und password.
bei der registrierung muss der user sein gewünschten username und password angeben, welche dann zu einer entsprechenden ID in der tabelle angelegt werden.

Also hat ein user mit der z.B. ID 10 den username "kraut" und das password "salat".

Nun muss er sich einloggen. Und da dachte ich mir, dass ich einfach sein username, den er beim einloggen in das Formular ja eingeben muss benutzte, um die Spalte in der Tabelle zu finden, wo das dazugehörige password liegt. Dieses Password lass ich dann mit seiner eingabe vergleichen (im einlog-formular), und wenns passt, hat er zugang. Dass die Zugangsberechtigung solange aufrecht erhalten bleibt, wie er auf der site ist, hätte ich mit einer session gelöst.
Und man muss natürlich realisieren, dass es nicht mehrere gleiche usernamen geben kann.

Nun zu meiner eigentlichen Frage :)

Ist diese Methode "sicher" ?
Wird das allgemein auch so gemacht??

bye
 
Hallo,

zu deiner ersten Frage: NEIN
zu deiner zweiten Frage: NEIN

:D:D:D

Der Lösungsansatz ist gut. Allerdings würde ich dann als fortlaufende ID eine Session ID erzeugen. Das ist viel sicherer. Dazu brauchst nichtmal eine Tabelle. Nimm die Session von PHP4.

Grobmodel:

Vergleiche Daten in deiner mySQL DB mit dennen, die der User eigegegeben hat. Stimmen dieses überein, dann erzeuge eine SessionID. Lege eine Session Variable an inder du die ID des User speicherst. Dann leite auf die eigentliche Admin Seite weiter und übergebe dabei die SessionID.

Jetzt kannst du auf jeder Seite mit der SessionVariable arbeiten.
In einem Tread weiter unten habe ich mal das Session Modell gepostet. Habe gerade gesucht aber finde es nichtmehr.

Also schau mal bitte selber :rolleyes:
CYA
 
....

Hi Fatility,
ersma danke für deinen Tip. Ich hab dann noch in der memberliste auf der site hier nach deinen beiträgen gesucht, die du gepostet hast, konnte aber den Tread über das Session Modell net finden ;(

Weisst du vielleicht noch, wie die Überschrift dieses Treads war?
 
puh..

garnet so einfach als php neuling :)

also gut, ich hab mir den code mal angeschaut und für mich etwas vereinfacht, weil mein server ein paar sachen selber macht (wie z.B. session_name)

dann sieht das hier so aus:

PHP:
// session.php

<?php

session_start();

$s_user = $arr[0];
$s_pass = $arr[1];
session_register("s_user", "s_pass");

?>

<a href="session2.php?<?=SID?>">Weiter</a>

und

PHP:
//session2.php

<?php

// Folgeseiten

session_start();

if (session_is_registered("s_user")) 

{

echo "passt";

// Hier deine Seite
// Am besten per Include immer aufrufen!

}

else 

{
  // Fehlermeldung oder Weiterleitung
}

?>

So, funktioniert ja auch, blos versteh ich net alles :)

bei $s_user = $arr[0];

was ist das $arr[0] ? woher kommt das?

ich hab die ganzen usernamen und dazugehörigen passwörter ja in meiner datenbank. soll ich anstatt $arr[0] den usernamen bzw das password einsetzten oder wie !?

Und ich will ja nicht auf eine neue site, also es soll so sein:

angenommen meine site hat 5 Links. Egal auf welchen Link man klickt, wenn man nicht eingeloggt ist, kommt IMMER nur das einlogfenster (das hab ich gemacht). So, wenn der User nun eingeloggt ist, kann er wieder auf die 5 links klicken, und bekommt zu jedem Link den WAHREN Inhalt angezeigt.

Ich dachte halt, ich häng an jeden Link eine session dran, und wenn username und password passen, dann registrier ich einfach eine beliebige variable, z.B. $dampfnudelauto (das sieht ja keiner),

und bei meiner site mit den 5 links ist eine einfach if abfrage

if($dampfnudelauto)

{
dann zeig die richtigen seiten an
}
 
Code:
$arr[i]


Kann ein beliebiger Wert sein. Von mir aus deine Felder und Werte aus der Datenkbank.

Ich würde das an deiner Stelle so machen:

Wenn sie einer auf deiner Seite befindet und nen Link drück kommt Eingabefenster. Ist er nicht eingeloggt kommt immer login? Richtig soweit?

OK, dann machst beim Login eine sessionID. Speicherst eine Session-Variable die heißt login und wert ist true.

Deine Loginseite sieht dann so aus:
PHP:
$strSQL = "SELECT id, name, pw FROM user WHERE name='$name' AND pw='$pw";
// Variablen kommen aus deinem Formular
$result = mysql_query ( $sql, $conn ); // Conn ist deine Verbindung zur DB

// Wenn daten stimmen dann erzeuge Session und leite auf seite weiter
if ( mysql_num_rows ( $result ) ) {

  $rows = mysql_fetch_array ( $result );

  // Session erzeugen
  session_start();

  $s_login = true;
  $s_userID = $rows[id];
  session_register("s_login", "s_userID");
  // Leitet dich auf eine Seite weiter mit SessionID
  header ( "location: start.php?".session_name()."=".session_id() );

}
else { // Wenn Daten nicht stimmen dann zurück zur Login.php
  header ( "location: login.php" );
}

Dann machst ein kleines Script welches auf jeder Seite ganz oben includest:
PHP:
session_start();

// Pruefen ob login gesetzt
if (session_is_registered("s_login")) {
  include("themaseite.php");

}
else {
  include("loginseite.php");
}

Jo das war alles
*Fingerkühlengeh* :)
 

Neue Beiträge

Zurück