PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cookie wie ?



localhost
25-03-2003, 21:27
Wie mache ich ein Cookie und woher weis ich was darin muss und wie ??
Ich hab ein login script soweit aber das stendige einlogen ist die hölle.

magpie
25-03-2003, 21:40
Schau mal hier http://www.php.net/manual/de/function.setcookie.php (http://http://www.php.net/manual/de/function.setcookie.php) da ist es gut beschrieben.


gruss magpie

localhost
26-03-2003, 13:03
$zeit = time();
$username =$_POST['username'];
$pwd =$_POST['pwd'];
$cuserid = $_COOKIE['puserid'];
$cuserpwd = $_COOKIE['puserpwd'];

// ########### Login durchführen !
if ($_POST['action'] =="Login" or $_COOKIE['puserid'] != "" or !isset($_SESSION['UIN'])) {
if($_POST['action'] != "Login") {
$sqlbefehl= "Select * from $tab_user
Where id='$cuserid' and pwd='$cuserpwd'";
}
else {
$sqlbefehl= "Select * from $tab_user where username='$username' and pwd=password('$pwd')";
}
$ergebnis = mysql_query($sqlbefehl, $serverid);
if (mysql_num_rows($ergebnis) == 1) {
$user = mysql_fetch_array ($ergebnis);
srand((double)microtime()*1000000);
$UIN = md5(uniqid(rand()));
$_SESSION['UIN'] = $UIN;
$sqlbefehl= "update $tab_user set uin='$UIN',lastlogin='$zeit' where id = $user[id]";
@mysql_query($sqlbefehl, $serverid);
if ($_POST['savelogin'] == 1) {
//Login Daten werden als Cookie gespeichert wenn erfolgreich
setcookie ("puserid", $user[id], time()+3600*24*60,"/");
setcookie ("puserpwd", $user[pwd], time()+3600*24*60,"/");
}
unset($_SESSION['s_boardright']);
}
}
// Ende Login



<input type=\"checkbox\" name=\"savelogin\" value=\"1\">

da kommt immer so ein fehler wiel irgenwie html vor den cooki steht ??
weis keiner wie ich das machen kann ?

Gaert
26-03-2003, 13:18
Hallo!

Ich zitiere aus dem Manual:

Wie andere Header auch, müssen Cookies vor irgendwelchen anderen Ausgaben Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Sie müssen deshalb solche Funktionsaufrufe vor irgendwelchen Ausgaben, inklusive <html>- oder <head>-Tags sowie irgendwelcher Whitespaces tätigen. Erfolgte bereits vor dem Aufruf dieser Funktion eine Ausgabe erfolgt sein, gibt setcookie() scheitern und FALSE zurückgeben. War setcookie() erfolgreich, wird TRUE zurückgegeben. Dies sagt jedoch nichts darüber aus, ob der Benutzer das Cookie auch akzeptiert hat.

Der Fehler kommt, weil vor setcookie() etwas ausgegeben wird, oder vor <?php HTML, oder Leerzeichen stehen.
Ist doch eigentlich klar...

EDIT:
Hmmm... wenn ich mir den Satzbau so anschaue, könnte man fast meinen du wärst der Übersetzer für das Manual gewesen... :rolleyes: (nix für ungut!)

localhost
26-03-2003, 13:32
Original geschrieben von Gaert
Hallo!

EDIT:
Hmmm... wenn ich mir den Satzbau so anschaue, könnte man fast meinen du wärst der Übersetzer für das Manual gewesen... :rolleyes: (nix für ungut!)

:-) wie das gemind ??



Ich weis auch nicht wie cih das dan machen soll.
Wie gehe ich den jetzt weiter vor ?
irgendwo muss man das ja ankligen können ??

Gaert
26-03-2003, 13:57
Das war so gemeint wie´s da steht :D

Poste doch bitte mal das vollständige Skript, dann brauch ich nicht so viel zu erklären

localhost
26-03-2003, 14:05
login.inc.php


<?
include("config.inc.php");
$timestamp = time();
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
for ($i=0; $i < 10; $i++){
}
?>
<HTML>
<HEAD>

<? include("head.inc.php"); ?>

</HEAD>
<body bgcolor=cccccc leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0>

<a name="top"></a><br>

<? include("head.menu.inc.php"); ?>

<br>
<?
include("config.inc.php");

//Variablen aufbereiten
$zeit = time();
$username =$_POST['username'];
$pwd =$_POST['pwd'];
$cuserid = $_COOKIE['puserid'];
$cuserpwd = $_COOKIE['puserpwd'];

// ########### Login durchführen !
if ($_POST['action'] =="Login" or $_COOKIE['puserid'] != "" or !isset($_SESSION['UIN'])) {
if($_POST['action'] != "Login") {
$sqlbefehl= "Select * from $tab_user
Where id='$cuserid' and pwd='$cuserpwd'";
}
else {
$sqlbefehl= "Select * from $tab_user where username='$username' and pwd=password('$pwd')";
}
$ergebnis = mysql_query($sqlbefehl, $serverid);
if (mysql_num_rows($ergebnis) == 1) {
$user = mysql_fetch_array ($ergebnis);
srand((double)microtime()*1000000);
$UIN = md5(uniqid(rand()));
$_SESSION['UIN'] = $UIN;
$sqlbefehl= "update $tab_user set uin='$UIN',lastlogin='$zeit' where id = $user[id]";
@mysql_query($sqlbefehl, $serverid);
if ($_POST['savelogin'] == 1) {
//Login Daten werden als Cookie gespeichert wenn erfolgreich
setcookie ("puserid", $user[id], time()+3600*24*60,"/");
setcookie ("puserpwd", $user[pwd], time()+3600*24*60,"/");
}
unset($_SESSION['s_boardright']);
}
}
// Ende Login

// ############ Login überprüfen
$sqlbefehl= "Select * from $tab_user where uin='".$_SESSION['UIN']."'
And uin <> ''";
$ergebnis = mysql_query($sqlbefehl, $serverid);
if (mysql_num_rows($ergebnis) != 1) {

echo "<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>
<tr><td bgcolor=FFFFFF><b>Login</b></td></tr></table><br>

<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>
<tr><td bgcolor=FFFFFF colspan=2>Einlogen</td></tr>
<form action=\"$PHP_SELF\" method=\"post\">
<tr><td class=\"left\" align=\"right\" bgcolor=FFFFFF>User: </td>
<td class=\"right\" bgcolor=FFFFFF><input type=\"text\" name=\"username\" $style></td></tr>
<tr><td class=\"left\" align=\"right\" bgcolor=FFFFFF>Passwort: </td>
<td class=\"right\" bgcolor=FFFFFF><input type=\"password\" name=\"pwd\" $style></td></tr>
<tr><td class=\"left\" align=\"right\" bgcolor=FFFFFF>loginspeicher: </td>
<td class=\"right\" bgcolor=FFFFFF><input type=\"checkbox\" name=\"savelogin\" value=\"1\"></td></tr>
<tr><td class=\"header\" align=\"center\" colspan=2 bgcolor=FFFFFF><input name=\"action\" type=\"submit\" value=\"Login\" $style></tr></form>
</table><br>";
include("bottom.inc.php");
echo "<br></body></html>";
require ("fuss.php");
exit;
}
if (mysql_num_rows($ergebnis) == 1) {
$user = mysql_fetch_array ($ergebnis);
$expire=$zeit+1800;
$sqlbefehl= "update $tab_user set expire='$expire' where id = $user[id]";
@mysql_query($sqlbefehl, $serverid);
}
?>

Gaert
26-03-2003, 14:25
Also... nochmal!

setcookie() muss genauso wie header() immer vor (!!!) jeglicher HTML Ausgabe stehen, diese Funktionen die Header Informationen der erzeugten HTML Seite festlegen.



<?php
include("config.inc.php");
$timestamp = time();
function getmicrotime(){
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
$time_start = getmicrotime();
for ($i=0; $i < 10; $i++){
}

//Variablen aufbereiten
$zeit = time();
$username =$_POST['username'];
$pwd =$_POST['pwd'];
$cuserid = $_COOKIE['puserid'];
$cuserpwd = $_COOKIE['puserpwd'];

// ########### Login durchführen !

if ($_POST['action'] =="Login" or $_COOKIE['puserid'] != "" or !isset($_SESSION['UIN'])) {
if($_POST['action'] != "Login") {
$sqlbefehl= "Select * from $tab_user
Where id='$cuserid' and pwd='$cuserpwd'";
}
else {
$sqlbefehl= "Select * from $tab_user where username='$username' and pwd=password('$pwd')";
}
$ergebnis = mysql_query($sqlbefehl, $serverid);
if (mysql_num_rows($ergebnis) == 1) {
$user = mysql_fetch_array ($ergebnis);
srand((double)microtime()*1000000);
$UIN = md5(uniqid(rand()));
$_SESSION['UIN'] = $UIN;
$sqlbefehl= "update $tab_user set uin='$UIN',lastlogin='$zeit' where id = $user[id]";
@mysql_query($sqlbefehl, $serverid);
if ($_POST['savelogin'] == 1) {
//Login Daten werden als Cookie gespeichert wenn erfolgreich
setcookie ("puserid", $user[id], time()+3600*24*60,"/");
setcookie ("puserpwd", $user[pwd], time()+3600*24*60,"/");
}
unset($_SESSION['s_boardright']);
}
}

// Ende Login

?>
<HTML>
<HEAD>

<?php include("head.inc.php"); ?>

</HEAD>
<body bgcolor=cccccc leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0>

<a name="top"></a><br>

<?php include("head.menu.inc.php"); ?>

<br>
<?php

// ############ Login überprüfen
$sqlbefehl= "Select * from $tab_user where uin='".$_SESSION['UIN']."'
And uin <> ''";
$ergebnis = mysql_query($sqlbefehl, $serverid);
if (mysql_num_rows($ergebnis) != 1) {

echo "<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>
<tr><td bgcolor=FFFFFF><b>Login</b></td></tr></table><br>

<table width=750 border=0 align=center cellpadding=1 cellspacing=1 bgcolor=000000>
<tr><td bgcolor=FFFFFF colspan=2>Einlogen</td></tr>
<form action=\"$PHP_SELF\" method=\"post\">
<tr><td class=\"left\" align=\"right\" bgcolor=FFFFFF>User: </td>
<td class=\"right\" bgcolor=FFFFFF><input type=\"text\" name=\"username\" $style></td></tr>
<tr><td class=\"left\" align=\"right\" bgcolor=FFFFFF>Passwort: </td>
<td class=\"right\" bgcolor=FFFFFF><input type=\"password\" name=\"pwd\" $style></td></tr>
<tr><td class=\"left\" align=\"right\" bgcolor=FFFFFF>loginspeicher: </td>
<td class=\"right\" bgcolor=FFFFFF><input type=\"checkbox\" name=\"savelogin\" value=\"1\"></td></tr>
<tr><td class=\"header\" align=\"center\" colspan=2 bgcolor=FFFFFF><input name=\"action\" type=\"submit\" value=\"Login\" $style></tr></form>
</table><br>";
include("bottom.inc.php");
echo "<br></body></html>";
require ("fuss.php");
exit;
}
if (mysql_num_rows($ergebnis) == 1) {
$user = mysql_fetch_array ($ergebnis);
$expire=$zeit+1800;
$sqlbefehl= "update $tab_user set expire='$expire' where id = $user[id]";
@mysql_query($sqlbefehl, $serverid);
}
?>

localhost
26-03-2003, 14:38
cool das geht aber jetzt muss ich immer auf login klicken dan lock der sich automatich ein und wen ichauf dei page gehe dan nicht ich muss immer erst einmal auf ligin kligen ????
geht das auch der der bei ersten besuch der page den user überpfrüft ??

msi
26-03-2003, 20:29
Original geschrieben von localhost
cool das geht aber jetzt muss ich immer auf login klicken dan lock der sich automatich ein und wen ichauf dei page gehe dan nicht ich muss immer erst einmal auf ligin kligen ????
geht das auch der der bei ersten besuch der page den user überpfrüft ??

hui, bitte versuch wenigstens anständiges deutsch zu schreiben.
Wenn ich dich richtig verstehe willst du, dass man die Seite ohne Login gar nicht betreten kann oder?

localhost
27-03-2003, 02:46
Original geschrieben von msi
hui, bitte versuch wenigstens anständiges deutsch zu schreiben.
Wenn ich dich richtig verstehe willst du, dass man die Seite ohne Login gar nicht betreten kann oder?
Nein das nicht ich meine nur das man mit dem cooki diregt eingelok sein soll und nicht erst wen man auf login klikt