Avatar billede zirius Nybegynder
05. august 2002 - 13:09 Der er 23 kommentarer og
2 løsninger

PHP sessions

Hej

Jeg har et problem med føglende script:

<?php

//Getting variables

$username = $_REQUEST["username"];
$password = $_REQUEST["password"];

if (empty($username))

{

    die("<br><br>No Username specified ! ....... <a href='login.php'>Back</a>");

}

elseif (empty($password))

{

    die("<br><br>No Password specified ! ....... <a href='login.php'>Back</a>");

}

?>
      <?php

$host="localhost";
$uname="uname";
$pass="pass";
$database="database";

$connect= mysql_connect($host,$uname,$pass)
  or die("Database connection failed ! <br>");

$selectdb=mysql_select_db($database)
  or die("Database could not be selected");

/* To verify passwords based on MD5 hashes */


$sqlquery = "SELECT password from users where username='" .$username ."'";
$queryresult = mysql_query($sqlquery);

if($row=mysql_fetch_array($queryresult))
{
    if(!(md5($password) == $row["password"]))
    {
      die("<br><br> Invalid Password ! ....... <a href='login.php'>Back</a>");
    }

}
    else
{

      die("<br><br> User not found ! ....... <a href='login.php'>Back</a>");

}

//Implementing sessions
session_name();
session_start();
session_register("username");
session_encode();
$url ="location: test.phpPHPSESSID=".$PHPSESSID;
heder($url);

/* To verify passwords based on MySQL's encode/decode */
/*
$mingle= "decode(password,'".$password."')";

$sqlquery = "SELECT " .$mingle. " as pass  from login where customerid='" .$customerid ."'";
$queryresult = mysql_query($sqlquery);

if($row=mysql_fetch_array($queryresult))
{

echo "Password : ".$password."<br>";
echo "MySQL Pwd: ".$row["pass"]."<br>";

if(!($password == $row["pass"])
)
{
    die(" Invalid Password.");
}
}
else
{

      die(" User not found.");

}
*/

?>

Mit problem med scripter er så at det virkede fint indtil jeg implementerede sessions.. Jeg kan simpelt hen ikke få de sessions til at virke, når jeg logger ind bliver jeg stillet om til scriptet ovenover hvor det viser en masse errors.

Håber I kan hjælpe
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:17 #1
mangler du ikke et a i
heder($url);
så den hedder
header($url);
Avatar billede thomashove Nybegynder
05. august 2002 - 13:17 #2
der er fejl her :

$url ="location: test.phpPHPSESSID=".$PHPSESSID;
heder($url);

det skal være :

$url ="location: test.php&PHPSESSID=".$PHPSESSID;
header($url);
Avatar billede zirius Nybegynder
05. august 2002 - 13:19 #3
ja men kan det være det der laver errors ?
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:20 #4
prøv at ændre det og se
Avatar billede zirius Nybegynder
05. august 2002 - 13:21 #5
Warning: Cannot send session cache limiter - headers already sent (output started at c:\apache\htdocs\beauxbatons extreme\welcome.php:25) in c:\apache\htdocs\beauxbatons extreme\welcome.php on line 61

Warning: open(/tmp\sess_60b16496fa2170f8f8c91068f983abe6, O_RDWR) failed: No such file or directory (2) in c:\apache\htdocs\beauxbatons extreme\welcome.php on line 61

Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\beauxbatons extreme\welcome.php:25) in c:\apache\htdocs\beauxbatons extreme\welcome.php on line 65

Det er de errors, det hjalp lidt med den ændring. Nu kommer der ikke ligeså mange errors som før.
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:23 #6
så prøv at sætte dette som det ABSOLUT første i dit script, altså før noget som helst, også <html>

session_name();
session_start();
session_register("username");
session_encode();
$url ="location: test.phpPHPSESSID=".$PHPSESSID;
heder($url);
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:24 #7
og så skal session_start(); stå først
Avatar billede thomashove Nybegynder
05. august 2002 - 13:24 #8
ellers er sessions ret så ligetil

i php.ini sæt session.save_path (har du sikkert gjort) i det katalog kan du så tjekke om din session bliver sat og om variablerne bliver registreret.

herefter siger du bare f.eks

$test = "hej med dig";
Session_register("test");

din session indeholder nu "test".

hvis du så på din næste side siger

echo($test); - burde du få vist "hej med dig" (dette kan du kun gøre hvis du i php.ini har sat register_globals=on)
Avatar billede thomashove Nybegynder
05. august 2002 - 13:26 #9
session_start(); er rent faktisk ikke nødvendigt hvis man i php.ini har

session.auto_start        = 1

som den typisk default står til
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:27 #10
oki, men som god kodeskik er det nu en god ide;-)
Avatar billede zirius Nybegynder
05. august 2002 - 13:27 #11
Ehh.. Det med at sætte session save path har jeg ikke gjort, lige nu står der file ud for save path
Avatar billede thomashove Nybegynder
05. august 2002 - 13:28 #12
og får lige at tage dine errors

Warning: Cannot send session cache limiter - headers already sent (output started at c:\apache\htdocs\beauxbatons extreme\welcome.php:25) in c:\apache\htdocs\beauxbatons extreme\welcome.php on line 61
[du skriver noget ud på skærmen før du siger header()]

Warning: open(/tmp\sess_60b16496fa2170f8f8c91068f983abe6, O_RDWR) failed: No such file or directory (2) in c:\apache\htdocs\beauxbatons extreme\welcome.php on line 61
[Du har ikke angivet Session save_path i php.ini]
Avatar billede thomashove Nybegynder
05. august 2002 - 13:29 #13
du skal skrive f.eks

session.save_path        = c:/web/sessiondata

eller hvilket katalog du nu ønsker
Avatar billede zirius Nybegynder
05. august 2002 - 13:33 #14
prøver lige alt jeres hjælp :)
Avatar billede zirius Nybegynder
05. august 2002 - 13:44 #15
Jeg tror problemet er at den bliver ved med at ville gemme den i "/tmp" jeg har dog ændret save path
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:49 #16
har du husket at genstarte efter at have ændret i php.ini
Avatar billede zirius Nybegynder
05. august 2002 - 13:51 #17
Nix.. prøver det lige :)
Avatar billede ztyxx Nybegynder
05. august 2002 - 13:52 #18
god ide :-)
Avatar billede ztyxx Nybegynder
05. august 2002 - 14:00 #19
hjalp det så
Avatar billede zirius Nybegynder
05. august 2002 - 14:03 #20
Ja, nu virker det hele.. I får strax point :)
Avatar billede zirius Nybegynder
05. august 2002 - 14:04 #21
Lav lige et svar
Avatar billede ztyxx Nybegynder
05. august 2002 - 14:05 #22
:-)
Avatar billede zirius Nybegynder
05. august 2002 - 14:05 #23
Mange tak for hjælpen =D
Avatar billede ztyxx Nybegynder
05. august 2002 - 14:06 #24
no problem :-)
Avatar billede tipsen Nybegynder
05. august 2002 - 14:07 #25
Og så ret:

if(!(md5($password) == $row["password"]))

til

if(md5($password) != $row["password"])

NB: Du kan også bruge md5 i mysql - så slipper du for php checket!
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