: register/login/session

Harrier

Erfahrenes Mitglied
sers! also: ich hab schon n bischen gesucht aber so ganz blick ich trotzdem net durch!
bin noch voll die in php, also:

ich hab mir als ziel gesetzt auf meine site eine member's area einzubauen mit automatischer registrierung und log-in! naja! manuell kann ich das schon (also e-mail formular an mich und dann mach ich das pw manuell rein damit man sich einloggen kann) aber geht das net auch automatisch?

ich weis es gibt n tut heir aufm board aber ich versteh die vorraussetzungen die man da braucht schon mal gar net!

die zweite sache (gehört eigtnlich auch da dazu) ist wie das mit dem speichern von benutzerdaten funktioniert
ich hab mir das früher immer ganz einfach vorgestellt: ne textdatenbank mit allen infos ist auf dem server gespeichert und wird bei bedarf abgerufen ... jetzte kommt das mit der session -> ? <- blick ich auch net so ganz

naja! bin für jede hilfe dankbar! //vor allem für eine die ich versteh! einfach nur der code ist zwar auch schon was aber wenigstens ein bischen kommentiert wäre schon net schleht DANKE
 
Zuletzt bearbeitet:
leute kann mir mal einer helfen? ich probier hier rum aber irgendwie führt das alles ins leere! ihr müsst ja net gleich alle fragen beantworten! eine würde ja schon mal reichen (am meisten interessiert mich das wie die infos gespeichert werden)
 
Poste doch mal Code schnipsel wo du Probleme hast!

Und wenn du net verstehst was eine Sesson ist, oder wo die gespeichert wird... lese dir einfach mal die Zahlreichen Threads durch die du findest, wenn du "Sessions" in die Suche tippst!
 
Also Grundprinzip wäre mal folgendes:
- Formular zum Regstrieren
- nach Registrierung werden die Daten schonmal in eine DB (SQL oder Textdatei etc.) gespeichert, dabei wird dann ein Passwort kreiert (gibt dazu bestimmt was auf dem Board, vielleicht mit rand() ...) und dieses dann per mail() an den User gesendet, damit er sich einloggen kann. Das wäre jetzt deine Version. Eine andere bestünde darin, dass der User sein PW selbst bei der Registrierung eingeben kann, die Daten werden nach der REgistrierung wieder ganz normal in der DB gespeichert, aber ein Feld wie z.B. 'account_aktiviert' auf 0 gesetzt. Ein Aktivierungscode wird erzeugt -> Mail an den User. Sobald dieser auf den Link mit dem Code in der eMail geklickt hat wird in der DB bei 'account_aktiviert' eine 1 gesetzt und der User kann sich einloggen.
- Sessions sind für den eigentlich Log-In-Vorgang. Dabei werden z.B. Benutzername (od. ID) und Passwort oder besser: eine Variable wie user_eingeloggt temporär gespeichert (Im Normalfall bis der Benutzer den Browser schließt). Diese steht dann während der ganzen "Sitzung" zur Verfügung und so kann leicht per PHP kontrolliert werden, ob der User noch eingeloggt ist und damit z.B. berechtigt auf bestimmte BEreiche zuzugreifen etc.
Tutorial zu Sessions: http://www.tutorials.de/tutorials9684.html

Wenn du noch Fragen hast, frag ;)
 
@ludz: danke für die umfangreiche antwort! hat mir schon geholfen! ich hab das tutorial mal gemacht ..... alles versteh ich da noch net an den befehlern aber naja! ne frage und n problem:

1. das problem: ich hoffe man kann das an seinen auswirkungen feststellen weil ich keinen plan hab woran das liegt und wohl keum jemand lust hat sich alle quelltexte durchzulesen

bitte hier klicken für das problem!
username: user1
pw: pass1

2.
Unter http://www.c4d-world.de/testphp.php finden Sie eine
PHP-Testseite generiert mit dem Tag phpinfo()

Fuer PHP-Sessions und PHP-Upload muessen Sie dem Verzeichniss
/tmp das Recht CHMOD 777 (rwxrwxrwx) geben.

das schrieibt mir mein webspace-anbieter (oder wei das heisst) hm.... das verzeichniss tmp hab ich gefunden (<< was für eine leistung!) darin befidnet sich eine datei
hm........ testphp.php ab ich auch
aber wie mach ich das mit dem recht? was ist das mit dem recht?


//EDIT: und gleich noch ne frage: in dem tut steht ich soll ne datenbank erstellen -> was soll das für ne dati sein? php, txt, was ganz anderes?
 
Zuletzt bearbeitet:
zu 1.:
Poste bitte mal deinen Quelltext!
Auf Anhieb kann ich nur erkennen, dass du einen Schreibfehler drin hast (such mal nach "mysql_quenery", muss "mysql_query" heißen!).
Desweiteren tippe ich bei der Fehlermeldung darauf, dass du nicht die richtigen Zugangsdaten für deine MySQL-Datenbank bei mysql_connect(...) eingegeben hast...
Mal ne Frage, hast du auf deinem Server überhaupt MySQL?

Zu 2.:
Am besten klickst du in deinem FTP-Programm mit der rechten Maustaste auf das Verzeichnis tmp und dann müsste es da irgendwas mit CHMOD zum Auswählen geben. Dann müsste ein Fenster erscheinen, bei dem du bestimmte Rechte für dieses Verzeichnis einstellen kannst. Für den CHMOD 777 machst du einfach bei allen Auswahlkästen ein Häkchen.
Mehr zu CHMOD: http://www.tutorials.de/tutorials6877.html

Zu der DAtenbank: Eine Datenbank ist z.B. MySQL, sehr weit verbreitet im Internet und relativ leicht zu handhaben. Allerdings ist eine solche DB nicht bei allen Webspace-Anbietern vorhanden, da müsstest du dich mal schlau machen, ob dies bei dir der Fall ist.
So wie ich das sehe bist du ja noch ein relativ blutiger Anfänger was PHP, SQL etc. angeht. Deshalb rate ich dir an dieser Stelle auch erstmal von deinem Vorhaben mit dem Login-Scipt ab. Du solltest dir besser erstmal die Grundlagen aneignen und kleinere Sachen schreiben. Danach kansnt du dich dann auch an sowas wagen... is nur son Vorschlag, allerdings wirst du nicht erwarten können, dass dir hier jmd. alles in Sachen PHP und MySQL beibringt...
 
okay! tippfehler *peinlich*:(

hm..... okay! mysql hab ich! steht dabei!

hm.... chmod gibts da net nur properities, da gibts ne menge zeug zum anklicken (häckchen)

hm....... von php, sql und so check ich noch gar nix, blos n bischen c++(was hier aber nicht viel hilft) und halt html - vielleicht ist wem aufgefallen , dass der threat mit nem doppelpunkt beginnt- das liegt daran, dass noch : davor stehen sollte

was sidn denn solche simplen sachen? also mein erstes- loginsystem war schon recht simpel <- habs auf anhieb hinbekommen, dachte ich baue das einfach auszur übung!
 
AUUUUUU Das tut ja weh!
Leute, helft ihm doch mal!

Also:
Erstens: eine Datenbank ist halt ne Datenbank, brauchst als User keine besonderen Kenntnisse über die engine.
Anhand der Fehlermeldung
Warning: mysql_connect() [function.mysql-connect]: Access denied for user: 'root@localhost' (Using password: NO)
kann man erkennen,dass du bereits eine Datenbank hast, wunderbar.
Nur fragt sich, bei welchen Provider du bist, je nachdem darfst du oder darfst du nicht deine Datenbank nutzen.
Du wirst sicherlich nicht als root in den Datenbankserver einloggen können, aus dem einfachen Grund, dass root der Boss ist und zugriff auf alles und jeden hat, du bist jediglich ein User.

[Falls der Server ein Rechner ist, auf den du lokal oder Remotezugriff hast, kannst du das alles vergessen.]

Jedenfalls brauchst du jetzt deinen Benutzernamen für die Datenbank, den du auf der Providerseite finden kannst, manche Provider fordern auch ein Passwort.
Localhost als Datenbankserver hört sich gut an, einige Provider lagern ihre Datenbanken jedoch auf anderen Servern um die Aus-/Belastung zu verringern, auch beim Provider nachschaun/anfragen.

Zur Datenbank:
Datenbanken sind dazu da, damit der Programmierer(du) nicht in einer Textdatei Arrays zusammenfummeln und wieder sprengen muss,sondern das ganze strukturiert abfragen kann(SQL = Datenbanksprache = Structured Query Language, wenn mich nicht alles täuscht)

Grob sieht das mit der Datenbank folgendermaßen aus (SQL Leutler, schlagt mich,wenns bös falsch ist, ich bin nur ein PHP Kind)

[DATENBANKSERVER - da Läuft die MYSQL Software drauf]
[user1] [user2 - pw2 ]... (*)
Datenbank1,... Datenbank 2....
Tabelle1,2,3... Tabelle4,5,6...
Zeilen mit Daten Zeilen mit Daten



(*)Root hat Zugriff auf all dies.
User können, müssen aber nicht, ein pw haben.
Jeder user hat seine Datenbank(en), die Wiederum Tabellen enthalten, diese Tabellen haben Felder, das sind die Spalten und haben Datensätze, die zeilen
Tabelle User hat die Felder Name, Passwort,ID
Eine Zeile(Datensatz) wäre dann: eLorFin,*el'sPW*,999

Jetzt Hast du vielleicht einige Fragezeichen über'm Kopf
Frage: Wie bekommt man Daten rein
Antwort: SQL

Frage: Wie erstellt man Datenbanken?
A: SQL

F: Wie liest man Daten aus
A: SQL

F:Wie löscht man Daten?
A: SQL

F: SQL?
A: http://free.pages.at/apach/tutde/sql.zip - sollte legal sein, war vor einiger Zeit in der Leseecke, nu is der Link tot.

Das Grundverständnis geben Kapitel 1-9, weiterlesen gibt genug Infos, um im SQL Forum Aushilfe zu geben (Sprich, für einfache PHP Geschichten reichen die ersten 9 Kapitel)



Sessions,...sind was ganz anderes.
Sessions sind "serverseitige Cookies", sprich, sie können eine Variable speichern und den User solange damit identifizieren, bis er den Browser schließt.
Cookies sind empfehlenswerter, sie speichern Daten auf dem Clientrechner, dazu http://www.selfphp.info oder |:suchen:|
 
Zuletzt bearbeitet:
okay! erstmal danke für die antworten! hier bekommt man noch echte hilfe!

also! ich will das log-in net aufgeben sondern wenigstens noch so weit das es so gut funktioniert wie es in dem tutorial steht! auf autom. reg. kann ich vorrübergehend auch verzichten!

hm.... die sql-daten werd ich wohl mit den zugangsdaten bekommen haben.. muss gleich mal nachsehen!

PHP:
<?php session_start ();

$connectionid = mysql_connect ("localhost", "root","");


$sql = "SELECT".
 "Id, Nickname".           //<< muss ich da meine sql-daten angeben?
"FROM ".
  "benutzerdaten ".
"WHERE ".
 "(Nickname like '".$_REQUEST["name"]."') AND ".
 "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";
$result=mysql_query ($sql);

if(mysql_num_rows ($result) > 0)
{
 $data = mysql_fetch_array ($result);

 $_SESSION["user_id"] = $data["Id"];
 $_SESSION["user_nickname"] = $data["Nickname"];
 
 header("Location: user.php");
}

else

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

//EDIT: hm..... ich hab pw user und datenbank! host=localhost


hm.... statt root gebe ich wohl meine id an oder? muss irgendwas in die leeren ""?
in zeile 2

sry! ich check halt noch so gut wie gar nix ab mit inet! hab bisher eigtnlich nur genutzt und net selber was gemacht
 
Zuletzt bearbeitet:
$connectionid = mysql_connect ("localhost", "root","");

Joh, bitte usernamen, eventuell PW angeben.

Dann
mysql_select_db($db_name,$connectionid);
Die meisten Provider geben die die Datenbanknamen vor, ansonsten halt selbst datenbanken erstellen, ob das mit der query "create database $db_name" geht, weiß ich jetzt nicht.

Ansonsten sieht doch alles wunderbar aus.
Ich habe gestern (heut morgen) einen Teil meines Loginscripts hier veröffentlicht, nachdem X-Mal gefragt wurde, musst mal schaun, wo das ist.(Auch im PHP Forum)
 
Zurück