Avatar billede aslan Nybegynder
25. oktober 2001 - 09:22 Der er 57 kommentarer og
1 løsning

problemer med sessions

jeg har øverst på index siden:
<?php

    session_start();
    session_register(\"username\"); 

?>
og så har jeg formen:
<form action=\"login.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"username\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
-----------------------------------------------------
Så på en anden side vil jeg gerne bruge den session og jeg har øverst:
<?php 
session_start();
?>

oxo en masse html hvorefter jeg har:

<?php
$connection = mysql_connect(\"localhost\",
                            \"xxxxx\",
                            \"xxxxx\");
mysql_select_db(\"xxxxxxx\", $connection);

$ip = $REMOTE_ADDR;

$insertSQL = \"insert into A(tid,ip,nick,roster)
              values (now(),\'$ip\',\'$username\',\'$b\')\";
mysql_query($insertSQL);

$result = mysql_query(\"SELECT * FROM A ORDER BY tid DESC  \");
while ($row = mysql_fetch_array($result)) {
  echo \"<B>\".$row[\"nick\"].\"</B>\".\"-\".$row[\"roster\"].\" \".\"-\".\" \".$row[\"tid\"].\"<br>\";
}
?>
Men den giver fejl den siger:
Warning: Cannot send session cache limiter - headers already sent (output started at /www/docs/users/geisha/asignup.php:3) in /www/docs/users/geisha/asignup.php on line 4

hvor går jeg galt ??
Avatar billede limemedia Nybegynder
25. oktober 2001 - 09:27 #1
i linie 3 blev der skrevet blot et space eller lign til browseren. Du må intet skrive til browseren før du opretter din session. Akkurat som med andre headers og cookies !!!
Avatar billede aslan Nybegynder
25. oktober 2001 - 09:28 #2
ljweb gamle dreng gider du at uddybe, som du har gjort så mange før til mig?
Avatar billede christian Nybegynder
25. oktober 2001 - 09:29 #3
Det tyder på at \"<?\" ikke er helt oppe i toppen af dokumentet! det skal være det første den læser

dette giver fejl
side.php
---------------------

<?
session_start();
?>

<b>asdasd</b>
---------------------

dette giver ikke fejl:
-------------------------
<?
session_start();
?>

<b>asdasd</b>

-------------------

Kan du se hvad jeg mener?
ligeså snart der kommer et mellemrum eller lign. så sender den noget til browseren, og når du er begyndt på det, så kan du ikke sætte en session eller cookie, eller sende andre headers afsted
Avatar billede uller Nybegynder
25. oktober 2001 - 09:38 #4
christian -> det giver fejl for du har en blank linie mellem \"<?\" og <b>

dette giver fejl
side.php
---------------------

<?
session_start();
?>

<b>asdasd</b>
---------------------

dette giver ikke fejl:
-------------------------
<?
session_start();
?>
<b>asdasd</b>

-------------------
Avatar billede oetting Nybegynder
25. oktober 2001 - 09:38 #5
Hej

Jeg mener at du skal skriv:
session_register(\"username\");
på alle sider hvor du vil bruge din session var.

Venlig hilsen
Jacob Oettinger
Avatar billede christian Nybegynder
25. oktober 2001 - 09:41 #6
Du skal IKKE skrive:
session_register(\"username\");

På alle sidde du vil bruge din session,
hvis du skal det går det jo lidt tabt at bruge session
Avatar billede aslan Nybegynder
25. oktober 2001 - 09:41 #7
jep det har jeg rettet og den giver den ikke fejl mere,men nu reagere filen heller ikke på sessionen dvs den ser ikke username?
Avatar billede christian Nybegynder
25. oktober 2001 - 09:45 #8
Jeg har lige testet:

--------------

<?
session_start();
?>


---------------
Warning: Cannot send session cache limiter - headers already sent (output started at D:\\webs\\test\\test.php:2) in D:\\webs\\test\\test.php on line 3

og:
----------------
<?
session_start();
?>


---------------

giver ikke fejl
Avatar billede christian Nybegynder
25. oktober 2001 - 09:45 #9
Det er fordi du sætter din session forkert
Avatar billede uller Nybegynder
25. oktober 2001 - 09:46 #10
hvis du skal bruge $username inde i en anden funktion skal du registrere den som global...

function flaff() {
global $username;
...
}
Avatar billede uller Nybegynder
25. oktober 2001 - 09:48 #11
christian -> du har ret, jeg var lidt for hurtigt ude..

du har jo sendt header informationerne i linie 2 og 3 og kan derfor godt tillade dig at have en newline mellem \"<?\" og \"<b>\".
Avatar billede christian Nybegynder
25. oktober 2001 - 09:51 #12
Dette virker hos mig:

test.php:
-----------------------------
<?php
    session_start();
    session_register(\"username\"); 
?>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
    <title></title>
</head>
<body>
og så har jeg formen:
<form action=\"test.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"username\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
<a href=\"test2.php\">asdsad</a>
</body>
</html>
-------------------------------

test2.php:
-------------------------------
<?
session_start();
?>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
    <title></title>
</head>
<body>
<?
echo\"$username\";
?>
</body>
</html>
------------------------------
Avatar billede christian Nybegynder
25. oktober 2001 - 09:52 #13
Altså jeg tog fejl før, du sætter din session rigtig...
Avatar billede aslan Nybegynder
25. oktober 2001 - 10:00 #14
prøv at hør den giver heller ikke fejl nu,problemet er når jeg skal bruge sessionen i en anden funktion hvordan gør jeg det:
<?php
session_start();
global $username;
session_register(\"username\");
?>

og :
<?php
session_start();
global $username;
?>

Eller hvad gør jeg ???

Avatar billede aslan Nybegynder
25. oktober 2001 - 10:01 #15
problemmet er at formen på siden ikke reagere på username den viser tomt!!
Avatar billede christian Nybegynder
25. oktober 2001 - 10:10 #16
hvis du skal bruge den i en funktion:

<?

function test() {
  global $username;
  echo\"$username\";
}

?>
Avatar billede aslan Nybegynder
25. oktober 2001 - 10:17 #17
ok jeg er slet ikke med her !! den variabel jeg skaber som er username vil jeg gerne bruge i andre filer så bl.a brugere ikke behøver at skrive deres bruger navn ned hele tiden men kune en gang som er i index hvordan gør jeg det plz forklar så det er til at forstå??For som tingene er nu reagere siderne ikke på variablen username!
Avatar billede christian Nybegynder
25. oktober 2001 - 10:49 #18
Hvis du har fået registreret din session rigtig skulle der ikke være nogle problemmer, så er det eneste du skal lave er:
session_start();

i toppen af alle sider
så skulle du sagtens kunne bruge dine session variabler

Ved du hvornår det går galt?
det eksempel som jeg lavede længre oppe, det virker altså fint, kan du ikke bruge det
Avatar billede christian Nybegynder
25. oktober 2001 - 10:50 #19
du skal ikke bruge global

den er kun hvis du laver en funktion, og det gør du ikke
Avatar billede aslan Nybegynder
25. oktober 2001 - 10:57 #20
jeg har øverst på index siden:
<?php
session_start();
session_register(\"username\"); 
?>
<html>
og så har jeg formen:
<form action=\"login.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"username\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
-----------------------------------------------------
Så på en anden side vil jeg gerne bruge den session og jeg har øverst:
<?php 
session_start();
?>
<html>
oxo en masse html hvorefter jeg har:

<?php
$connection = mysql_connect(\"localhost\",
                            \"xxxxx\",
                            \"xxxxx\");
mysql_select_db(\"xxxxxxx\", $connection);

$ip = $REMOTE_ADDR;

$insertSQL = \"insert into A(tid,ip,nick,roster)
              values (now(),\'$ip\',\'$username\',\'$b\')\";
mysql_query($insertSQL);

$result = mysql_query(\"SELECT * FROM A ORDER BY tid DESC  \");
while ($row = mysql_fetch_array($result)) {
  echo \"<B>\".$row[\"nick\"].\"</B>\".\"-\".$row[\"roster\"].\" \".\"-\".\" \".$row[\"tid\"].\"<br>\";
}
?>
når jeg afprøver de her sider får jeg ingen fejl men side 2 reagere ikke på sessionen dvs den udskriver ikke nick som jeg vil have den til men kun roster og tid??
Avatar billede aslan Nybegynder
25. oktober 2001 - 10:59 #21
Kan du følge mig det er meget irreterende når man kan få alt andet til at passe men ikke session som skulle være simpelt at sætte op!
Avatar billede christian Nybegynder
25. oktober 2001 - 11:00 #22
prøv lige efter du laver session_start();
at udskrive $username
<?php 
session_start();
echo\"$username\";
?>

og eventuelt som det sidste på siden:
<?
echo\"$username\";
?>
Avatar billede aslan Nybegynder
25. oktober 2001 - 11:04 #23
well den skriver ikke username så der et eller andet galt med session!!
Avatar billede aslan Nybegynder
25. oktober 2001 - 11:08 #24
Men når jeg linker til test og lægger :
<?
echo\"$username\";
?>
ind så virker session??
Avatar billede aslan Nybegynder
25. oktober 2001 - 11:09 #25
så jeg må lave et eller andet galt inde på side 2!
Avatar billede christian Nybegynder
25. oktober 2001 - 11:11 #26
Okay,

lav login således:
<?php
session_start();

if (isset($brugernavn)) {
  $username = $brugernavn;
  session_register(\"username\");
}
?>
<html>
og så har jeg formen:
<form action=\"login.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"brugernavn\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
Avatar billede aslan Nybegynder
25. oktober 2001 - 11:20 #27
nej det virker heller ikke
Avatar billede christian Nybegynder
25. oktober 2001 - 11:22 #28
hvordan linker du til den anden side?
Avatar billede aslan Nybegynder
25. oktober 2001 - 11:29 #29
først ryger man ind på en loginside hvor hvor username og password bliver tjekket:
  $result = mysql_query(\"SELECT * FROM members WHERE nick =\'$username\' AND password=\'$password\'\");
  if (mysql_num_rows($result) == 1) {
    header(\"Location: scrimms.php\");
    } else {
        echo \"WRONG NICK OR PASS\";
    }

derefter ryger man ind på scrimms siden hvor man kan skrive sig selv op og det er her jeg vil have at det ikke skal være nødvendig:
  <form name=\"form1\" method=\"post\" action=\"asignup.php\">
      <p><b>ROSTER</b> :
      <input type=\"text\" name=\"b\">
    </p>
    <p>
      <input type=\"submit\" name=\"Submit\" value=\"Submit\">
    </p>
  </form>
hvorefter man så bliver ført til siden ovenover som jeg kalder side 2!!
Avatar billede uller Nybegynder
25. oktober 2001 - 11:40 #30
bruger du cookies eller sender du selv sessionid\'et videre til de andre sider.?

hvis du selv sender sessionid\'et videre skal du huske at lave et hidden felt i din form, hvor value er sessionide\'et...

ex:
echo \'... name=\"PHPSESSID\" value=\"\'.session_id().\'...\";
Avatar billede aslan Nybegynder
25. oktober 2001 - 11:42 #31
uller hvis du lige gider at uddybe hvad jeg skal kalde den hidden field så vil jeg være dig taknemmelig!!
Avatar billede uller Nybegynder
25. oktober 2001 - 11:47 #32
errr... det har jeg gjort...

echo \'<input type=\"hidden\" name=\"PHPSESSID\" value=\"\'.session_id().\'\">\';

skulle gøre trikket..
Avatar billede aslan Nybegynder
25. oktober 2001 - 12:00 #33
no virker ikke
Avatar billede uller Nybegynder
25. oktober 2001 - 12:09 #34
hvis du kigger i html sourcen er der da sadt et sessionid ind i feltet PHPSESSID???
Avatar billede christian Nybegynder
25. oktober 2001 - 12:23 #35
der skulle alstå heller ikke være behov for at bruge PHPSESSID

Hvor bliver du hostet?
Avatar billede aslan Nybegynder
25. oktober 2001 - 12:25 #36
webpunkt og de er med noderne så det tror jeg heller ikke!
Avatar billede aslan Nybegynder
25. oktober 2001 - 12:34 #37
Nu skal i se de sidder jeg lige har sat op og som ikke virker :

index.php:

<?php
session_start();
session_register(\"name\");
?>
<html>
<head>
<title>index</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"B08F87\" text=\"#FFFFFF\" link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">
<div align=\"center\">
  <p><b></b></p>
  <p><img src=\"housestyleLogo.jpg\" width=\"276\" height=\"219\"></p>
<form action=\"login.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"username\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
</div>
</body>
</html>
-------------------------------------------------

login.php:

<?

    $connection = mysql_connect(\"localhost\",
                            \"xxxxx\",
                            \"xxxxx\");
    mysql_select_db(\"geisha\", $connection);

$result = mysql_query(\"SELECT * FROM members WHERE nick =\'$username\' AND password=\'$password\'\");
if (mysql_num_rows($result) == 1) {
header(\"Location: scrimmss.php\");
} else {
  echo \"WRONG NICK OR PASS\";
}
?>
-----------------------------------------------

scrimmss.php:


<?php 
session_start();
?>
<html>
<head>

</head>

<body>
<?php
$connection = mysql_connect(\"localhost\",
                            \"xxxxxxx\",
                            \"xxxxxx\");
mysql_select_db(\"geisha\", $connection);

$ip = $REMOTE_ADDR;
$b = \"shit\";
$insertSQL = \"insert into A(tid,ip,nick,roster)
              values (now(),\'$ip\',\'$name\',\'$b\')\";
mysql_query($insertSQL);
?>
</body>
</html>

ok nu burde der være noget inde på databasen A ,det er der oxo men som sagt så mangler \'name\'
som er jo sessionen, bedøm selv hvad jeg laver forkert
Avatar billede aslan Nybegynder
25. oktober 2001 - 12:40 #38
ups jeg har lige set en fejl
Avatar billede aslan Nybegynder
25. oktober 2001 - 12:44 #39
<?php
session_start();
session_register(\"username\");
?>
<html>
<head>
<title>index</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"B08F87\" text=\"#FFFFFF\" link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">
<div align=\"center\">
  <p><b></b></p>
  <p><img src=\"housestyleLogo.jpg\" width=\"276\" height=\"219\"></p>
<form action=\"login.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"username\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
</div>
</body>
</html>
-------------------------------------------------

login.php:

<?

    $connection = mysql_connect(\"localhost\",
                            \"xxxxx\",
                            \"xxxxx\");
    mysql_select_db(\"geisha\", $connection);

$result = mysql_query(\"SELECT * FROM members WHERE nick =\'$username\' AND password=\'$password\'\");
if (mysql_num_rows($result) == 1) {
header(\"Location: scrimmss.php\");
} else {
  echo \"WRONG NICK OR PASS\";
}
?>
-----------------------------------------------

scrimmss.php:


<?php 
session_start();
?>
<html>
<head>

</head>

<body>
<?php
$connection = mysql_connect(\"localhost\",
                            \"xxxxxxx\",
                            \"xxxxxx\");
mysql_select_db(\"geisha\", $connection);

$ip = $REMOTE_ADDR;
$b = \"shit\";
$insertSQL = \"insert into A(tid,ip,nick,roster)
              values (now(),\'$ip\',\'$username\',\'$b\')\";
mysql_query($insertSQL);
?>
</body>
</html>

ok nu burde der være noget inde på databasen A ,det er der oxo men som sagt så mangler \'name\'
som er jo sessionen, bedøm selv hvad jeg laver forkert 
Avatar billede christian Nybegynder
25. oktober 2001 - 12:49 #40
Jeg kan ikke se hvordan man kommer vidre når man har indtastet brugernavn og password!

Den poster jo til samme side, så du må da have noget mere html på den side?
Avatar billede christian Nybegynder
25. oktober 2001 - 12:49 #41
glem sidste kommentar
Avatar billede christian Nybegynder
25. oktober 2001 - 12:51 #42
din login.php skal se sådan ud:

--------------------------------------
<?
session_start();
session_register(\"username\");

    $connection = mysql_connect(\"localhost\",
                            \"xxxxx\",
                            \"xxxxx\");
    mysql_select_db(\"geisha\", $connection);

$result = mysql_query(\"SELECT * FROM members WHERE nick =\'$username\' AND password=\'$password\'\");
if (mysql_num_rows($result) == 1) {
header(\"Location: scrimmss.php\");
} else {
  echo \"WRONG NICK OR PASS\";
}
?>
----------------------------------


Så nu virker det :-)
Avatar billede aslan Nybegynder
25. oktober 2001 - 12:52 #43
hehe ok kan i se min dilemma der er et eller andet galt men hvad??
Avatar billede christian Nybegynder
25. oktober 2001 - 12:53 #44
virker det ikke nu
Avatar billede christian Nybegynder
25. oktober 2001 - 12:54 #45
Du poster jo til login.php og der sætter du ikke nogen session, så er det jo klart at username ikke indeholder noget
Avatar billede aslan Nybegynder
25. oktober 2001 - 13:02 #46
yyyyeeeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Avatar billede aslan Nybegynder
25. oktober 2001 - 13:03 #47
siger mig jeg er ikke helt med på hvordan det virkede hvor skal jeg sætte:
session_start();
session_register(\"username\");
Avatar billede christian Nybegynder
25. oktober 2001 - 13:05 #48
i login.php
Avatar billede aslan Nybegynder
25. oktober 2001 - 13:06 #49
hehe ja det er jeg klar over men skal jeg skrive det andre steder inde på hjemmesiden?
Avatar billede christian Nybegynder
25. oktober 2001 - 13:08 #50
nej, alle andre steder du vil bruger \"$username\" skriver du bare session_start(); i toppen

Det er på login.php du sætter sessionen $username
og det skal du jo kun gøre engang, så det er kun på denne side du skal bruge session_register(\"username\");
Avatar billede christian Nybegynder
25. oktober 2001 - 13:09 #51
Tak, for point...
Avatar billede aslan Nybegynder
25. oktober 2001 - 13:10 #52
Det er på login.php du sætter sessionen $username <----- jeg troede det var på index siden??
Avatar billede christian Nybegynder
25. oktober 2001 - 13:15 #53
Ja, der ville jeg have valgt at sætte sessionen... men det gør du ikke, da du poster til login.php
Avatar billede aslan Nybegynder
25. oktober 2001 - 13:18 #54
aha jeg er med nu takker mange gange for din hjælp nu er jeg med på noderne:)))
Avatar billede christian Nybegynder
25. oktober 2001 - 13:19 #55
Jeg ville lave det sådan her:

index.php:
-----------------------------------
<?
session_start()

if (isset(brugernavn)) {
$connection = mysql_connect(\"localhost\",
                            \"xxxxx\",
                            \"xxxxx\");
    mysql_select_db(\"geisha\", $connection);

$result = mysql_query(\"SELECT * FROM members WHERE nick =\'$brugernavn\' AND password=\'$password\'\");
if (mysql_num_rows($result) == 1) {
$username = $brugernavn;
session_register(\"username\");
header(\"Location: scrimmss.php\");
} else {
  $message = \"WRONG NICK OR PASS\";
}
}

?>
<html>
<head>
<title>index</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
</head>

<body bgcolor=\"B08F87\" text=\"#FFFFFF\" link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">
<div align=\"center\">
  <p><b></b></p>
  <p><img src=\"housestyleLogo.jpg\" width=\"276\" height=\"219\"></p>
<? echo\"$message\"; ?>
<form action=\"index.php\" method=\"post\">
<font face=\"Garamond\">NICK</font>:
<input type=\"text\" name=\"username\"><br>
PASS:
<input type=\"password\" name=\"password\"><br>
<input type=\"submit\" value=\"login\">
</form>
</div>
</body>
</html>
Avatar billede christian Nybegynder
25. oktober 2001 - 13:20 #56
på den måde bliver login.php og index.php sat sammen til en
Avatar billede aslan Nybegynder
25. oktober 2001 - 13:45 #57
hehe ok lige et sidste spørgsmål hva hvis jeg gerne vil gemme flere oplysninger om en bruger hvordan gør jeg det?
Avatar billede christian Nybegynder
25. oktober 2001 - 14:08 #58
Hvad mener du med at gemme flere oplysninger?

Hvis du mener hvordan man opretter flere session variabler:
session_register(\"username\");
session_register(\"tidForLogin\");
session_register(\"yndlingsfarve\");
session_register(\"by\");

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