login  Naam:   Wachtwoord: 
Registreer je!
 Forum

cookie werkt niet op hele domein

Offline GroundZero - 21/10/2013 14:52 (laatste wijziging 21/10/2013 14:53)
Avatar van GroundZeroLid Beste,

mijn index pagina include een "automatisch inloggen" pagina. Als je hier op komt word er gekeken of alles klopt, zo ja word er een cookie geplaatst.

Echter na het doorsturen blijkt het cookie niet gelezen te kunnen worden terwijl ik wel heb gezegd dat deze op het hele domein beschikbaar moet zijn.

Heeft iemand een idee wat er fout zit?

  1. if(setcookie('d8dating', $fetch['email'].'|'.$logcode, time() + 60*60*24*365, '/'))
  2. {
  3. header('location: '.ROOT.'portaal/');
  4. }
  5. else
  6. {
  7. echo 'Automatisch inloggen is mislukt!';
  8. }

6 antwoorden

Gesponsorde links
Offline Martijn2008 - 21/10/2013 18:07
Avatar van Martijn2008 PHP beginner Met de php-code uit je vorige bericht plaats je een cookie. Hoe lees je de cookie uit?
Offline GroundZero - 21/10/2013 21:06
Avatar van GroundZero Lid op de index explode ik hem. zet ik die cookie via mijn index dan werkt het perfect, zet ik hem via een pagina die geinclude word in de index dan werkt het niet.

De code die bovenaan de pagina van mijn index staat zou geen conflict mogen geven lijkt mij...

  1. <?php
  2. //error_reporting(E_ALL);
  3. //ini_set('display_errors', '1');
  4.  
  5.  
  6. require_once('includes/config.php');
  7.  
  8. if(isset($_COOKIE['mijnWebsite']) && verifyLogin($_COOKIE['mijnWebsite']) == 1){
  9. $aUser = explode("|", $_COOKIE['mijnWebsite']);
  10. $aUserid = getIdFromData($aUser[0], $aUser[1]);
  11.  
  12. if(ongelezenBerichten($aUserid) == 0){
  13. $hmum = '';
  14. } else {
  15. $hmum = ongelezenBerichten($aUserid);
  16. }
  17.  
  18. // save last movement
  19. $aUser = explode("|", $_COOKIE['mijnWebsite']);
  20. $aUserid = getIdFromData($aUser[0], $aUser[1]);
  21.  
  22. mysql_query('UPDATE site_gebruikers
  23. SET
  24. actief = NOW()
  25. WHERE
  26. id = "'.mysql_real_escape_string($aUserid).'"');
  27.  
  28. // check if a profile photo has been uploaded
  29. /*
  30. if(!isset($_GET['pagina']) || $_GET['pagina'] != 'geregistreerd')
  31. {
  32. $aPicture = mysql_query('SELECT id FROM site_fotos
  33. WHERE
  34. gebruikers_id = "'.mysql_real_escape_string($aUserid).'"');
  35. $aRows = mysql_num_rows($aPicture);
  36.  
  37. if($aRows == 0 && $_GET['pagina'] != 'nog-geen-profielfoto'){
  38. ob_clean();
  39. header('location: '.ROOT.'nog-geen-profielfoto/');
  40.  
  41. }
  42. }
  43. */
  44.  
  45. if(isset($_COOKIE['mijnWebsite']) && verifyLogin($_COOKIE['mijnWebsite']) == 1 && !isset($_GET['pagina']))
  46. {
  47. header('location: '.ROOT.'portaal/');
  48. }
  49. }
  50.  
  51. if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['formulier']) && $_POST['formulier'] == 'inloggen')
  52. {
  53. $error = 0;
  54. $logcode = mktime();
  55.  
  56. $query = mysql_query('SELECT id FROM site_gebruikers
  57. WHERE
  58. email = "'.mysql_real_escape_string($_POST['email']).'"
  59. AND
  60. wachtwoord = "'.mysql_real_escape_string(sha1($_POST['wachtwoord'])).'"');
  61. $rows = mysql_num_rows($query);
  62.  
  63. if($rows == 1)
  64. {
  65. $laatste_ip = $_SERVER['REMOTE_ADDR'];
  66. $laatste_agent = $_SERVER['HTTP_USER_AGENT'];
  67. $laatste_host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
  68.  
  69. if(mysql_query('UPDATE site_gebruikers SET
  70. logcode = "'.mysql_real_escape_string($logcode).'",
  71. laatste_ip = "'.mysql_real_escape_string($laatste_ip).'",
  72. laatste_agent = "'.mysql_real_escape_string($laatste_agent).'",
  73. laatste_host = "'.mysql_real_escape_string($laatste_host).'"
  74. WHERE
  75. email = "'.mysql_real_escape_string($_POST['email']).'"
  76. AND
  77. wachtwoord = "'.mysql_real_escape_string(sha1($_POST['wachtwoord'])).'"'))
  78. {
  79. setcookie('mijnWebsite', $_POST['email'].'|'.$logcode, time() + 60*60*24*365, '/');
  80. header('location: '.ROOT.'portaal/');
  81. }
  82. else
  83. {
  84. $error = 'Er is iets fout gegaan met het inloggen!';
  85. }
  86. }
  87. else
  88. {
  89. $error = 'Geen geldige login gegevens! <a href="'.ROOT.'wachtwoord-vergeten/" title="Wachtwoord vergeten?">wachtwoord vergeten?</a>';
  90. }
  91. }
  92. ?>
Offline Thomas - 21/10/2013 22:44
Avatar van Thomas Moderator Mogelijk gooit code na je header('Location: ...') roet in het eten?

Ik zie namelijk geen exit() na je header()?

  1. <?php
  2. if ($some_condition) {
  3. // set some vars
  4. // ...
  5. // redirect
  6. header('Location: ...');
  7. }
  8. // DE CODE HIER WORDT GEWOON UITGEVOERD OMDAT NA JE header() HET SCRIPT NIET BEEINDIGD WORDT MET exit();
  9. // ...
  10. // PAS AAN HET EINDE VAN JE CODE WORDEN DE HEADERS "UITGEVOERD" EN WORD JE GEREDIRECT
  11. ?>


Probeer dit maar eens uit met een teller-variable om dit gedrag te testen.
Offline GroundZero - 21/10/2013 23:31 (laatste wijziging 21/10/2013 23:47)
Avatar van GroundZero Lid klopt, moet dat dan een exit er na? want ik wil toch redirecten naar een andere pagina en vanaf header() word er geredirect dus code erna word toch niet uitgevoerd?

Zal het eens proberen wie weet haha ;)

EDIT: geprobeerd maar helpt ook niet helaas 
EDIT: Na 50x op refresh gedrukt te hebben werkt het nu wel, dankjewel!!! weer iets bijgeleerd ;)
Offline Thomas - 21/10/2013 23:43 (laatste wijziging 21/10/2013 23:46)
Avatar van Thomas Moderator
GroundZero schreef:
klopt, moet dat dan een exit er na? want ik wil toch redirecten naar een andere pagina en vanaf header() word er geredirect dus code erna word toch niet uitgevoerd?


Volgens mij niet . Of ik moet er naast zitten.

test maar eens zoiets (ff uit mijn hoofd, kan hier niet zo snel testen):
  1. <?php
  2. if (!isset($_GET['noredir'])) {
  3. $_SESSION['teller'] = 1;
  4. header('Location: '.$_SERVER['PHP_SELF'].'?noredir=1'); // anders oneindige loop
  5. }
  6.  
  7. $_SESSION['teller']++;
  8. echo $_SESSION['teller'];
  9. ?>


Als je dit script aanroept is $_SESSION['teller'] na afloop 3 (denk ik) omdat de teller ook 1x wordt opgehoogd voordat er daadwerkelijk geredirect wordt (wat een bewijs is dat er code wordt uitgevoerd nadat header() wordt aangeroepen). Als je exit() na de header() gebruikt zal er 2 afgedrukt worden.

DENK IK 

EDIT: De constructie if(setcookie()) is sowieso raar en zou ik niet gebruiken. Heb je dat al gedebugged? PHP.net zegt dat setcookie false retourneert als er al output is verstuurd, maar dat vang jij af met met ob_start(). Dus misschien wordt er toch een cookie geset terwijl setcookie false teruggeeft? Haal voor de gein eens ob_start weg?
Offline marten - 22/10/2013 09:27
Avatar van marten Beheerder Als een antwoord iets heeft opgelost. Graag op de oplossing knop klikken bij het betreffende antwoord. Dan worden de betreffende mensen bedankt met punten en met de eer natuurlijk
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.209s