Multidesk.be » Forums » PHP » Error bij sessies en cookies (gesloten)

Helpinformatie
Dit onderwerp werd gesloten.
Het is bijgevolg niet mogelijk er nog op te reageren.
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door Ezio op dinsdag 1 juli 2014 om 21:08:05.
Ezio's avatar
Multiviteit: 973
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik ben momenteel wat aan het experimenteren met sessies en cookies in PHP. Hieronder mijn code waar een teller bewaard wordt in een sessie.
PHP
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>Bestelformulier</title>
  7. </head>
  8.  
  9. <body>
  10.  
  11. <?php
  12. if (isset($_SESSION['teller']) == false) { //Bestaat de sessievariabele niet?
  13.         $_SESSION['teller'] = 0; //Dan wordt hij op 0 gezet
  14. } else {
  15.         $_SESSION['teller']++; //Als hij wel al bestaat, wordt hij verhoogd met 1
  16. }
  17. echo "U heeft deze pagina". $_SESSION['teller']." keer bezocht :)";
  18. ?>
  19.  
  20. </body>
  21. </html>
  22.  


Bij het uitvoeren krijg ik echter volgende error:
CODE
  1. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/thibacq113/domains/thibaultseynaeve.be/public_html/php/teller.php:10) in /home/thibacq113/domains/thibaultseynaeve.be/public_html/php/teller.php on line 11


Dit betekent volgens mij dat de HTTP header reeds verstuurd is, waardoor het dus niet meer mogelijk is de sessie te wijzigen. De error zegt dat de output reeds plaatsvindt bij 'Session_Start();'. Vreemd, ik dacht dat dit juist in het begin van het PHP-bestand moest? :)
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #1 geschreven door thekid op dinsdag 1 juli 2014 om 21:58:10.
thekid's avatar
Multiviteit: 5273
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Je html staat voor je php ;)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door Ezio op woensdag 2 juli 2014 om 19:17:26.
Ezio's avatar
Multiviteit: 973
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Aaah, logisch dat het dan niet wou werken :) Nu werkt het wel, thx!
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #3 geschreven door thekid op woensdag 2 juli 2014 om 19:45:08.
thekid's avatar
Multiviteit: 5273
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ter info, als je mysql injections tegen wenst te gaan op php :)

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php

een beetje lezen kan geen kwaad :D
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #4 geschreven door Cdude op woensdag 2 juli 2014 om 19:50:53.
Cdude's avatar
Multiviteit: 5427
Eat my shorts :)
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid

Dixit

Dixit thekid op 01/07/2014 21:58:10:

Je html staat voor je php ;)

Puur uit interesse : is er een hiŰrarchische orde?
Linkje mag ;)
http://www.designerstalk.com/forums/web-development/65395-should-all-php-performed-before-html.html

Interessant die 'how to prevent...' (thumbsup)
Deze tekst werd het laatst bewerkt voor 7.07 % door Cdude op woensdag 2 juli 2014 om 19:53:59.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe."
"Friendship is like peeing in your pants : everybody can see it but only u can feel it's warmth"
^ Reactie #5 geschreven door Ezio op woensdag 2 juli 2014 om 23:24:49.
Ezio's avatar
Multiviteit: 973
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Vind het momenteel nog wat ingewikkeld, die sql injection tegengaan. Maar zal er later - wanneer ik wat verder gevorderd ben in mijn boek - zeker op terugkomen! Het is immers een 'must-know' :)

@cdude: ik weet alleen dat bij het werken met sessions en cookies, je session of cookie aangemaakt moet worden vˇˇr er output plaatsvindt. In dit geval HTML output ^^
Deze tekst werd het laatst bewerkt voor 30.58 % door Ezio op woensdag 2 juli 2014 om 23:26:39.
I'm a gamer because I don't have a life... I've chosen to have many
^ Reactie #6 geschreven door Cdude op donderdag 3 juli 2014 om 14:18:04.
Cdude's avatar
Multiviteit: 5427
Eat my shorts :)
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
thanx
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe."
"Friendship is like peeing in your pants : everybody can see it but only u can feel it's warmth"
^ Reactie #7 geschreven door thekid op donderdag 3 juli 2014 om 19:39:21.
thekid's avatar
Multiviteit: 5273
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
wel, van gebruik zelf vind ik dat je alles wat security, gebruiker settings, thema's aangaat zet je best separaat van je werkelijke html data, zodat alles vooraf geregeld is en bekend is in de rest van de site.

het include model van php bied ook deze mogelijkheid heel goed aan
dit is bvb mijn index.php bestand op mijn pa's website

PHP
  1. <?
  2. require_once("dataconn.php");
  3. require_once("person.php");
  4. require_once("artikels.php");
  5. require_once("stock.php");
  6.  
  7. // Open database
  8. dataconn::Connect();
  9. $loggedIn = false;
  10. $currentUser = new Persoon();
  11. if (isset($_SESSION['loggedUser']))
  12. {
  13.         $currentUser = unserialize($_SESSION['loggedUser']);
  14.         $loggedIn = true;
  15. }
  16. $page = $_GET['page'] != '' ? intVal($_GET['page']) : 0;
  17. $category = $_GET['category'] != '' ? intVal($_GET['category']) : -1;
  18. $article = $_GET['article'] != '' ? intVal($_GET['article']) : -1;
  19. $filter = $_GET['filter'] != '' ? $_GET['filter'] : ($_POST['filter'] != '' ? $_POST['filter'] : '');
  20. $curpage = $_GET["curpage"] != "" ? intVal($_GET["curpage"]) : 0;
  21. include "template.php";
  22.  
  23. // Close database
  24. dataconn::Disconnect();
  25. ?>

Opmerking van de crew

En dan bij deze ook een slotje
thekid
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten