ugrás a tartalomhoz

$_COOKIE

attiss94 · 2011. Okt. 11. (K), 18.16
Sziasztok!
Jó szokásomhoz híven ismét egy tök egyszerű dologban ütköztem akadályba. Meg szeretnélek titeket kérdeni, hogy szerintetek ez így miért nem jó, és hogy hogyan kell helyesen használni.
  1. <?php  
  2.     $jelszo = 'valami';  
  3.       
  4.     if(isset($_COOKIE['suti_']))  
  5.         $suti = $_COOKIE['suti_'];  
  6.       
  7.     if($suti = $jelszo)  
  8.     echo "van suti";  
  9.       
  10.     else  
  11.       
  12.     echo "nincs suti";  
  13.   
  14. ?>  
 
1

Értékadás?

Poetro · 2011. Okt. 11. (K), 18.26
Most értéket akasz adni a jelszónak a 7. sorban, vagy össze akarod hasonlítani? Mert az első teszed, holott valószínűleg a másodikat szeretnéd. Hallgass Yoda-ra!
2

Az egyenlőséget a ==

Joó Ádám · 2011. Okt. 11. (K), 18.27
Az egyenlőséget a == művelettel vizsgálod, a = értékadás.
3

Köszönöm a válaszokat,

attiss94 · 2011. Okt. 11. (K), 18.53
Köszönöm a válaszokat, humoros hiba...
Tovább írtam a kódomat, ami sajnos nem működik, fogalmam sincs, hogy miért, háromszor átnéztem... (A kód azt szeretné csinálni, hogyha megvan a sütink, akkor írja ki, hogy "van suti", ha pedig nincs, akkor kiadjon egy FORM-ot, ahol be tudjuk írni a kért jelszót, ha jó, akkor csináljon egy sütit, ha pedig nem, akkor írja ki, hogy "Rossz jelszó.").
  1. <?php  
  2.     $jelszo = 'valami';  
  3.       
  4.     if(isset($_COOKIE['takacs-art']))  
  5.         $takacs_art = $_COOKIE['takacs-art'];  
  6.       
  7.     if($takacs_art == $jelszo)  
  8.     echo "van suti";  
  9.     else  
  10.     {  
  11. ?>  
  12.   
  13. <html>  
  14. <body>  
  15.     <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">  
  16.         <input type="password" name="suti" maxlength="8">  
  17.         <input type="submit" name="submit" value="ok">  
  18.     </form>  
  19. </body>  
  20. </html>  
  21.   
  22. <?php  
  23. }  
  24.   
  25. if($_POST['suti'] == $jelszo)  
  26. {  
  27. $ora = time() + 3600;   
  28. setcookie(takacs-art, $_POST['suti'], $ora);   
  29. }  
  30. else{  
  31. echo "Rossz jelszó.";}  
  32. ?>  
4

Logikai hiba

Poetro · 2011. Okt. 11. (K), 19.00
Alapból, ha nincs süti, akkor kiírja a űrlapot, és azt hogy Rossz jelszó.. Mivel a POST csak a form elküldése után fog megérkezni. Azaz a $_POST['suti'] addig üres lesz (ráadásul dob egy Notice-t is), ami természetesen nem egyenlő a jelszóval, amíg az űrlap nincs elküldve.
5

Akkor mi lenne a

attiss94 · 2011. Okt. 11. (K), 19.10
Akkor mi lenne a megoldás?
(Semmi más ötletem nincs a dologra, abból, amit leírtál leszűrtem a problémát, de nem tudom, hogy mi lenne rá a megoldás...)
6

Kitaláltam, hogy mi lenne a

attiss94 · 2011. Okt. 11. (K), 20.01
Kitaláltam, hogy mi lenne a helyes megoldás, köszönöm a segítséget, de még mindig nem szeretne teljesen működni... Kinézetre jól működik, lefut minden, és hivatalosan a sütiket is létrehozza, de amikor megnyitom az index.php-t ismét, ismét továbbít az 1.php-hez, tehát nincsenek eltárolva a kellő sütik... Nem tudod, hogy mi lehet a baja?

index.php:
  1. <?php  
  2.     $jelszo = 'valami';  
  3.       
  4.     if(isset($_COOKIE['takacs-art']))  
  5.         $takacs_art = $_COOKIE['takacs-art'];  
  6.       
  7.     if($takacs_art == $jelszo)  
  8.     echo "A süti létezik.";  
  9.     else  
  10.     { header("Location: 1.php"); }  
  11.   
  12. ?>  
1.php:
  1. <html>  
  2. <body>  
  3.     <form action="2.php" method="post">  
  4.         <input type="password" name="suti" maxlength="8">  
  5.         <input type="submit" name="submit" value="ok">  
  6.     </form>  
  7. </body>  
  8. </html>  
2.php:
  1. <?php  
  2. $jelszo = 'valami';  
  3.   
  4. if($_POST['suti'] == $jelszo)  
  5.     {  
  6.         $ora = time() + 3600;   
  7.         setcookie(takacs-art, $_POST['suti'], $ora);   
  8.         echo "A süti létrejött.";  
  9.     }  
  10.     else  
  11.         {  
  12.             echo "Rossz jelszó.";  
  13.         }  
  14. ?>  
7

Kapcsold be

Poetro · 2011. Okt. 11. (K), 20.21
Kapcsold be a Notice-okat kérlek. Akkor látni fogod, hogy a takacs-art kivonásnak nincs értelme (ugye az eredménye 0 lesz, ezért egy olyan sütit állítasz be, aminek a kulcsa 0). Valamint természetesen meg lehet valósítani az előzőt egy fájlban is.
  1. <?php  
  2. $jelszo = 'valami';  
  3. $form_kell = TRUE;  
  4. $uzenet = '';  
  5.   
  6. if (isset($_COOKIE['takacs-art']) && $_COOKIE['takacs-art'] == $jelszo) {  
  7.   $form_kell = FALSE;  
  8.   $uzenet = "A süti létezik.";  
  9. }  
  10. else if (!emptyempty($_POST)) {  
  11.   if (isset($_POST['suti']) && $_POST['suti'] == $jelszo) {  
  12.     $ora = time() + 3600;  
  13.     setcookie('takacs-art'$_POST['suti'], $ora);  
  14.     $form_kell = FALSE;  
  15.     $uzenet = "A süti létrejött.";  
  16.   } else {  
  17.     $uzenet = "Rossz jelszó.";  
  18.   }  
  19. }  
  20. ?>  
  21. <!DOCTYPE html>  
  22. <html>  
  23. <head>  
  24.   <title>Page Title</title>  
  25. </head>  
  26. <body>  
  27.   <?php if ($uzenet) : ?>  
  28.   <div class="uzenet"><?php echo $uzenet; ?></div>  
  29.   <?php endif; ?>  
  30. <?php if ($form_kell) : ?>  
  31.   <form action="" method="post">  
  32.     <input type="password" name="suti" maxlength="8" />  
  33.     <input type="submit" name="submit" value="ok" />  
  34.   </form>  
  35. <?php endif; ?>  
  36. </body>  
  37. </html>  
8

Mit értesz az alatt, hogy

attiss94 · 2011. Okt. 11. (K), 20.42
Mit értesz az alatt, hogy kapcsoljam be a Notice-okat?
Megpróbáltam lefuttatni a kódot, amit írtál, de nem csinál semmit (nagy fehérség).
9

Eredeti

Poetro · 2011. Okt. 11. (K), 21.21
Az eredeti kódot nézd, ne a színezettet (empty duplikáció). Nincs bekapcsolva nálad semmilyen hibajelzés, ami rossz. Kapcsold be a hibák kijelzését.