• 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
 
Werbung:
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!
 
Werbung:
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.
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben