Problem bei Abfrage aus MySQL

TTlong

Angesehenes Mitglied
Hallo,

ich habe mir ein Script geschrieben, welches ein zufälliges Passwort generiert und in einer DB speichert. Es darf in der Tabelle nur einen einzigen Eintrag geben, der bei jeder Ausführung des Scripts geupdatet wird. Es funktioniert soweit auch alles ohne Probleme, nur wenn ich den Wert bzw. Inhalt wieder auslesen will, kommt nicht der eigentliche Eintrag.

Mein Script:

QUOTE require_once ("../inc/config.inc.php");

mt_srand((double)microtime()*1000000); 

$max=20;
$pw="";
for($i=0;$i<$max;$i++)
{
$x=mt_rand(0,36);
$pw.=substr("ABCDEGHIJKLMNOPRSTUVWYZabcdefghiklmopqrstvwxyz145790", -$x, 1);
}

$aendern = "UPDATE trans_code Set code = '$pw'";
$update = mysql_query($aendern);

$abfrage = "SELECT code FROM trans_code";
$ergebnis = mysql_query($abfrage);


Will ich mir jetzt mit echo "$ergebnis"; das in der DB befindliche Passwort anzeigen lassen, kommt lediglich "Resource id #4" und nicht das eigentliche Passwort.

Was mache ich falsch?
 
Ja, wie gesagt, die Generierung und der Eintrag in die DB bzw. das Update der Tabelle funktioniert reibungslos, hab nur Probleme mit der Ausgabe.
 
hm, probier es mal um ein Feld zB "id", wert = '1' zu erweitern.

$aendern = "UPDATE trans_code Set code = '$pw' WHERE id = '1'";
$update = mysql_query($aendern);

$abfrage = "SELECT code FROM trans_code WHERE id = '1'";


wenn das nicht klappt -> pech gehabt. ^^
 
Das hab ich auch schon probiert, hab aber grad die Lösung selbst gefunden. Es muss lauten:

QUOTE while($row = mysql_fetch_object($ergebnis))
{
echo $row->code;
}


Jetzt wird das generierte Passwort ausgegeben
 
QUOTE (TTlong @ Di 1.01.2008, 14:32)ich habe mir ein Script geschrieben, welches ein zufälliges Passwort generiert und in einer DB speichert.

Aus leidvoller Erfahrung mit den bei server-daten ebenfalls automatisch generierten Passwörtern:

Wenn Du die Passwörter an Laien verteilst, werfe

kleines L, großes L, großes I, großes O und die Null raus.

Eigentlich würde es genügen, so ein Passwort mit der Maus zu kopieren und es einzufügen. Laien tippen das aber ab - und verwechseln l mit I, L und J sowie O und 0. Außerdem hängt es von der Schriftart des Mailprogramms oder - bei dir - auf dem Bildschirm ab, ob diese Zeichen 'hinreichend unterschiedlich' dargestellt werden.

Dafür kannst Du !, §, $, %, &, /, =, +, -, #, ., : mit hinzunehmen, die Zeichen sind kein Problem.
 
Danke für den Tipp, werde ich berücksichtigen.

Hab jetzt ein Problem, was mir absolut unverständlich ist. Und zwar gehts darum, dass ich das Passwort, was eigentlich ein Transaktionscode ist, nach der Generierung in der DB und in einem Cookie speichere. Danach sollen die beiden miteinander verglichen werden und bei Ungleichheit auf ein URL geleitet werden.

QUOTE require_once ("../inc/config.inc.php");

if ($row->code != $das_cookie)
{
header("Location: ".$site_url."de/".$error_file_place."".$error_file."");
}


Das völlig unverständliche ist jetzt, dass , obwohl die beiden Werte absolut identisch sind, auf die (Fehler-) Seite geleitet wird. Setze ich == statt !=, wird nicht weitergeleitet.

Habs auch schon ausgegeben:


QUOTE require_once ("../inc/config.inc.php");

if ($row->code != $das_cookie)
{
echo "$row->code";
echo "$das_cookie";
}


Es sind dieselben und es wird ausgegeben, was ja eigentlich nicht sein dürfte, da ja nur bei Ungleichheit der beiden eine Ausgabe stattfinden dürfte.

Wie ist das zu verstehen? Ich begreif das grad überhaupt nicht.
 
1.) wenn du aus einer Tabelle einen Wert holen möchtest kannst du auch mal mysql_result anschauen. Das ist wesentlich eleganter als deine while Schleife. (meine Meinung gell)

2.) zu deinem "neuen" Problem. Gib mal vor und nach dem Variablen noch ein Zeichen aus, z.B. # und schau dir dann die Ausgabe im Quelltext an. Sind evtl. Leerzeichen bei einem von beiden dabei? Wenn Leerzeichen dabei sind, empfehle ich trim() zu nutzten.
 
QUOTE (manuel @ Di 1.01.2008, 18:58) zu deinem "neuen" Problem. Gib mal vor und nach dem Variablen noch ein Zeichen aus, z.B. # und schau dir dann die Ausgabe im Quelltext an.

Nicht ein einziges Leerzeichen.....
 
Klappt folgenedes?


---------------------------------------------------

setcookie("Transaktionscode", time()+3600);

---------------------------------------------------

$abfrage = "SELECT code FROM trans_code WHERE id = '1'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$code = $row->code;
}

if ($code != $_COOKIE['Transaktionscode'])
{
header
}

Wahlweise mit

('$code' != $_COOKIE['Tr....

probieren.


Try & Error ^^

 
QUOTE (hajue @ Di 1.01.2008, 20:59) Klappt folgenedes?


---------------------------------------------------

setcookie("Transaktionscode", time()+3600);

---------------------------------------------------

$abfrage = "SELECT code FROM trans_code WHERE id = '1'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$code = $row->code;
}

if ($code != $_COOKIE['Transaktionscode'])
{
header
}

Wahlweise mit

('$code' != $_COOKIE['Tr....

probieren.


Try & Error ^^

Habs probiert und es hat funktioniert. (musste nur "WHERE id = '1'" weglassen, weiss nicht warum, hab grad nochmal das eine oder andere Buch gewälzt, da wirds auch so gemacht -> aber egal, es funktioniert)

Danke schön.......


PS: Im Prinzip einleuchtend, aber gestern war glaub ich für alle ein anstrengender Tag
biggrin.gif



Gruß TTlong
 
Zurück
Oben