Avatar billede theill Nybegynder
05. marts 2000 - 23:13 Der er 11 kommentarer og
1 løsning

setcookie - jeg KAN ikke finde fejlen

Jeg har nu siddet den sidste time og proevet at finde fejlen i min kode. Problemet er, at min cookie ikke bliver sat overhovedet ... jeg HAR enabled cookies og proever med baade IE og NN.

Jeg har to sider og jeg paster lige det meste af koden:

login.php3 (saetter cookie)
------------------

<script language="php">

    if ( isset($author_name) && isset($author_password) )
    {
        $connection = mysql_connect("localhost", "root");
        $db = "mnsp";
       
        $result = mysql_db_query($db, "SELECT id FROM author WHERE name = '$author_name' AND password = '$author_password'", $connection);
        $row = mysql_fetch_array($result);
       
        $id = $row[0];
       
        mysql_free_result($result);
       
        if (!empty($id))
        {
            setcookie("author", "$id", time()+3600);
           
            // found user - we need to redirect to another page.
            Header("Location: index.php3");
            exit;
        }
    }
   
</script>
<html>

<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/default.css">
</head>

<body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>
<table border="0" width="100%" cellspacing="0" cellpadding="0" valign="BOTTOM" align="center" bgcolor="#9C9689">
<tr>
    <td width="50%">&nbsp;</td>
    <td width="580"><a href="index.php3"><img src="images/top.gif" border=0 width="580" height="44"></a></td>
    <td width="50%">&nbsp;</td>
</tr>
<tr>
    <td width="50%">&nbsp;</td>
    <td width="580" bgcolor="#CEC6B3" align="right" class="navigation"><img border="0" src="images/spacer.gif" width="10" height="10"></td>
    <td width="50%">&nbsp;</td>
</tr>
</table>
  <table border="0" width="580" cellpadding="0" bgcolor="#E0DACA" cellspacing="0" align="center">
    <tr>
      <td width="10"><img border="0" src="images/spacer.gif" width="10" height="10"></td>
      <td width="560"><img border="0" src="images/spacer.gif" width="10" height="10"></td>
      <td width="10"><img border="0" src="images/spacer.gif" width="10" height="10"></td>
  </tr>
    <tr>
      <td width="10">
        <img border="0" src="images/spacer.gif" width="10" height="10"></td>
      <td width="560">
        <p align="justify"></p>
        <p align="justify">
        </p>
        <form method="POST" action="login.php3">
          <table border="0" width="100%" cellspacing="0" cellpadding="4">
            <tr>
              <td width="50%" align="right">navn</td>
              <td width="50%"><input type="text" name="author_name" size="20"></td>
            </tr>
            <tr>
              <td width="50%" align="right">password</td>
              <td width="50%"><input type="password" name="author_password" size="20"></td>
            </tr>
            <tr>
              <td width="50%" align="right"></td>
              <td width="50%"><input type="submit" value="login" name="B1"></td>
            </tr>
          </table>
        </form>
        <p align="justify">
        </p>
        <p align="justify">
        &nbsp;</p>
        <p align="justify">
        &nbsp;</p>
        <p align="justify" class="copyright"><a
        href="mailto:webmaster@mnsp.f2s.com">webmaster@mnsp.f2.com</a> - <img src="images/spacer.gif" width="1" height="4">copyright
        ©2000 mnsp.f2s.com</p>
      </td>
      <td width="10"><img border="0" src="images/spacer.gif" width="10" height="10"></td>
  </tr>
    <tr>
      <td width="10" bgcolor="#C0BAAD"><img border="0" src="images/curve_bottomleft.gif" width="10" height="10"></td>
      <td width="560"><img border="0" src="images/spacer.gif" width="10" height="10"></td>
      <td width="10" bgcolor="#C0BAAD"><img border="0" src="images/curve_bottomright.gif" width="10" height="10"></td>
  </tr>
  </table>
</body>

</html>



index.php3 (laeser cookie)
-------------------------------

<script language="php">
   
    if (!isset($author))
    {
        Header("Location: login.php3");
        exit;
    }
   
</script>
<html>

<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/default.css">
</head>

<body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>
<script language="php">

    printf("<h1>&nbsp;: ".$author." :&nbsp;</h1>");

</script>

---

Er der nogen, der kan gennemskue problemet i ovenstaaende?
Avatar billede macfat Nybegynder
05. marts 2000 - 23:45 #1
har du prøvet at fjerne "" omkring $id i setcookie() ??

// Macfat
Avatar billede erikjacobsen Ekspert
06. marts 2000 - 08:47 #2
Det gør ingen forskel MacFat. Men, Theill, er
du sikker på at du ingen HTML skriver ud før
dit script der sætter cookien. Heller ingen
blanke linier?
Avatar billede theill Nybegynder
06. marts 2000 - 09:05 #3
macfat >> Ja, jeg har ogsaa proevet at fjerne "" - intet resultat som erikjacobsen siger :o(

erikjacobsen >> Ja, jeg er sikker paa, der ikke skrives noget ud inde, da jeg har kopieret HELE min login.php3 side ind i ovenstaaende....der starter jeg med '<script lan...>' og foerste gang jeg udskriver noget er foerst efter '</script>'.

Kan det have nogen betydning, at jeg bruger '<script la..' i stedet for '<?php' eller lign? Jeg bruger udelukkende <scrip..> fordi jeg gerne vil kunne aendre i mine php3 sider via FrontPage.
Avatar billede vildmule Nybegynder
06. marts 2000 - 15:51 #4
prøv denne her :o)

setcookie("author", "$id", time()+3600,"/", $server_name);
           
Avatar billede theill Nybegynder
06. marts 2000 - 16:17 #5
Jeg har proevet ovenstaaende, da jeg laeste at IE (3 eller 4) havde problemer med cookies der angives UDEN en path.

Dog skal man vel definere '$server_name' eller bliver den automatisk sat af PHP parseren? Jeg saa et eksempel, hvor man skulle lave en 'getEnv(SERVER_NAME)' eller lign.

Jeg vil dog alligevel proeve det naar jeg kommer tilbage til min egen maskine om et par timer.
Avatar billede theill Nybegynder
06. marts 2000 - 18:14 #6
vildmule >> det virkede desvaerre heller ikke :o(

Jeg har ogsaa lige proevet at erstattet '<script language="php">' med '<?php' men det havde heller ingen betydning.
Avatar billede erikjacobsen Ekspert
06. marts 2000 - 19:33 #7
Jeg kan heller ikke finde fejlen. Jeg har kopieret det meste
af din kode, og det virker fint på min lokale win 95 apache.
Jeg kan genfinde cookien på harddisken. Jeg har blot
kommenteret alt om mysql ud, og sat $id til en sjov værdi.

Hvis din server og din klient er uenige om tiden, kan der vel
ske noget, så prøv at sætte cookien med en meget stor tid,
f.eks. 100000 sekunder.
Avatar billede theill Nybegynder
06. marts 2000 - 22:23 #8
Hmm - det var da maerkeligt. Tror I, det kan have betydning, at jeg koerer PHP paa en IIS5.0 (paa Windows 2000)?

Jeg MENER dog, jeg fik den til at gemme (og genfinde) min cookie paa et tidspunkt i gaar (efter jeg havde leget meget med problemet), men saa lige pludselig, virkede det ikke igen.

Jeg proevede ogsaa lige for sjovt at slette al min db-kode og bruge en hardcoded vaerdi i min $id ... dog ingen virkning :o<
Avatar billede tfylliv Nybegynder
06. marts 2000 - 23:14 #9
Der har været nogle problemer med at bruge set_cookie() og Header("loca...") i den samme fil, fordi cookien ikke blev sat p.g.a af redirection'en fra Header().

Prøv at tage et kig på:

http://www.php.net/manual/function.setcookie.php3

Nederst på siden under "User contributed notes" (kan godt være lidt dvært at finde).
Avatar billede theill Nybegynder
06. marts 2000 - 23:49 #10
Okay, det ser ud til, der er rigtig mange problemer med en saa simpel ting, som at saette en cookie i PHP. Jeg troede sgu' det var en smule mere gennemarbejdet - hmm; vi maa haabe det er fikset tilfredstillende i PHP4 .. det staar der i hvert fald flere steder.

Anyhow, jeg aendrede lidt paa mit flow, saa jeg _ikke_ saetter en cookie og derefter redirecter. Lidt aergeligt, at man ikke kan gruppere logisk relaterede funktioner paa samme side :o(
Avatar billede lysalf Nybegynder
03. juli 2001 - 02:18 #11
theill --> Tror I, det kan have betydning, at jeg koerer PHP paa en IIS5.0 (paa Windows 2000)?
Jeg har præcist det samme problem, med samme opsætning. php4.0.6 og iis5.0/win2000. Så jeg er med på en lytter !!

Avatar billede erikjacobsen Ekspert
03. juli 2001 - 08:48 #12
Joh, men det er da ikke et problem på en Apache server  -  så vidt jeg ved
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