Avatar billede jps2mt Nybegynder
22. januar 2003 - 22:40 Der er 11 kommentarer og
1 løsning

BIG time cookie problem

Jeg har følgende 3 PHP filer, hvor nummer 2 (login.php) skal oprette nogle cookies...

index.php -->
<?
if (!$loggedin AND !$autologin AND $m != "login") {
?>
<html>
<head>
<title>Oldtimerklubben.dk's medlems sider</title>
</head>
<body background="../images/P906_1920_75pct.jpg" bgcolor="#522118" text="#FFC600" link="#FFC600" vlink="#FFC600" alink="#FFFFFF">
<center><h3><font face="arial,helvetica" color="#FFC600">Medlems login</font></h3>
<form action="login.php" method="post">
<input type="hidden" name="m" value="login">
<table border="1" bordercolor="red">
<tr>
  <td>
  <table border="0">
    <tr>
    <td align="right"><strong>E-Mail:</strong></td>
    <td><input type="text" name="email"></td>
    </tr>
    <tr>
    <td align="right"><strong>Password:</strong></td>
    <td><input type="password" name="password"></td>
    </tr>
    <tr>
    <td align="right"><strong>Autologin:</strong></td>
    <td><input type="checkbox" name="autologin" value="true"></td>
    </tr>
    <tr>
    <td colspan="2" align="center"><input type="submit" value="Log ind"></td>
    </tr>
  </table>
  </td>
</tr>
</table>
</form>
<?
}
?>
</body>
</html>

login.php -->
<?
if (!$loggedin AND $m == "login") {
  require("../include/gen_func.inc.php");

  $result = mysql_query("SELECT COUNT(UID) AS IsThere FROM Medlemmer WHERE EMail = '$email'");
  $row = mysql_fetch_array($result);
  if ($row[IsThere] != "0") {
  $result = mysql_query("SELECT COUNT(UID) AS IsThere FROM Medlemmer WHERE (EMail = '$email' AND Kode = '$password')");
  $row = mysql_fetch_array($result);
  if ($row[IsThere] != "0") {
    $result = mysql_query("SELECT * FROM Medlemmer WHERE (EMail = '$email' AND Kode = '$password')");
    $row = mysql_fetch_array($result);

    setcookie ("loggedin");
    setcookie ("loggedin","true",time()+600);
    if ($autologin == "true") {
    setcookie ("autologin");
    setcookie ("autologin","true",time()+360000000);
    setcookie ("uid");
    setcookie ("uid",$row[UID],time()+360000000);
    } else {
    setcookie ("autologin");
    setcookie ("autologin","false",time()+600);
    setcookie ("uid");
    setcookie ("uid",$row[UID],time()+600);
    }
    header("location: front.php");
  } else {
    echo "<html>\n";
    echo "<head>\n";
    echo " <title>Oldtimerklubben.dk's medlems sider</title>\n";
    echo "</head>\n";
    echo "<body background=\"../images/P906_1920_75pct.jpg\" bgcolor=\"#522118\" text=\"#FFC600\" link=\"#FFC600\" vlink=\"#FFC600\" alink=\"#FFFFFF\">\n";
    echo "<center><h3><font face=\"arial,helvetica\" color=\"#FFC600\">Password fejl</font></h3>\n";
    echo "Du indtastede et forkert password, prøv igen.<br><br>\n";
    echo "<a href=\"java script:history.go(-1);\">Tilbage</a>\n";
  }
  } else {
    echo "<html>\n";
    echo "<head>\n";
    echo " <title>Oldtimerklubben.dk's medlems sider</title>\n";
    echo "</head>\n";
    echo "<body background=\"../images/P906_1920_75pct.jpg\" bgcolor=\"#522118\" text=\"#FFC600\" link=\"#FFC600\" vlink=\"#FFC600\" alink=\"#FFFFFF\">\n";
    echo "<center><h3><font face=\"arial,helvetica\" color=\"#FFC600\">Forkert E-Mail</font></h3>\n";
    echo "E-Mail adressen du indtastede er ikke en kendt E-Mail, prøv igen.<br><br>\n";
    echo "<a href=\"java script:history.go(-1);\">Tilbage</a>\n";
  }
}
?>

front.php -->
<?
if (!$loggedin) {
  header("location: /medlem");
}

require("../include/gen_func.inc.php");

$result = mysql_query("SELECT * FROM Medlemmer WHERE UID = '$uid'") or print mysql_error();
$row = mysql_fetch_array($result);
?>
<html>
<head>
<title>Oldtimerklubben.dk's medlems sider</title>
</head>
<body background="../images/P906_1920_75pct.jpg" bgcolor="#522118" text="#FFC600" link="#FFC600" vlink="#FFC600" alink="#FFFFFF">
<center><h3><font face="arial,helvetica" color="#FFC600">Medlems forsiden</font></h3>
Du er logget ind som <strong><?= $row[Nick]; ?></strong><br>
<small><a href="logout.php">Log ud</a></small></center>
<?= $uid; ?>
</body>
</html>

Det mest spooky af det hele er at jeg på et andet site, på samme server, har et script der benytter cookies på sammen måde men som virker...

Kan nogle af jer se hvad fejlen skulle være??
Avatar billede _darkstar_ Nybegynder
22. januar 2003 - 23:09 #1
Hvad med at beskrive hvad problemet egentlig er?
Avatar billede miraculix Nybegynder
22. januar 2003 - 23:39 #2
Så vidt jeg kan sættes cookies korrekt, men der er noget mærkeligt ved din if () i index.php. Hvis brugeren er logget ind, eller hvis autologin er sat eller hvis m-parameteren er 'login' vises: ingenting!
Avatar billede jps2mt Nybegynder
22. januar 2003 - 23:43 #3
miraculix >> Det skal du ikke tage dig af...Det er fordi index.php ikke er helt færdig kodet endnu...Men vil lige have det her cookie-sjov til at virke, før jeg laver resten...

_darkstar_ >> Sorry...Den vil ikke lave nogen cookie på disken...
Avatar billede miraculix Nybegynder
23. januar 2003 - 00:16 #4
Hmm. Jeg har pastet dine sider ind og kørt dem. De virker fint. (Cookies sættes).

Der er et par muligheder:
1) Du kører ikke tilfældigvis siden i en frame eller sådan noget vel?
2) Jeg har måttet kommentere din mysql kode ud (jeg har jo ikke din database), så måske er det her fejlen lurer?

Prøv at skifte setcookie headerne ud med echo's så du kan se hvad der sker
Avatar billede eky Nybegynder
23. januar 2003 - 08:38 #5
Husk også, at der ikke må være output (fx. blanke) før du sætter dine cookies. (Det ser dog heller ikke ud til at du har det, men det kan jo smutte;-)

Der er vist også forskel på, om du i browserens adresselinie skriver www.ditdomæne.dk eller ditdomæne.dk
Avatar billede jps2mt Nybegynder
23. januar 2003 - 14:48 #6
Jeg har fundet frem til at det er min header("location: front.php"); der laver "lort" i det...Hvad kan man gøre for at løse det?? Kan jo ikke ligefrem sætte den header før jeg sætter cookien, eller hva'??
Avatar billede miraculix Nybegynder
23. januar 2003 - 15:07 #7
Nej, det kan du ikke, men du kan sætte to linieskift ind (\n\n). Det kunne godt hjælpe
Avatar billede jps2mt Nybegynder
23. januar 2003 - 18:55 #8
Hvor skal de linieskift være??
Avatar billede miraculix Nybegynder
23. januar 2003 - 19:59 #9
Efter front.php:

header("location: front.php\n\n");
Avatar billede jps2mt Nybegynder
23. januar 2003 - 21:45 #10
Hmm...Det giver ikke nogen forskel...
Avatar billede jps2mt Nybegynder
23. januar 2003 - 21:52 #11
Hmmm...Så blev det løst...Bruger nu et META tag...
Avatar billede miraculix Nybegynder
23. januar 2003 - 23:08 #12
Jeg skal ikke kunne sige hvad der gik galt. Som sagt virkede den del af din kode fint hos mig...
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