Informationen aus einer Datenbank holen

counteract

Erfahrenes Mitglied
Hallo!

Heute habe ich es nun entlich geschafft das Login fertig zu stellen. Nun stoße ich jedoch auf eine weitere Frage:

In meinem Login hab ich bereits 5 Sessionvariablen erstellt (user_id, nickname,nachname, vorname und userart). Nach dem Login soll aber jeder User auf alle seine daten zugreifen können. Diese sollen immer in Formularen auftauchen.

Wie kann man dieses Problem lösen, dass diese daten auch richtig in die Formularfelder gefüllt werden? Muss man dann für jedes Feld in der Datenbank eine Sessionvariable anlegen Oder wie geht dies genau?

Für eine Antwort von euch wäre ich sehr dankbar.

MfG

Counteract
 
Hallo!

Frage die Datenbank an Hand der user_id ab.
Oder ist die user_id eine automatisch vergebene ID?
Dann nimm "nickname".
PHP:
$query = "SELECT * FROM `tabelle` WHERE `nickname`='".mysql_real_escape_string($_SESSION['nickname'])."'";
Gruss Dr Dau
 
Hi!

Nein es ist eine eigens erstellte id!

Wie funktioniert denn das wenn man eine eigene id verwendet? Muss man dann die anderen daten aus der tabelle die noch keine sessionvariable haben auch eine sessionvariable zuweisen?
 
Müssen muss man garnichts..... es kommt halt immer auf den weiteren Verwendungszweck an.
Aber eigentlich langt es wenn nur die user_id in der Session gespeichert wird.
An Hand dieser können dann z.b. Zugriffsrechte bei Bedarf aus der Datenbank abgefragt werden.
Beim Login wir die user_id in der Sessin gespeichert, wenn nun das Formular für den entsprechenden User mit Daten gefüllt werden soll, dann werden diese Daten also mit Bezug auf die user_id aus der Datenbank geholt.
 
Also heißt es das man keine zusätzlichen sessionvariablen anlegen muss oder?


PHP:
$result = mysql_query (SELECT user_id, user_nickname, user_nachname, user_vorname, userrank FROM benutzerdaten WHERE user_id = ?;);
 
$line = mysql_fetch_array ($result, MYSQL_ASSOC);

 echo '<input type="text" name="irgendwas" value="'. $line[<Variablenmame>].'">';

session_register('user_id');

Könnest du mir vielleicht diesen Code einmal erklären? Was kommt denn an die Stelle wo das eine Frage zeichen steht?

Wäre echt nett von dir!
 
Kommt drauf an wann die Abfrage stattfinden soll.
Wenn sich der User bereits erfolgreich eingelogt hat, dann kommt beim Fragezeichen $_SESSION['user_id'] hin.
Hat er jedoch gerade auf den "Login" Button gedrückt, kommt dort z.b. $_POST['user_nickname'] hin.

Im übrigen funktioniert session_register() nicht, wenn register_globals=OFF eingestellt ist.

Es gibt hier zwar auch ein Tutorial für ein Sessionbasiertes Loginsystem, jedoch empfehlen kann ich es nicht wirklich..... ist halt nicht mehr ganz zeitgemäss.
Für einen groben Einstieg sollte es aber langen..... ansonsten findest Du hier auch genug Beiträge die sich mit Logins und/oder Sessions befassen.
 
hi!

also ich bin gerade am rumtüfteln!

Wie kann ich denn diese register_globals=OFF auf on stellen?

Benötige ich denn eigentlich diese session_register() zum eintragen in die formulare? ich hebe gerade ein paar sachen ausprobiert jedoch kommt bei mir immer nur ein leeres Formularfeld wenn ich diese datei aufrufe.

hast du vielleicht icq dann könnten wir ja mal kurz chatten!
 
Ah ich hab gerade entdeckt, dass man dies ja gar nich selber einstellen kann!
Das hängt ja vom provider ab.

Mir ist gerade aufgefallen, dass du mich vielleicht nich richtig verstehst. Ich habe das Login schon völlig fertig. Es geht jetzt nur noch darum die Daten aus der Tabelle in ein Formular zu setzten. Um mehr geht es nicht. dabei hab eich nur ein problem ich weis nicht genau wie dies funktioniert.

So schaut mein Login aus:

PHP:
<?php  
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen  
$connectionid = mysql_connect ("localhost", "", "");  
if (!mysql_select_db ("", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  

$sql = "SELECT ".  
    "Id, Nickname, Nachname, Vorname, Art ".  
  "FROM ".  
    "benutzerdaten ".  
  "WHERE ".  
    "(Nickname like '".$_REQUEST["name"]."') AND ".  
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";  
$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_nickname"] = $data["Nickname"];  
  $_SESSION["user_nachname"] = $data["Nachname"];  
  $_SESSION["user_vorname"] = $data["Vorname"]; 
  $_SESSION["user_art"] = $data["Art"]; 

  if($_SESSION['user_art'] == 1)  
 {  
    header ("Location: test1.php");   
 }  
 elseif( $_SESSION['user_art'] == 2)  
 {  
    header ("Location: test2.php");  
 }  
 else  
 {  
    echo 'Es keine Session namens ' . $_SESSION["userrank"];  
 } 
      
 }   
 else   
 {   
   header ("Location: index.php?fehler=1");   
 }
?>

Dort habe ich ja nun schon die Session variablen erstellt. Jedoch soll man dann auf der nächsten Seite (z.B. test1.php) seine Daten in einem Formular bekommen. Und daran habert es.

Bisher bin ich soweit gekommen:

PHP:
<?php
session_start ();

$sql = "SELECT * FROM `benutzerdaten` WHERE `user_id` = '".$_SESSION['user_id']."'";
$row = mysql_fetch_assoc($result);

echo '<input type="text" name="user_id" value="'.$row['user_id'].'"><br />';

?>

Aber dies funktioniert nicht!

Wie kann man das programmieren das dies klappt? Ein Codebeispiel wäre sehr sehr nett, da ich es sonst nicht verstehe.

MfG

Counteract
 
Vorausgesetzt Du hast Zugriff auf die php.ini.....
Wenn register_globals=OFF eingestellt ist, dann lasse es so.
Wenn regsiter_globals=ON eingestellt ist, dann ändere es ganz schnell.
Denn register_globals=ON bedeutet ein Sicherheitsrisiko..... auch dazu gibt es schon genug Beiträge.

Nein, mit sessin_register() wird lediglich eine Variable in der Session registriert.
Willst Du die user_id in der Session haben, musst Du diese zuvor aus der Datenbank (z.b. beim Login) abfragen.
Anschliessend kannst Du sie mit z.b.
PHP:
$_SESSION['user_id'] = $line['user_id'];
eintragen.
Die Session muss natürlich zuvor gestartet werden.
Nun kannst Du mit $_SESSION['user_id'] auf den Wert der user_id zugreifen.

Ich weiss nicht von was für Formularen Du redest, bzw. was sie bezwecken sollen.
Du solltest aber so wenig wie möglich und auch nur so viel wie nötig in einer Session und/oder Coockie speichern, denn alles was Du dort speicherst, könnte (freiwillig oder auch unfreiwillig) in fremde Hände gelangen.

Ich habe mich zwar vor 6.... 7.... 8 Jahren mal bei ICQ angemeldet, es dann aber nie benutzt (anscheinend war die Zeit nicht reif dazu..... niemand von denen die ich kannte, hatte ICQ).
Frage mich also lieber nicht nach der Nummer..... geschweige denn nach dem Passwort. ^^
Ausserdem hätte die Allgemeinheit nichts davon..... und niemand wüsste ob und wie weit Dir geholfen wurde.
 
Kenne ich Deine Datenbank?
user_id war natürlich nur ein Beispiel.....

Wenn ich es jetzt noch richtig erkennen kann müsste es so heissen:
PHP:
$sql = "SELECT * FROM `benutzerdaten` WHERE `Id` = '".$_SESSION['user_id']."'";
 
Zurück