Php cookies setten..header?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
code
datei
datenbank
eingabe
ersten login
garnichts
header
index
integrieren
leere zeilen
login
machen
paar
part
registrieren
setzen
tag
trennen
tun
-
Hallo,
Ich schreibe gerade den login-tag/part">part meiner seite. Also hier ist die Login() function:
function Login($sql, $username, $pass, $remember){ $result = $sql->query(\"SELECT salt FROM accounts WHERE name = \'$username\'\"); if(mysql_num_rows($result) == 1){ $saltrow = mysql_fetch_assoc($result); $salt = $saltrow[\'salt\']; if(strlen($salt) > 0) $password = HashPass($pass, $salt); else $password = SHA1($pass); if($remember == 1){ setcookie(\"remember_name\", $username, time() + 2419200); setcookie(\"remember_pass\", $password, time() + 2419200); } session_start(); $_SESSION[\'username\'] = $username; $_SESSION[\'password\'] = $password; return true; } else return false; // Probably hacker }
Klappt ausgezeichnet, doch sobald remember auf 1 ist (was dazu führt das es cookies setted) kommen oben 2 fehler \"Headers are already sent ..\", und die cookies werden dann auch nicht gesetzt.
Also ist so wie es aussieht schon der HTML-header gesetzt und ich kann keine cookies mehr setzen, oder?
Was kann ich tun damit ich doch noch cookies setzen kann? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ja genau, du kannst keine cookies mehr setzen, nachdem du irgendeine ausgabe gestartet hast.
Du musst das Login aufrufen, bevor du irgendetwas ausgibst! -
Das problem ist, ich gebe garnichts davor aus.
Also das ist so. in der index.php wird als erstes auth.php eingebunden mit include, die macht session_start().
Und checkt die values von $_session[\'...\'] und erstellt ein paar variablen.
Dann wird als nächstes pageauth.php eingebunden. Diese wertet aus, welche seite angeschaut werden will.
z.b. schaut es if(isset($_POST[\'login])) und wenn es auf true ist, schaut es per CheckLogin() ob username+pass richtig ist, wenn ja macht es die eben gepostet Login() function.
Liegt das an session_start()?
Okay, habs gelöst. Lag daran das ich in meiner config.php nach dem ?> tag noch ein paar leere zeilen hatte.
Beitrag geändert: 24.7.2008 15:51:19 von crackcheck -
Notfalls solltest du dich mal mit ob_start() und komparsen befassen.
-
Es ist natürlich sehr schlau, einen Salt in der Datenbank beim Passwort abzulegen, wenn somit jemand an die Datenbank kommt, hat er zudem auch den Salt und dann ist es nur noch eine Sache der Zeit, bis die Passwörter raus sind.
Darum sollte man immer Code von Ausgabe trennen, damit erst das PHP abläuft und dann die Ausgabe stattfindet, statt PHP in HTML zu integrieren. Aber wie dem auch sei, entweder kannst du es so lösen wie Adrians es geschildert hat, oder du machst ein extra PHP-Datei in der die Eingabe überprüft wird und auf die Webseite zurückleitest. -
Heh ja das gleiche hab ich mir auch gedacht.
Nur ich hab das nicht so gemacht. Ich schreibe gerade nur ein kleines CMS für MapleStory (MMORPG) Private Server seiten. Die accounts zum einloggen sind auch die accounts vom game-server.
Das password wird so generiert:
Beim registrieren ist das password mti SHA1 gehasht, salt bleibt leer.
Beim ersten login wird ein salt mit rnd() (java) erstellt.
Und das passwort ist dann passwort+salt in SHA512. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage