Just nu i M3-nätverket
Gå till innehåll

Sessions


TicoRoman

Rekommendera Poster

Tjena!

 

Jag kör Apache 1.3.20 och PHP 4.06 lokalt på min dator, i utbildningssyfte. Därför kör jag den i Windows XP.

 

Jag har dock ett problem när det gäller sessions. Jag får de inte alls att fungera.

 

Felet som visas i browsern är:

Warning: open(/tmp\sess_55fc77a042779ae8bd237294a6ee6844, O_RDWR) failed: m (2) in c:\phpdev\www\bosnachat\sessions\login.php on line 3

 

Jag tror att det har att göra med rättigheter till www-mappen, men hur ändrar man det när man kör Win XP (FAT32)... :(

 

Annars ser filerna ut så här:

 

(jag har förenklat de förstås)

 

login.php

 

<?php

 

session_start();

session_register('magicboy');

$magicboy = "rules";

 

 

print "<a href=inside.php>inside.php</a>";

 

?>

 

inside.php

 

<?php

 

session_start();

session_register('magicboy');

 

if ($magicboy == "") {

 

print "BAD PASS";

 

}

 

else {

 

print "OK PASS";

 

}

 

?>

 

 

Filerna fungerar helt okej på en "riktig" webserver (Apache på Slackware Linux tror jag det var).

 

Kan jag fixa till det här med sessioner på min lokala dator med Windows XP (FAT32), eller blir jag tvungen att köra all PHP-kod på en "riktig" webserver?

 

Tacksamm för hjälp & tips!

 

____________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på Mälardalens Högskola, Västerås.-

Länk till kommentar
Dela på andra webbplatser

Har du någon katalog som heter \tmp? Om inte, skapa den.

 

Den mappen finns redan.

 

 

____________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på Mälardalens Högskola, Västerås.-

 

 

Länk till kommentar
Dela på andra webbplatser

Borde kanske nämna att jag kör ett "färdigt-installerat-apache-php-mysql-paket" från http://www.firepages.com.au/phpdev4.htm (alt 4).

 

 

____________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på Mälardalens Högskola, Västerås.-

 

 

 

Länk till kommentar
Dela på andra webbplatser

OK, försök 2. Se till att session.save_path i php.ini pekar på den katalog som ska innehålla temporära sessionsfiler.

 

Länk till kommentar
Dela på andra webbplatser

Den pekar på:

 

session.save_path = C:\phpdev\php\tmp;

 

Är det något som ska vara speciellt med den mappen? Denna mapp ligger alltså INTE under WWW-mappen (som är åtkomlig via webservern), och den borde väl inte göra det heller.

 

Deprimerande när man inte får det att fungera :( Någon idé att installera om Apache och PHP "manuellt", och inte använda "färdiga-paket-lösningar"?

 

 

 

PS. Är det bara jag som inte får sessions att fungera i Windows XP?

 

____________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på Mälardalens Högskola, Västerås.-

 

 

Länk till kommentar
Dela på andra webbplatser

Mors.

 

Jag brukar behöva sätta session.auto_start till 1 i php.ini

 

Om du har en php.ini i samma folder som php, ta bort den. Ha bara en php.ini i C:\windows\ Annars vet du inte vilken som körs...

 

Se till att session.cookie_path är satt till / för att testa. (i php.ini)

 

Ditt semikolon efter sökvägen, ta bort det. ; = kommentar.

 

Session savepathen ska inte ligga under publika webfoldern. Om den gör det kan vem som helst ladda hem infon som du sparat i dina sessions.

 

Skapas det sessionfiler din save_path?

 

kör du isapi modul eller php.exe?

 

Länk till kommentar
Dela på andra webbplatser

Jag brukar behöva sätta session.auto_start till 1 i php.ini

 

Har ändrat det nu.

 

Om du har en php.ini i samma folder som php, ta bort den. Ha bara en php.ini i C:\windows\ Annars vet du inte vilken som körs...

 

Borttaget.

 

Se till att session.cookie_path är satt till / för att testa. (i php.ini)

 

Det var så redan från början.

 

Ditt semikolon efter sökvägen, ta bort det. ; = kommentar.

 

Borttaget.

 

Session savepathen ska inte ligga under publika webfoldern. Om den gör det kan vem som helst ladda hem infon som du sparat i dina sessions.

 

Har nu satt den till C:\phpdev\php\tmp som helt klart ligger utanför publika webbfoldern. (Webfoldern är c:\phpdev\www\)

 

Skapas det sessionfiler din save_path?

 

Nope!

 

kör du isapi modul eller php.exe?

 

Är lite osäker, då jag är nybörjare på det här med PHP, men jag antar att det är php.exe då den finns i mappen c:\phpdev\php\.

 

Väldigt frusterande det här, då jag inte kan hitta felet. :( Men jag bifogar här alla inställningar som jag har under [session] i php.ini (förutom kommentarerna). Kanske ni ser felet där:

 

session.save_handler = files

session.save_path = C:\phpdev\php\tmp

session.use_cookies = 1

session.name = PHPSESSID

session.auto_start = 1

 

session.cookie_lifetime = 0

session.cookie_path = /

session.cookie_domain =

session.serialize_handler = php

session.gc_probability = 1

session.gc_maxlifetime = 1440

 

session.referer_check =

session.entropy_length = 0

session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

session.cache_limiter = nocache

 

session.cache_expire = 180

session.use_trans_sid = 1

 

 

 

Ett sista försök nu att fixa till det.

 

:(

 

____________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på Mälardalens Högskola, Västerås.-

 

 

 

Länk till kommentar
Dela på andra webbplatser

hmm skumt. ser bra ut.

 

har IIS rättigheter att skriva till den foldern? (eller apache om du kör apache)

 

hur ser ditt phpscript ut?

kan du prova att göra ett phpscript som skriver en liten fil till den foldern?

 

 

 

Länk till kommentar
Dela på andra webbplatser

Har märkt att då jag ändrar php.ini så blir det ingen skillnad när jag startar om allt och visar "php-info". De gamla inställningarna gäller fortfarande. Och de har jag letat efter varje ställe där php.ini finns och ändrat i alla!

 

Jag har dock nu laddat ner "PHPDEV" versionen för Windows 95/98/Me och och installerat den under Win 98 och sessions fungerar nu!

 

Visserligen har jag nu istället fått lite problem med MySQL, men det ska väl lösa sig, annars får jag återkomma.

 

Härmed avslutar jag denna tråd om sessions.

 

Tack för att ni tog er tid för att svara på min fråga, även om det inte hjälpte. Ni får alla poäng!

 

 

 

____________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på Mälardalens Högskola, Västerås.-

 

 

 

Länk till kommentar
Dela på andra webbplatser

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

Warning: Cannot send session cookie - headers already sent by (output started at D:\kill\c.php:2) in D:\kill\c.php on line 3

Vad är det för fel på mina Sessioner?

Berätta tydlig så alla kan förstå!!!

 

 

 

Länk till kommentar
Dela på andra webbplatser

Ser ut som om du skriver saker på sidan innan du sätter sessions. Man måste förmodligen starta sessions innan man skriver något på sin sida. Samma sak gäller andra header saker (cookies osv).

__________________________________________________

blueluna

 

Länk till kommentar
Dela på andra webbplatser

 

Var ska jag då sätta den här koden?

<?

session_start();

if(isset($usr) && isset($psw) && !empty($usr) && !empty($psw)){

session_register("username","password"); }

?>

för att den ska funka bra?

 

Länk till kommentar
Dela på andra webbplatser

innan all html kod och innan du skriver någonting till sidan med php med exempelvis echo()

 

Detta är fel:

<html>

<head>

<?

session_start();

if(isset($usr) && isset($psw) && !empty($usr) && !empty($psw)){

session_register("username","password"); }

?>

[...]

 

detta är oxå fel:

<?

echo "this is a text

session_start();

if(isset($usr) && isset($psw) && !empty($usr) && !empty($psw)){

session_register("username","password"); }

?>

<html>

<head>

[...]

 

detta är korrekt:

<?

session_start();

if(isset($usr) && isset($psw) && !empty($usr) && !empty($psw)){

session_register("username","password"); }

echo "skirver nånting"

?>

<html>

<head>

 

 

 

Länk till kommentar
Dela på andra webbplatser

Warning: Undefined variable: username in D:\killer\c.php on line 409

Det blir så här när jag ska ta ut allt i Sessionern hur är det då jag ska göra för att ta ut den u r Sessionern.

Sedan när man ska ta ut den?

 

 

 

 

[inlägget ändrat 2002-01-23 17:07:01 av Zion the Lion]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...