semteX
begehrt die rostschaufel
|
mah i bin so blind... eindeutig scho zu müde... Vielen dank atrox, jetzt ownt alles
|
atrox
in fairy dust... I trust!
|
na bitte, zumindest der syntax-fehler ist jetzt draussen.
|
vossi
been there, done that
|
ich würds trotzdem mit sessions machen! die sind sicherer und imho auch viel einfacher.
wenn du interesse hast zeig ich dir das kurz
|
semteX
begehrt die rostschaufel
|
sure hab ich interesse!
Aber i muss ja für die session trotzdem die daten speichern... sonst müsst ma sie ja imma neu einloggn..
i würds sowieso mit sessions machn... nur für ne session musst ja trotzdem den username und die uid kennen (damit ma session_register(username); session_register(uid); )
oder check i wos ned?
mfg
|
jives
And the science gets done
|
Das passt schon so wie der semtex das machen will imo. Das oc.at-Forum speichert z.B. ja auch einen Sessionhash (allerdings nur für die Dauer der Session), eine Userid und das Passwort (bzw. dessen MD5-Hash) in Cookies  //edit: Huch, was seh ich da? Atrox ist Mod? Und ich dachte die Admins wären unbestechlich
Bearbeitet von jives am 07.02.2003, 11:29
|
semteX
begehrt die rostschaufel
|
Mah bleib schnell da i hab a problem  <?php if(!isset($login_info)) { echo " <form name='FormName' action='$PHP_SELF' method='post'> <input type='text' name='username' size='10' maxlength='25'> <p><input type='password' name='passwort' size='10' maxlength='50'></p> <p><input type='submit' name='Absenden'></p> </form>"; $conn_id = mysql_connect("localhost","root"); mysql_select_db("CN",$conn_id); $sql = "SELECT passwort FROM user WHERE username = '$username' limit 1"; $result = mysql_query($sql, $conn_id); if(mysql_num_rows($result) == 0) { echo "benutezr existiert nicht"; } else { $row = mysql_fetch_row($result); if($row[0] == $passwort) { echo "login geglückt"; $rand = md5(uniqid(rand())); echo $rand; $sql = "UPDATE user SET uniqueid = '$rand' WHERE id = '1'"; $result = mysql_query($sql, $conn_id); setcookie("login_info",$rand,time()+60*60*24*365); } else { echo "Sorry, wrong password"; } } } ?> der speichert de UID ned... er trägt sie aber richtig in der db ein... nur legt er ka cookie an... und er liefert auch so ne komische fehlermeldung am bestn selbst anschaun ==> http://semtexkg.no-ip.com/test1user semteX pw 123
|
atrox
in fairy dust... I trust!
|
du solltest deine echos mit "login gegkückt" usw _nach_ dem setcookie aufrufen.
|
atrox
in fairy dust... I trust!
|
@jives: geschockt ?
|
semteX
begehrt die rostschaufel
|
was soll das am problem ändern ==> er erzeugt das cookie ned...
leider is da server grod down, geht um 5 wieder online :/
|
Philipp
Here to stay
|
Vielleicht ist Register Globals in PHP.INI deaktiviert?
In einen solchen Fall musst du $_COOKIE["login_info"] statt $login_info nehmen
Alternativ kannst du $login_info so initalisieren: if (phpversion() >= "4.1.0") $login_info = $_COOKIE["login_info"];
Dann würde das Script auch noch unter PHP 4.0.x funktionieren. $_COOKIE selber wird erst ab PHP 4.1.0 unterstützt.
|
atrox
in fairy dust... I trust!
|
connection klappt seit stunden nicht (abwechselnd time-out und connection refused), aber wenn ich den code recht überfliege, ist da auch noch ein logischer fehler drin: die datenbank sucht nach dem user, selbst wenn der user nur das login-form sieht.
du hast ja (wenn wir dabei bleiben, daß du alles in einer datei drinstehen hast) 3 Zustände:
Zustand 1: > User kommt ohne cookie und ohne form-data. (und ohne session data) du zeigst ihm ein loginform, das form löst als action den zustand 2 aus
zustand 2: > Form data vorhanden username/pass werden überprüft, random key erstellt, in db geschrieben und cookie erzeugt. (evt auch session, whatever) danach kann man ganz normal content anzeigen, oder was auch immer tun.
zustand 3: > kein form data aber cookie (bzw session data) (falls keine session, wird) cookie zur identifikation benutzt -> in db nachschauen, variablen entsprechend setzen content anzeigen etc ,wie zustand 2 (alles was mit sessions zu tun hat, ist in klammer gesetzt, weil optional)
|
semteX
begehrt die rostschaufel
|
es ging ned weil mei webserver down war - rennt wieder
na des is ja no alles ned fertig!
es geht nur darum dass er das COOKIE ned setzt...
dass es logisch no ned passt is klar... nur er will das cookie ned setzn...
vor allem... er geht ja überall rein (menü etc)
aber er setzt das cookie ned!
mein einziges problem ist: Warum setzt der mei cookie ned?
mfg
|
jives
And the science gets done
|
@atrox: Nein, druchaus nicht. Find ich super, hat imo den Richtigen "erwischt"  @semtex: Er setzt den Cookie wegen dem Output nicht: Du rufst die Seite auf, Script sucht nach $login_info, findet es nicht, gibt also das Form. aus, so weit so gut. Das Script ruft sich selbst auf, nachdem die Daten eingegeben wurden und checkt als erstes, ob der Cookie gesetzt wurde. Nein (wie auch, der setcookie Befehl kommt ja auch viel später) und gibt wieder das Formular aus = Output, setcookie geht nicht. Lösung: Einfach die Abfrage ändern: if (!$_COOKIE['login_info'] && !$_POST['username'] &&
!$_POST['password']) {
DO_FORMOUTPUT
} else {
DO_PHPSTUFF
}
//edit: Kosmetisches
Bearbeitet von jives am 07.02.2003, 19:03
|
semteX
begehrt die rostschaufel
|
so... i habs grad gecheckt ==> cookie muss vor jedem output gesetzt werdn... jetzt ownts  i mach grad die final version  mfg
|