• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Klassen, Funktionen, Arrays und nichts Funzt.

Status
Für weitere Antworten geschlossen.

Prophet

Super-Moderator
Moderator
ich habe meine Klasse:
[php:1:80f74d041a]<?php
class user
{
private $name;
private $sid;
private $passwort;

public function __construct($daten)
{
$this->_Load($daten);
}
public function __destruct()
{
}

public function _Load($daten)
{
$this->$name = $daten['name'];
$this->$sid = $daten['sid'];
$this->$passwort = $daten['passwort'];
}
}
?>[/php:1:80f74d041a]

Dazu eine MySQL Tabelle (user) mit folgenden spalten und einem Eintrag:
name / sid / passwort
Prophet / 321DEF / mein_pw

Nun mach ich folgendes in meiner index php:
[php:1:80f74d041a]<?php
/* daten aus dem login form */
$user_pw = $_POST['login_passwort'];
$user_name = $_POST['login_name'];
$user_sid = $_GET['sid']; /* get ist beabsichtigt! */

$sql = "SELECT * FROM `user` WHERE `name`='$user_name' AND `passwort`='$user_pw' LIMIT 1;";
$result = mysql_query($sql, $mysql_serververbindung);

if($result)
{
if(mysql_num_rows($result) > 0)
{
$daten = mysql_fetch_array($result); /*bis hier funktioniert es wenn ich daten ausgebe erhalte ich die richtigen werte. */
$User = new User($daten);
echo $User->GetName();
echo $User->GetSID();
echo $User->GetPasswort();
/* diese funktione habe ich jetzt nicht aufgeschrieben sie returne einfach die Klassen vars. */
}
}
?>[/php:1:80f74d041a]

Ausgabe:

Warum gibt er mir 1 aus?

mfg Prophet
 
ma ehrlich ein login Script geht auch einfacher!
Aber zu deinem Problem ich glaube das es in Php keine privates gibt!
lass private ma weg!
 
wie wär es wenn du nur den user selectierst und dann das pw mit der post abcheckst?
 
der gesamte obere teil macht ja ger keine probelem. ich kann ja $daten['name'] zb problemlos ausgeben. aber wenn ich die zugewiesene daten aus dem objekt mit den get funktionen hole bekomme ich nur 1 als ausgebe.....
 
Ich habe herausgefunden woran es lag jetzt funktioniert es einwandfrei :D

$this->$name = $daten['name']; <-- man darf hier nicht doppelt dollar schreiben so muss es sein:
$this->name = $daten['name'];

jedoch nur beim zugriff auf die variable nicht beim initialisieren.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben