Avatar billede lemint Nybegynder
18. august 2004 - 14:57 Der er 18 kommentarer og
1 løsning

Cookie test

Dau, jeg sidder her og er ved at bygge et site op. Jeg skal til at teste på mine cookies. Jeg tester med denne string:
if ($_COOKIE['dacookie'] != "99" ) {
Jeg ved denne if sætning ikke er fuldført, men vil denne også sortere de users hvor "dacookie"'s værdi er tom? Sætter den til $id hvor kun admins, mods, highusers osv. får en id.. normal users er tomme der.. vil den virke som filter til en normal user (uden id)?
Avatar billede dennismp Nybegynder
18. august 2004 - 15:06 #1
>> men vil denne også sortere de users hvor "dacookie"'s værdi er tom

ja

>> vil den virke som filter til en normal user (uden id)?

da en tom string er forskelligt fra "99", så vil den stadig kom ind i din if.
Avatar billede dennismp Nybegynder
18. august 2004 - 15:09 #2
Husk bare på, at brugeren kan ændre indholdet af cookies - så det er måske en noget risikabelt måde at lave det på..

Brug evt $_SESSION.. Det virker næsten på samme måde..

øverst i dit script sætter du
session_start();

når du vil gemme noget i session:
$_SESSION['userid'] = 99;

når du vil bruge værdien til noget, gør du som ved cookie

if( $_SESSION['userid'] != 99 ) { ..

osv..

Brugeren kan ikke rette i en session. Han får kun en session-id - som i sig selv ikke er informationsbærende. Men PHP kan med dette session-id finde de dataer du har gemt i den pågældende session.
Avatar billede lemint Nybegynder
18. august 2004 - 15:12 #3
I know - men mine sessions kan ikke rigtig køre på det her login system.. Det kommer til at se lidt anderledes med noget kryptering på mine cookies osv, før det bliver officielt ;)

og tak da ;)
Avatar billede dennismp Nybegynder
18. august 2004 - 15:24 #4
Ved du hvorfor sessions ikke virker? Jeg gider slet ikke at bøvle med cookies mere :)

Fik jeg overhovedet svaret dit spørgsmål ? Jeg var lidt i tvivl om hvad du mente :)
Avatar billede lemint Nybegynder
18. august 2004 - 15:32 #5
du fik svaret på mit spørgsmål ;)
og tror fordi jeg har en action i samme doc. som den ene af dem - og de gider ikke blive resat ved logout... så man skal hele tiden lukke browser vinduet og kan kun opdatere et member per gang du er logget ind..
Avatar billede dennismp Nybegynder
18. august 2004 - 15:56 #6
Du kan bruge session_destroy(); i dit logout script. Så burde din session være hel tom - så du undgår at folk skal lukke døre, vinduer mv.
Avatar billede lemint Nybegynder
18. august 2004 - 18:39 #7
heh ;) tak tak.. du har ik en idè til hvordan jeg slipper for at den loader en session to gange ved en form action på samme side?
Avatar billede sukos Juniormester
18. august 2004 - 18:46 #8
start med
<?php
session_start();

// LOGUD..................................
if(isset($_GET["logout"])) {
$_SESSION = array();
session_destroy();
header("Location:/"); // redirect til forsiden af sitet
exit();
}


/*
tjek om der er submittet
*/

if(isset($_POST["navn"])) {

/*
gør dit og dat.........
og lav en header til filen selv
*/
header("Location:". $_SERVER["PHP_SELF"] ."");
exit();
}

?>

<html><head>..............................
resten af din side..........................
Avatar billede dennismp Nybegynder
18. august 2004 - 19:17 #9
Jeg er ikke helt sikker på at jeg forstår spørgsmålet :-\
Avatar billede lemint Nybegynder
18. august 2004 - 20:52 #10
<?
if ($_COOKIE['dacookie'] != "99" ) {
    echo "<b>You do not have the appropriate permissions to enter user admin!</b>";
    echo "<b><a href=login_success.php>Back to Distributors Section</a></b><br>";
    echo "<b><a href=logout.php>Logout</a>";
    } else {
include 'db.php';
  if ($update) { $query = mysql_query("UPDATE users SET username='$username',
  password='$password', email_address='$email', WHERE username='$username'
  ") or print mysql_error(); echo "Dine oplysninger er nu blevet opdateret"; }else{
  print " $username "; print " $num "; $num = o ?> </p>
<h3 align="center">Rediger crew</h3><br>
<p>Hvilken bruger vil du redigere info for?</p>

<?

$result = mysql_query("SELECT * FROM users ORDER BY userid DESC LIMIT 0,25") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo"<table width='90%' border='0' cellspacing='2' cellpadding='2'><tr><td><b>".$row['username']. "
</b><a href='user_update.php?page=user_update&bruger=show&username=" . $row['username'] . "'><b>*Rediger*</b></A></td></tr></table>\n";
}
$query = mysql_query("SELECT * FROM users WHERE username='$username' ") or print mysql_error();
while($row = mysql_fetch_array($query)) {
$id = $row['userid'];
$username = $row['username'];
$password = $row['password'];
$email = $row['email_address'];
$username = $row['username'];
}

?>
<form method="post" action="user_update.php?page=user_update&bruger=show&navn=" . $row['username'] . ">
<input type="hidden" name="id" value="<? echo $username ?>"> 

<table width="300">
<tr>
<td width="300" colspan="2"><b>Ret oplysninger</b></td>
</tr><tr>
<td width="150">Navn:</td>
<td width="150"><input type="text" name="nick" value="<? echo "$username"; ?>" style="width: 152px"></td>
</tr><tr>
<td width="150">Kodeord:</td>
<td width="150"><input type="text" name="password" value="<? echo "$password"; ?>" style="width: 152px"></td>
</tr><tr>
<td width="150">Email:</td>
<td width="150"><input type="text" name="email" value="<? echo "$email"; ?>" style="width: 152px"></td>
</tr><tr>
<td width="300" colspan="2" align="right"><input type="submit" name="update" value="Udfør"></td>
</tr>
</table>
</form>
<?
}//afslutter min ifupdate
}
?>

denne source fejler hvis jeg bruger sessions på den..
Avatar billede dennismp Nybegynder
18. august 2004 - 22:38 #11
Hvad er fejlen?
Avatar billede lemint Nybegynder
19. august 2004 - 07:44 #12
hvis jeg vælger at jeg vil opdatere en user - loader den sig selv igen - og så laver den en session fejl.. <form method="post" action="user_update.php?page=user_update&bruger=show&navn=" . $row['username'] . ">
user_update = den slamkode jeg postede...
Avatar billede dennismp Nybegynder
19. august 2004 - 10:56 #13
session fejl? Er det, den med at session er allerede blev udført?
Avatar billede lemint Nybegynder
19. august 2004 - 15:16 #14
yep
Avatar billede dennismp Nybegynder
19. august 2004 - 16:40 #15
så må have 2 session_start() .. Prøv at se alle dine filer igennem (og når de includer/require andre filer, så tjek dem også).
Avatar billede lemint Nybegynder
21. august 2004 - 12:11 #16
forstår ikke helt hvad det er du siger, MÅ jeg have 2 session_start() eller må jeg ikke? der er jo netop 2 session_start() fordi den loader user_update.php igen (det hedder filen der loader sig selv i form action..)
Avatar billede dennismp Nybegynder
21. august 2004 - 13:00 #17
Nej, du skal fjerne een af dem, så du kun for kaldt session_start() en enkelt gang.

Eller du kan lave et lille tjek, om session allerede er startet før du kalder session_start:

if( session_id() == '' )
    session_start();
Avatar billede lemint Nybegynder
21. august 2004 - 13:42 #18
dennismp <form method="post" action="user_update.php?page=user_update&bruger=show&navn=" . $row['username'] . "> <- dette er min form action på user_update.php - som altså loader user_update.php igen, dog med de nye variabler til at opdatere brugerne med. Der står session_start(); i toppen af den - og når den loader igen i min form action loader den også min session_start(); det er der mit problem ligger med mine sessions..
Avatar billede lemint Nybegynder
22. april 2005 - 12:32 #19
Spørgsmål lukket.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester