|
| Problemer med setcookie() ?? Fra : kbisgaard | Vist : 558 gange 300 point Dato : 23-03-10 15:29 |
|
Hej
Jeg skal sætte en cookie med et navn og det gør jeg med koden:
Kode setcookie("navn", $navn, time()+2592000, "/"); |
Men den gider ikke sætte cookien?
Er der nogen der har en ide om hvordan det kan være?
| |
| Accepteret svar Fra : scootergrisen | Modtaget 310 point Dato : 23-03-10 15:50 |
|
Kan det være fordi at først skal du sætte cookien også gælder den først fra næste gang du indlæser siden hvis du forstår.
Altså hvis du sætter en cookie så kan du ikke se at den er sat først gang du sætter den fordi det er browseren som skal sende data tilbage om at den cookie blev sat sidste gang...
jeg ik så god til at forklare det men håber du forstår.
| |
| Kommentar Fra : molokyle |
Dato : 24-03-10 09:31 |
|
Her er en liste over 'fælder' når cookies ikke vil makke ret:
Citat Common Pitfalls:
¦Cookies will not become visible until the next loading of a page that the cookie should be visible for. To test if a cookie was successfully set, check for the cookie on a next loading page before the cookie expires. Expire time is set via the expire parameter. A nice way to debug the existence of cookies is by simply calling print_r($_COOKIE);.
¦Cookies must be deleted with the same parameters as they were set with. If the value argument is an empty string, or FALSE, and all other arguments match a previous call to setcookie, then the cookie with the specified name will be deleted from the remote client. This is internally achieved by setting value to 'deleted' and expiration time to one year in past.
¦Because setting a cookie with a value of FALSE will try to delete the cookie, you should not use boolean values. Instead, use 0 for FALSE and 1 for TRUE.
¦Cookies names can be set as array names and will be available to your PHP scripts as arrays but separate cookies are stored on the user's system. Consider explode() to set one cookie with multiple names and values. It is not recommended to use serialize() for this purpose, because it can result in security holes.
Multiple calls to setcookie() are performed in the order called. |
http://php.net/manual/en/function.setcookie.php
</MOLOKYLE>
| |
| Kommentar Fra : kbisgaard |
Dato : 24-03-10 14:47 |
|
Jeg tror ikke fejlen ligger i min kode, for har tit brugt cookies, men ligepludselig gider de bare ikke virke?
| |
| Kommentar Fra : kbisgaard |
Dato : 25-03-10 16:29 |
|
Her er den fulde kode til mit login script:
Kode <?php
$host = "localhost";
$user = "just2cool_dk";
$password = "kbisgaard";
$database = "just2cool_dk";
$connection = mysql_connect($host,$user,$password) or die(mysql_error());
mysql_select_db($database) or die(mysql_error());
if(isset($_POST['Submit'])){
$sql = "SELECT * FROM users WHERE username='$_POST[username]'";
$result = mysql_query($sql,$connection) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$password = $row[password];
$username = $row[username];
}
$user_password = $_POST['password'];
if($password == $user_password){
setcookie(login, $username, time()+2592000, "/");
$msg[ok] = "Du er nu logget ind!";
}
else{
$msg[ok] = "Forkert password!";
}
}
if(empty($_COOKIE['login'])){
$bruger = "
<table width='130' class='bodytable' id='sidemenu'><tr><th>Login</th></tr>
<tr><td>
<form id='login' name='login' method='post' action='$_SERVER[PHP_SELF]'>
<label>Brugernavn<br />
<input name='username' type='text' size='10' />
</label>
<br />
<label>Password<br />
<input name='password' type='password' size='10' />
</label>
<label>
<br />
<input type='submit' name='Submit' value='Login' />
</label>
</form>
</td></tr></table>";
}
print $bruger;
?> |
Check password virker fint. Får en beskeden "du er nu logget ind" hvis jeg skriver den rigtige kode, og "forkert password" hvis ikke.. Men den sætter stadig ikke cookien?
| |
| Godkendelse af svar Fra : kbisgaard |
Dato : 25-03-10 21:16 |
|
Tak for svaret scootergrisen.
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|