Toon posts:

[php]cookies

Pagina: 1
Acties:
  • 57 views sinds 30-01-2008

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
if ($password == $pass) 
                {
                echo 'Welcome ' . $username;
                $username = $_POST['username'];
                        $password = $_POST['password'];
                } 
                else 
                {
                echo 'Wrong Password';
                            echo "<br>Please go <a href=javascript:history.back(1)>back</a>";
                }


Ik had even een vraagje over bovenstaande code ->
Ik wil dat als er aan de voorwaarde $password == $pass wordt voldaan, er 2 cookies worden aangemaakt, namelijk eentje met de $username en eentje met $password. Dit moet alleen gebeuren als er daadwerkelijk aan de voorwaarde voldaan wordt.
Alleen als ik dan even op internet kijk voor php cookies, dan lees ik dat de instructie setcookie helemaal bovenaan de pagina moet staan, voor enige andere code.
Nu was mijn vraag, hoe pak ik dit aan?

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 23:31

--MeAngry--

aka Qonstrukt

Verwijderd schreef op zaterdag 04 februari 2006 @ 17:47:
code:
1
2
3
4
5
6
7
8
9
10
11
if ($password == $pass) 
                {
                echo 'Welcome ' . $username;
                $username = $_POST['username'];
                        $password = $_POST['password'];
                } 
                else 
                {
                echo 'Wrong Password';
                            echo "<br>Please go <a href=javascript:history.back(1)>back</a>";
                }


Ik had even een vraagje over bovenstaande code ->
Ik wil dat als er aan de voorwaarde $password == $pass wordt voldaan, er 2 cookies worden aangemaakt, namelijk eentje met de $username en eentje met $password. Dit moet alleen gebeuren als er daadwerkelijk aan de voorwaarde voldaan wordt.
Alleen als ik dan even op internet kijk voor php cookies, dan lees ik dat de instructie setcookie helemaal bovenaan de pagina moet staan, voor enige andere code.
Nu was mijn vraag, hoe pak ik dit aan?
Dat heb je niet helemaal goed gelezen, setcookie moet gebeuren voor enige output dus voordat er iets naar de browser wordt gestuurd om weer te geven met bijvoorbeeld echo :)

Tesla Model Y RWD (2024)


Verwijderd

Ten eerste moet je geen cookie setten met de username en het password. Gebruik dan "gewoon" een sessie.

Verder is het onzin dat een setcookie statement per se bovenaan een pagina moet staan. Je moet alleen ervoor zorgen dat de setcookie statements worden uitgevoerd voordat er enige output naar de client is gestuurd.

[ Voor 3% gewijzigd door Verwijderd op 04-02-2006 17:51 ]


Verwijderd

Topicstarter
Hmm dus je bedoelt dat ik setcookie moet gebruiken voor dat ik de informatie van de form verstuur ?
:?

Zou een van jullie misschien kunnen laten zien hoe dat in bovenstaande code verwerkt zou moeten worden ?

Ik heb die informatie trouwens van deze site ->

http://www.spoono.com/php/tutorials/tutorial.php?url=cookies

En daar staat bij punt 1 "You have to put the cookie code as the first line of your file, it has to be before the head, before any other code, HTML or PHP.".

[ Voor 75% gewijzigd door Verwijderd op 04-02-2006 17:54 ]


  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 07:12
Verwijderd schreef op zaterdag 04 februari 2006 @ 17:51:
Hmm dus je bedoelt dat ik setcookie moet gebruiken voor dat ik de informatie van de form verstuur ?
:?
Je mag niet echo-en of printen voor dat je cookies verzend...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$username = $_POST['username'];
$password = $_POST['password'];

if ($password == $pass) 
                {
setcookie ("pass", $password,time()+3600);
setcookie ("username", $username,time()+3600);

                echo 'Welcome ' . $username;

                } 
                else 
                {
                echo 'Wrong Password';
                            echo "<br>Please go <a href=javascript:history.back(1)>back</a>";
                }

[ Voor 43% gewijzigd door 0fbe op 04-02-2006 17:55 ]


  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 23:31

--MeAngry--

aka Qonstrukt

Verwijderd schreef op zaterdag 04 februari 2006 @ 17:51:
Hmm dus je bedoelt dat ik setcookie moet gebruiken voor dat ik de informatie van de form verstuur ?
:?

Zou een van jullie misschien kunnen laten zien hoe dat in bovenstaande code verwerkt zou moeten worden ?
Nee, setcookie gebruik je om bijvoorbeeld het sessie-id op te slaan van de sessie waar de huidige gebruiker inzit. Maar die wordt meestal al automatisch geset.
Je kunt setcookie overigens prima gebruiken van naam + login om later weer gewoon verder te kunnen gaan met dezelfde gegevens als de sessie verlopen is.

Tesla Model Y RWD (2024)


Verwijderd

Topicstarter
timcooijmans schreef op zaterdag 04 februari 2006 @ 17:53:
[...]

Je mag niet echo-en of printen voor dat je cookies verzend...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$username = $_POST['username'];
$password = $_POST['password'];

if ($password == $pass) 
                {
setcookie ("pass", $password,time()+3600);
setcookie ("username", $username,time()+3600);

                echo 'Welcome ' . $username;

                } 
                else 
                {
                echo 'Wrong Password';
                            echo "<br>Please go <a href=javascript:history.back(1)>back</a>";
                }
Ik moet dus voor de opdracht echo ' welcome' de cookie setten?

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 07:12
Verwijderd schreef op zaterdag 04 februari 2006 @ 17:55:
[...]


Ik moet dus voor de opdracht echo ' welcome' de cookie setten?
Yup, als dit het begin van je code is... Je mag geen Http headers/echo's/prints voor deze code hebben. (mag wel in een IF als die niet uitgevoerd wordt)

Verwijderd

Topicstarter
Ok, bedankt voor de info :)
( Ik denk sowieso dat ik het gebruik van cookies achterwege laat, maar ik wou gewoon wat experimenteren ;) )

Verwijderd

Nog een punt waar je op moet letten bij cookies is whitespace, ben ooit eens zo lang in verstrikt geweest |:(

Onderstaande code is fout!
code:
1
2
3
4
<lege regel>
<?php
setcookie(....);
?>


Je mag geen whitespace in het bestand hebben, is namelijk ook output.
Dit is wel goed:
code:
1
2
3
<?php
setcookie(....);
?>


Er staat <lege regel> in omdat GoT hem automatisch weghaalt.

[ Voor 22% gewijzigd door Verwijderd op 04-02-2006 18:32 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Goed, tot zover Cookies 101. ;) Het leren gebruiken van cookies in PHP is dermate van basisniveau dat we hier op GoT verwachten dat je die kennis zelf kan vinden met behulp van Google. Er staan daar dan ook talloze tutorials die alle hier gemaakte fouten uitleggen en vertellen hoe je ze kan vermijden. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.