Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

1

04.10.2011, 15:54

Login - Tutorial

Besonders PHP & MYSQL Anfänger haben meistens Schwierigkeiten, ein Login-Script zu schreiben.
Deßhalb habe ich dieses Tutorial erstellt. Ich werde immer mal ergänzen.

Dateien

Als erstes erstellen wir 2 Dateien: index.php (oder meinetwegen auch testseite.php) zum testen und die user.php.
Die index.php ist wie gesagt mehr zum testen, in der user.php wird unsere Klasse User sein, die einige Funktionen wie Login, ... enthält, womit das ganze Objectorientiert ist. Ich habe mich dafür entschieden, weil man so gleich einige Daten in der Klasse speichern kann und sie leicht erweiterbar ist.

user.php:

PHP-Quelltext

1
2
3
4
5
6
7
<?php

class User {
//Funktionen
}

?>


Mit class definieren wir eine Klasse. In dem fall heißt sie User.

Als nächstes legen wir erst einmal die MYSQL-Tabelle an.
Sie sieht so aus:

MySQL-Abfrage(n)

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `benutzer` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(800) NOT NULL,
  `passwort` varchar(800) NOT NULL,
  `gesperrt` varchar(10) NOT NULL DEFAULT 'nein',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 ;


Wie man mit diesem MYSQL-Code eine Tabelle erstellt, steht hier: SQL Wie erstelle ich eine MYSQL-Tabelle?.

So nun erstellen wir die Methode login, mit deren Hilfe man sich einloggt und isLogin, die true oder false zurück gibt, in der Klasse User.
Die Datei user.php sieht jetzt so aus:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
class User {

$userid 0;
$username "";
$mysql_host "localhost";
$mysql_benutzername "root";
$mysql_passwort "MYSQL-Passwort";
$mysql_datenbank "Datenbank";

public function login ($username$passwort) {
//Code
}

public function isLogin () {
//Gibt true zurück, wenn User eingeloggt ist ansonsten false.
}

}
 
 ?>


Oben habe ich mehrere Variablen erstellt, dazu später.

Die Funktion login:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public function login ($username$passwort) {
//Funktion zum einloggen
//Übergeben werden muss der Benutzername und das Passwort, was der user angibt.

$db_link mysql_connect($mysql_host$mysql_benutzername$mysql_passwort) or die("Es konnte keine verbindung zur MYSQL-Datenbank hergestellt werden.");

mysql_select_db($mysql_datenbank$db_link) or die("Die Datenbank konnte nicht ausgew&auml;hlt werden.");

$sql "SELECT * FROM `benutzer` WHERE `name` = '" mysql_real_escape_string(trim($username)) . "'; ";

$db_erg mysql_query($sql) or die("Anfrage fehlgeschlagen.");

$zeile mysql_fetch_array($db_ergMYSQL_ASSOC);

if (empty($zeile) == TRUE || !isset($zeile)) {
        echo "Der Benutzer ist nicht in der Datenbank vorhanden"//Nochmals danke an Niklas319 für den Tipp!
} else {

if ($zeile['passwort'] == md5($passwort)) {

  if ($zeile['gesperrt'] == "nein") {

    //Der User wurde erfolgreich eingeloggt.
    $this->$userid $zeile['id'];
    $this->$username $zeile['name'];
    $_SESSION['eingeloggt'] = true;
    $_SESSION['id'] = $zeile['id'];
    $_SESSION['User'] = $zeile['name'];

    echo "Sie haben sich erfolgreich eingeloggt.";

  } else {
    echo "Ihr Benutzername wurde gesperrt.";
  }

} else {
    echo "Sie haben ein falsches Passwort angegeben.";
}

}

}


So, mit $db_link = mysql_connect($mysql_host, $mysql_benutzername, $mysql_passwort) or die("Es konnte keine verbindung zur MYSQL-Datenbank hergestellt werden."); wird eine Verbindung zur MYSQL-Datenbank erstellt.

Mit mysql_select_db($mysql_datenbank, $db_link) or die("Die Datenbank konnte nicht ausgew&auml;hlt werden."); wählen wir die MYSQL-Datenbank aus.

$db_erg = mysql_query($sql) or die("Anfrage fehlgeschlagen.");
"schickt" die Befehle an MYSQL.

$zeile = mysql_fetch_array($db_erg, MYSQL_ASSOC); "macht" aus dem Ergebnis ein Array.
Das Array kann man ansprechen mit $zeile['spaltenname'].

Mit if ($zeile['passwort'] == md5($passwort)) überprüfen wir, ob das angegebene Passwort mit dem in der MYSQL-Tabelle übereinstimmt.

if ($zeile['gesperrt'] == "nein") überprüft, ob der Benutzername gesperrt ist.

Die Daten werden in SESSIONS gespeichert.

Hinweis: Die Funktion md5(String string) macht aus einem String den MD5-Wert, also verschlüsselt ihn.

So, jetzt zur Funktion isLogin. Diese gibt true zurück, wenn der user eingeloggt ist, ansonsten false.

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
public function isLogin () {

if (isset($_SESSION['eingeloggt']) && $_SESSION['eingeloggt'] == TRUE && empty($_SESSION['id']) != TRUE) {
    //Der User ist eingeloggt.
    return true;
} else {
    //Der User ist nicht eingeloggt.
    return false;
}

}


Sollte eig. klar sein, bei Fragen bitte melden! (als Kommentar oder per PN)

Was fehlt uns nun noch?
Natürlich die Logout-Funtion und einige Hilfsfunktionen! :D

Die Funktion Logout:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function Logout () {
    //Logt den user aus
    unset($_SESSION); //Alle SESSIONs werden gelöscht.
}

public function getUsername () {
    //Gibt den username zurück

    if (isLogin() == TRUE) {
            return $_SESSION['User'];
    } else {
            return false//Der User ist gar nicht eingeloggt.
    }
}


Eig. ist die user.php fast fertig. :D
Das ganze muss natürlich auch getestet werden.

Hier nochmal die ganze user.php:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
 
class User {

$userid 0;
$username "";
$mysql_host "localhost";
$mysql_benutzername "root";
$mysql_passwort "MYSQL-Passwort";
$mysql_datenbank "Datenbank";

public function login ($username$passwort) {
//Funktion zum einloggen
//Übergeben werden muss der Benutzername und das Passwort, was der user angibt.

$db_link  mysql_connect($mysql_host$mysql_benutzername$mysql_passwort) or  die("Es konnte keine verbindung zur MYSQL-Datenbank hergestellt  werden.");

mysql_select_db($mysql_datenbank$db_link) or die("Die Datenbank konnte nicht ausgew&auml;hlt werden.");

$sql "SELECT * FROM `benutzer` WHERE `name` = '" mysql_real_escape_string(trim($username)) . "'; ";

$db_erg mysql_query($sql) or die("Anfrage fehlgeschlagen.");

$zeile mysql_fetch_array($db_ergMYSQL_ASSOC);

if ($zeile['passwort'] == md5($passwort)) {

  if ($zeile['gesperrt'] == "nein") {

    //Der User wurde erfolgreich eingeloggt.
    $this->$userid $zeile['id'];
    $this->$username $zeile['name'];
    $_SESSION['eingeloggt'] = true;
    $_SESSION['id'] = $zeile['id'];
    $_SESSION['User'] = $zeile['name'];

    echo "Sie haben sich erfolgreich eingeloggt.";

  } else {
    echo "Ihr Benutzername wurde gesperrt.";
  }

} else {
    echo "Sie haben ein falsches Passwort angegeben.";
}

}

public function isLogin () {

if (isset($_SESSION['eingeloggt']) && $_SESSION['eingeloggt'] == TRUE && empty($_SESSION['id']) != TRUE) {
    //Der User ist eingeloggt.
    return true;
} else {
    //Der User ist nicht eingeloggt.
    return false;
}

}

public function Logout () {
    //Logt den user aus
    unset($_SESSION); //Alle SESSIONs werden gelöscht.
}

public function getUsername () {
    //Gibt den username zurück

    if (isLogin() == TRUE) {
            return $_SESSION['User'];
    } else {
            return false//Der User ist gar nicht eingeloggt.
    }
}

}
 
 ?>


Um das ganze zu testen, erstellen wir die index.php:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<html>
<head>
<title>Login-Test ;-)</title>
</head>
<body>

<?php

require("user.php");

$user = new User();

if (isset($_POST['Absenden']) && $_POST['Absenden'] == "Login") {
    //Einloggen
    $fehler 0;

    if (empty($_POST['benutzername']) == TRUE) {
            echo "Sie haben keinen Benutzernamen angegeben.";
            $fehler 1;
    } else {
            $benutzername mysql_real_escape_string(trim($_POST['benutzername']));
    }

    if (empty($_POST['passwort']) == TRUE) {
            echo "Sie haben kein Passwort angegeben.";
            $fehler 1;
    } else {
            $passwort mysql_real_escape_string(trim($_POST['passwort']));
    }

    if ($fehler == 0) {
    $user->login($benutzername$passwort);
    }
}

if ($user->isLogin() == FALSE) {

?>

<form action="index.php" method="post">
Benutzername: <input type="text" name="benutzername" />
Passwort: <input type="password" name="passwort" />
<input type="submit" name="Absenden" value="Login" />
</form>

<?php

    } else {
            echo "Herzlich Willkommen " $user->getUsername();
    }

?>

</body>
</html>


Achtung: Da das hier ein PHP-Tutorial ist, ist HTML nicht wirklich korrekt, z.B. fehlt der DOCTYPE, ... Das baue ich hier nicht alles rein.

Damit wäre das Tutorial erst einmal fertig. ;)
Wenn ihr Fragen habt, schreibt sie bitte!

Wenn ihr das ganze verstanden habt, sollte es eig. auch leicht erweiterbar sein.
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

Dieser Beitrag wurde bereits 14 mal editiert, zuletzt von »JuKu« (04.10.2011, 18:26)


niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

2

04.10.2011, 16:23

`name` varchar(800) NOT NULL, `passwort` varchar(800) NOT NULL, `gesperrt` varchar(10) NOT NULL DEFAULT 'nein',

Wieso name varchar(800)
Niemand wird 800 Zeichen für einen Namen brauchen

Wieso passwort varchar(800)
Ich denke mal du verschlüsselst es und da braucht man glaube ich 32 bei md5 und 40 bei sha1, bin mir aber nicht sicher!

Wieso gesperrt varchar(10)
Nimm doch einfach ein Int 0 = gesperrt, 1 = aktiv, 2 = logged, sprich er muss sich noch freischalten^^

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

3

04.10.2011, 16:54

"Wieso gesperrt varchar(10)
Nimm doch einfach ein Int 0 = gesperrt, 1 = aktiv, 2 = logged, sprich er muss sich noch freischalten^^"

Da hast du Recht, das ganze ist aber für Anfänger zu kompliziert, wenn man 1 statt meinetwegen "nicht gesperrt", ... schreibt und ich möchte das ganze auch für Anfänger sehr verständlich machen.

Wieso name varchar(800)
Niemand wird 800 Zeichen für einen Namen brauchen

Wieso passwort varchar(800)

Ich denke mal du verschlüsselst es und da braucht man glaube ich 32 bei md5 und 40 bei sha1, bin mir aber nicht sicher!


Ja, das kann man noch ändern. ;-)
danke für den Tipp!
hat sonst noch irgendjemand jetzt schon Kritik? ;-)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

4

04.10.2011, 17:00

PHP-Quelltext

1
2
3
class User {
//Funktionen
}


Ich würde es so schreiben:

PHP-Quelltext

1
2
3
4
class User
{
     // Funktionen
}


Sieht besser aus ;)
Und ist übersichtlicher

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

5

04.10.2011, 17:06

Da hast du Recht, ich habe es auch versucht, aber der Editor nimmt keinen Tabulator.
Wie machst du das?
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

6

04.10.2011, 17:08

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
<?php   
class User {  
$userid 0$username "";  
function login ($username$passwort) { 
//Code 
}  
function isLogin () { 
//Gibt true zurück, wenn User eingeloggt ist ansonsten false. 
}  
}    
?>


Nicht dein Ernst oder?
Von public, protected und private noch nichts gehört?

Außerdem würde ich wenn man nur in der Login Funktion die parameter user_id und user_name nutzt die Funktion login so machen:

PHP-Quelltext

1
2
3
4
5
6
7
<?php

function login($user_name ""$user_id=0)
{
     //Code
}
?>


Was ich auch nicht verstehe wieso die User_id 0 sein muss.

EDIT: Ja auch gemerkt, durch Leertasten, aber wenn er keiner nimmt dann muss ich halt damit leben :(

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

7

04.10.2011, 17:12

Na klar!
Aber so schnell wie du bi ich nicht. ;-)
ich muss erst einaml genau überlegen, wie ich das am besten mache.
public, private, ... kommt später, da ich das ganze auch noch erklären möchte.
Zuerst einmal so. ;-)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

8

04.10.2011, 17:13

Dann schreibe das fertige Produkt hin und nicht jede 30min ein Update, das sorgt nur für Verwirrung.

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

psycho (14.07.2012)

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

9

04.10.2011, 17:14

Außerdem würde ich wenn man nur in der Login Funktion die parameter user_id und user_name nutzt die Funktion login so machen:

PHP-Quelltext

1
2
3
4
5
function login($user_name ""$user_id=0)
{
     //Code
}
?>


Was ich auch nicht verstehe wieso die User_id 0 sein muss.

Zur initalisierung erst einmal. Dazu später.

EDIT: Ja auch gemerkt, durch Leertasten, aber wenn er keiner nimmt dann muss ich halt damit leben :(
Sorry, aber jetzt verstehe ich dich nicht wirklich. Wer weiß schon seine UserId? Das mit der Funktion ist schon richtig. ;)
Lass mich erst mal machen. ;)
Dann schreibe das fertige Produkt hin und nicht jede 30min ein Update, das sorgt nur für Verwirrung.

Sorry, Aber ich schreibe nach und nach.
Das "Endprodukt" ist noch nicht fertig.
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

10

04.10.2011, 17:18

Du bist mir einer ...

PHP-Quelltext

1
class User {  $userid 0$username "";


Da setzt du die userid auf 0. Wozu? Ich habe sie nur in der Funktion auf 0 gesetzt, spart Ressourcen, da man 2 Variablen sparrt.
Ob das Sinn macht habe ich nicht gesagt.^^

Was haben um himmels willen die MySQL Daten in einer User Klasse zu stehen? Die kommen in eine Mysql oder Datenbank Klasse!!!!

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

11

04.10.2011, 17:30

Du bist mir einer ...

PHP-Quelltext

1
class User {  $userid 0$username "";


Da setzt du die userid auf 0. Wozu? Ich habe sie nur in der Funktion auf 0 gesetzt, spart Ressourcen, da man 2 Variablen sparrt.
Ob das Sinn macht habe ich nicht gesagt.^^

Was haben um himmels willen die MySQL Daten in einer User Klasse zu stehen? Die kommen in eine Mysql oder Datenbank Klasse!!!!

Jep, aber das ist nur ein Tutorial und wenn ich das alles auch noch machen würde, würde das ganze den Rahmen sprengen.
Deßhalb habe ich die MYSQL-Daten erst einmal in die Datei selbst geschrieben. ich sage dann noch etwas dazu.
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

Simon

Profi

Beiträge: 725

Registrierungsdatum: 14.06.2011

Danksagungen: 210

  • Private Nachricht senden

12

04.10.2011, 17:42

Also ich muss JuKu hier mal verteidigen.

Ich finde es für Anfänger gut, dass er nicht alles auf einmal erklärt.

Wenn man einem MVC erklärt, kommt man ihm ja schließlich auch nicht damit, ein großes Framework ala Zend mit 500 Helpern selber zu programmieren.

JuKu

Profi

  • »JuKu« ist der Autor dieses Themas

Beiträge: 574

Registrierungsdatum: 29.09.2011

Danksagungen: 48

  • Private Nachricht senden

13

04.10.2011, 18:11

@Simon: Danke! ;)

Jetzt könnt ihr Kritik schreiben. ;)
Wenn euch mein Beitrag weitergeholfen hat, drückt auf "Bedanken"!
Danke! :D

DanielBocksteger

unregistriert

14

04.10.2011, 18:15

Verteidigung | Daniel becomes Anwalt xDD

Hallo allerseits,

Ich sehe das nicht anders als Simon, ich denke auch vorallem für Anfänger ist es gut Stück für Stück an das Thema herangeführt zu werden und vorallem auch nicht alles auf einmal lesen zu müssen. So können sie sich während des update Intervals besonders auf den gerade beschriebenen Teil konzenrien.

Von meiner Seite aus ein großes Dankeschön an JuKu für das "wiederbeleben" des Forums bezüglich des Inhaltes. VIELEN DANK :) :thumbup: :thumbsup:

PS : Ich bin nun kein Pater mehr, ich bin Anwalt :D

niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

15

04.10.2011, 18:19

Ich würde an Ihrer Stelle noch eine If Abfrage über if ($zeile['passwort'] == md5($passwort)) { machen.

if(mysql_num_rows($query) > 1)
{
dann if zeile passwort bla bla
}
else
{
echo "der benutzer konnte nicht gefunden werden";

Zudem wurde der Benutzer nicht gesperrt, er ist gesperrt, sie setzen den Status ja nicht auf gesperrt!


PHP-Quelltext

1
public function getUsername () {     //Gibt den username zurück      if (isLogin() == TRUE) {             return $_SESSION['User'];     } else {             return false; //Der User ist gar nicht eingeloggt.     } }


Hier würde ich vielleicht noch einen Paramter user_id/userid der Funktion getUsername zuweißen, und als Default die Session user_id zuweißen. Könnte vielleicht ganz hilfreich sein, wenn man das System erweitert.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »niklas319« (04.10.2011, 18:26)


Simon

Profi

Beiträge: 725

Registrierungsdatum: 14.06.2011

Danksagungen: 210

  • Private Nachricht senden

16

04.10.2011, 18:32

Gut, dann gebe ich mal ein Statement ab ;)

Also erstmal natürlich die Bereitsgenannten MySQL Längen.
Für Passwort reicht ein CHAR(32).
Für Username reichen VARCHAR(50) locker.
Und bei Gesperrt reicht wie gesagt ein: "TINYINT(1)"

Und natürlich noch die Bereitsgenannte Benutzung von public, protected und private.

Desweiteren empfehle ich die Englische Sprache für den Code und die Datenbank zu benutzen ;)

Dann bei der login Funktion würde ich die Ausgaben aus der Klasse herausnehmen.
Stattdessen würde ich false oder true zurückgeben.

PHP-Quelltext

1
$_SESSION['eingeloggt'] == TRUE

sowas kannst du einfach abkürzen mit:

PHP-Quelltext

1
$_SESSION['eingeloggt']

und das:

PHP-Quelltext

1
empty($_SESSION['id']) != TRUE

mit

PHP-Quelltext

1
!empty($_SESSION['id'])


Desweiteren wird von den PHP Entwicklern abgeraten, die Session mit unset zulöschen.

Dies geht schöner mit:

PHP-Quelltext

1
2
session_destroy();
session_start();


PHP-Quelltext

1
isLogin() == TRUE

Kannst du auch einfach

PHP-Quelltext

1
$this->isLogin(); 
schreiben.

Desweiteren empfehle ich dir, UTF-8 zu nutzen ;)

Kommen wir zur index.php

PHP-Quelltext

1
require("user.php");

Also erstmal sollte man bei require die Klammern weglassen, da es sich nicht um eine Funktion handelt.

Desweiteren includierst du nur eine Klasse, so dass ein

PHP-Quelltext

1
require_once 'user.php';
hier schöner wäre ;)


Dass einige Punkte möglicherweise aus Gründen der Anfängerfreundlichkeit sind, habe ich hier nicht berücksichtigt, denn ich weiß nicht genau, was nun davon Anfängerfreundlich gemeint und was unbeabsichtigt ist ;)

Ansonsten denke ich, dass es für Anfänger rellativ hilfreich sein könnte.

Simon;)

Edit:
@Niklas:
Es müsste

PHP-Quelltext

1
if(mysql_num_rows($query) >= 1)
heißen ;)

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

JuKu (05.10.2011)

niklas319

Schüler

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

17

04.10.2011, 18:37

^^

Oder einfach > 0, den Variablen Namen hatte ich nicht mehr im Kopf :D

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

18

04.10.2011, 19:51

Warum sind Sachen wie das mysql passort eigentlich member des User-Objekts?!
Wenn das schon OOP ist, warum fetcht du dann das Ergebis eines Querys in ein assoc array?

Noch ne Frage an die anderen, wäre es nicht einfacher, einfach das User-Objekt in die Session zu speichern=
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

Simon

Profi

Beiträge: 725

Registrierungsdatum: 14.06.2011

Danksagungen: 210

  • Private Nachricht senden

19

04.10.2011, 20:25

Das mit dem Userobjekt in den Sessions speichern ist möglich, da PHP Objekte bei Sessions automatisch serialisiert. ;)
Und ja, es wäre deutlich einfacher.

Man muss jedoch aufpassen, dass man nicht durch haufenweise Verflechtungen und rekursives Serialisieren nen Riesen haufen Serialisiert.
z.B. wenn man eine Datenbankklasse hat, sollte diese in den wenigsten Fällen für jeden User abgespeichert werden. In diesem Fall wäre es sinnvoller, mit den MagicFunctions die DB-Instanz beim Aufwachen neuzuladen ;)

Aber in diesem einfachen Fall mit nur einer Klasse: Ja, ist einfacher. :D
(Viel Text für nichts :()

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

20

04.10.2011, 20:45

Zitat

Userobjekt in der Datenbank speichern
hä? D:
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de