/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
PHP sessions virker ikke...
Fra : Thomas Schulz


Dato : 10-04-02 17:41

Jeg har kode ala dette;


function HasUserSessionInited() {
global $shr_server_globals_file;
include $shr_server_globals_file;
return (isset($HTTP_SESSION_VARS['SESSION_INITED']));
}

function PageLoadsStartSessionCheckInit() {
global $shr_server_globals_file;
include $shr_server_globals_file;
// must be called as first session thing - here we init variables if
needed
if (CmsUserAccounts::HasUserSessionInited() == false) {
$HTTP_SESSION_VARS['SESSION_INITED'] = true;
$HTTP_SESSION_VARS['user_db_account_id'] = -1;
$HTTP_SESSION_VARS['last_login_error_to_show'] = '';
}



Mit "main.php" (som er roden/kernen) er den der kalder
PageLoadsStartSessionCheckInit() gennem følgende kode:

/* init user session */
/*
must be called here (before anything is outputted to browser)
else it will not "sessionize" "$HTTP_SESSION_VARS" no matter what
*/
session_start();
CmsUserAccounts::PageLoadsStartSessionCheckInit();

/* send headers */
// bla bla




Jeg har prøvet med browsere der godtager cookies.
Jeg har også chekket at php placerer filer i mit "sessiondata" php dir.





Jeg må overse et eller andet... Hvad?




mvh
Thomas



 
 
Christian Joergensen (10-04-2002)
Kommentar
Fra : Christian Joergensen


Dato : 10-04-02 18:08

On Wed, 10 Apr 2002 18:40:57 +0200, Thomas Schulz wrote:

> Jeg må overse et eller andet... Hvad?

Fejlmeddelsen?

Hvordan konstaterer du at det ikke virker?

--
Christian Jørgensen | Never test for a bug you don't know how to fix.
http://www.razor.dk |

Thomas Schulz (10-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 10-04-02 18:39

> Hvordan konstaterer du at det ikke virker?

Jeg laver et simpelt echo hvor værdierne inittes
Altså:


if (CmsUserAccounts::HasUserSessionInited() == false) {
echo 'echo';

$HTTP_SESSION_VARS['SESSION_INITED'] = true;
$HTTP_SESSION_VARS['user_db_account_id'] = -1;
$HTTP_SESSION_VARS['last_login_error_to_show'] = '';
}



Thomas



Thomas Schulz (10-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 10-04-02 19:26

> Hvordan konstaterer du at det ikke virker?

Jeg laver et simpelt echo hvor værdierne inittes
Altså:


if (CmsUserAccounts::HasUserSessionInited() == false) {
echo 'echo';

$HTTP_SESSION_VARS['SESSION_INITED'] = true;
$HTTP_SESSION_VARS['user_db_account_id'] = -1;
$HTTP_SESSION_VARS['last_login_error_to_show'] = '';
}


mvh
Thomas





Thomas Schulz (10-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 10-04-02 19:25

>

jeg tror faktisk det er noget generelt med php 4.1.2

jeg tog dette fra: http://www.php.net/manual/fi/ref.session.php#AEN65238

Og tilføjede echo delen..

en demo.php side:

<?php
if (isset($HTTP_SESSION_VARS['count'])) {
$HTTP_SESSION_VARS['count']++;
}
else {
$HTTP_SESSION_VARS['count'] = 0;
}
echo $HTTP_SESSION_VARS['count'];
?>




Jeg er sikker på jeg har cookies enabled...
Det virker ikke. Og heller ikke hvis man kalder sessions_start() først;



mvh
Thomas



Christian Joergensen (10-04-2002)
Kommentar
Fra : Christian Joergensen


Dato : 10-04-02 20:56

On Wed, 10 Apr 2002 20:25:17 +0200, Thomas Schulz wrote:

[snip]

> $HTTP_SESSION_VARS

Du skriver, at du benytter 4.1.2. Derfor bør du også benytte $_SESSION
array'et istedet for ovenstående.

--
Christian Jørgensen | Do not look into the laser with remaining eye!
http://www.razor.dk |

Thomas Schulz (10-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 10-04-02 21:45

> Du skriver, at du benytter 4.1.2. Derfor bør du også benytte $_SESSION
> array'et istedet for ovenstående.

Skriver de noget sted på php.net explicitly at $HTTP_SERVER_VARS ikke
fungerer længere?
Er $_SESSION ikke bare en "shorthand"?

Mmm.. Nå, men jeg vil prøve det, tak.

Thomas



Jacob Atzen (10-04-2002)
Kommentar
Fra : Jacob Atzen


Dato : 10-04-02 22:13

"Thomas Schulz" <dk_sz@hotmail.com> writes:

> Skriver de noget sted på php.net explicitly at $HTTP_SERVER_VARS ikke
> fungerer længere?

Nej, det gør de ikke. $HTTP_SERVER_VARS fungerer stadig, så vidt jeg
kan læse mig frem til. Der er lidt information om det her:

http://dk.php.net/manual/en/ref.session.php

Men det er du jo nok allerede klar over.

> Er $_SESSION ikke bare en "shorthand"?

Jo, næsten:

"As of PHP 4.1.0, $_SESSION is available as global variable just like
$_POST, $_GET, $_REQUEST and so on. Not like $HTTP_SESSION_VARS,
$_SESSION is always global."

Og så er $_SESSION jo også hurtigere at skrive, ej at forglemme ;)

Men det var lidt et long-shot i forbindelse med dine problemer,
indrømmet.

--
Med venlig hilsen / Regards
- Jacob Atzen

Jacob Atzen (10-04-2002)
Kommentar
Fra : Jacob Atzen


Dato : 10-04-02 20:59

"Thomas Schulz" <dk_sz@hotmail.com> writes:

> Jeg har kode ala dette;
<snip>
> $HTTP_SESSION_VARS['SESSION_INITED'] = true;
<snip>

Ifølge php manualen er det rigtige at gøre, at sætte $_SESSION["foobar"].
Ved ikke om det hjælper noget?

--
Med venlig hilsen / Regards
- Jacob Atzen

Thomas Schulz (10-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 10-04-02 21:50

> Ifølge php manualen er det rigtige at gøre, at sætte $_SESSION["foobar"].
> Ved ikke om det hjælper noget?

Jeg prøvede lige:

<?php
//session_start();
if (isset($_SESSION["count"])) {
$_SESSION["count"]++;
}
else {
$_SESSION["count"] = 0;
}
echo $_SESSION["count"];
?>



ingen forskel..
og url rewriting (i.e. den automatiske indsættelse af session id i urls)
virker heller ikke (har sat til false i php.ini normal) - skriver ikke
noget.


Thomas




Tonni Aagesen (10-04-2002)
Kommentar
Fra : Tonni Aagesen


Dato : 10-04-02 22:00


"Thomas Schulz" <dk_sz@hotmail.com> skrev i en meddelelse
news:3cb4a5a2$0$245$edfadb0f@dspool01.news.tele.dk...
> > Ifølge php manualen er det rigtige at gøre, at sætte
$_SESSION["foobar"].
> > Ved ikke om det hjælper noget?
>
> Jeg prøvede lige:
>
> <?php
> //session_start();
> if (isset($_SESSION["count"])) {
> $_SESSION["count"]++;
> }
> else {
> $_SESSION["count"] = 0;
> }
> echo $_SESSION["count"];
> ?>

Nu ved jeg ikke om det er anderledes i 4.1.2, men prøve lige

<?php
session_start();
session_register(count);

if (isset($_SESSION["count"])) {
$_SESSION["count"]++;
}
else {
$_SESSION["count"] = 0;
}
echo $_SESSION["count"];
?>


--
Mvh
Tonni Aagesen
agent29@mail1.stofanet.dk



Thomas Schulz (10-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 10-04-02 23:08

> Ifølge php manualen er det rigtige at gøre, at sætte $_SESSION["foobar"].
> Ved ikke om det hjælper noget?

Virker ikke, men jeg har noget meget sjovt her:

2 filer: st1.php og st2.php. Den del der bruger $HTTP_SESSION_VARS virker.
Anyway, jeg har prøvet at duplikere det til min rigtigt side, men det virker
ikke. Måske fordi noget foregår i funktioner (altså den kode jeg postede i
første post)?
Jeg ved det ikke.. Men jeg ved snart ikke hvad mere jeg kan chekke (har søgt
meget på nettet og prøvet meget selv).
Hvis det ender op med at være en eller anden typo fejl slår jeg sku mig selv
rigtigt hårdt... Her er de 2 filer:




-------------------------------------------------
// st1.php
<?
session_start();
?>


<br><br><br><br>
Used: "$_SESSION".<br><br>
<?
if (isset($_SESSION["countA"])) {
$_SESSION["countA"]++;
}
else {
$_SESSION["countA"] = 0;
}
echo $_SESSION["countA"];
echo '<a href="st2.php">link with transparent session id encoded url</a>';
?>


<br><br><br><br>
Used: "$HTTP_SESSION_VARS".<br><br>
<?
if (isset($HTTP_SESSION_VARS["countB"])) {
$HTTP_SESSION_VARS["countB"]++;
}
else {
$HTTP_SESSION_VARS["countB"] = 0;
}
echo $HTTP_SESSION_VARS["countB"];
echo '<a href="st2.php">link with transparent session id encoded url</a>';
?>



-------------------------------------------------
// st2.php
<?
session_start();
?>


<br><br><br><br>
Used: "$_SESSION".<br><br>
<?
if (isset($_SESSION["countA"])) {
$_SESSION["countA"]++;
}
else {
$_SESSION["countA"] = 0;
}
echo $_SESSION["countA"];
echo '<a href="st2.php">link with transparent session id encoded url</a>';
?>


<br><br><br><br>
Used: "$HTTP_SESSION_VARS".<br><br>
<?
if (isset($HTTP_SESSION_VARS["countB"])) {
$HTTP_SESSION_VARS["countB"]++;
}
else {
$HTTP_SESSION_VARS["countB"] = 0;
}
echo $HTTP_SESSION_VARS["countB"];
echo '<a href="st1.php">link with transparent session id encoded url</a>';
?>






mvh
Thomas



Jacob Atzen (11-04-2002)
Kommentar
Fra : Jacob Atzen


Dato : 11-04-02 18:08

"Thomas Schulz" <dk_sz@hotmail.com> writes:

> Virker ikke, men jeg har noget meget sjovt her:
>
> 2 filer: st1.php og st2.php. Den del der bruger $HTTP_SESSION_VARS virker.
> Anyway, jeg har prøvet at duplikere det til min rigtigt side, men det virker
> ikke. Måske fordi noget foregår i funktioner (altså den kode jeg postede i
> første post)?

Måske den server du bruger har et problem? Hvorfor har du iøvrigt 2
identiske filer?

> Jeg ved det ikke.. Men jeg ved snart ikke hvad mere jeg kan chekke (har søgt
> meget på nettet og prøvet meget selv).
> Hvis det ender op med at være en eller anden typo fejl slår jeg sku mig selv
> rigtigt hårdt... Her er de 2 filer:
<snip kode>

Jeg har prøvet at køre dine to små stykker kode på min server og der
virker de ganske fejlfrit. Både den øverste og den nederste counter
tæller lystigt derudaf ved hvert reload af siden.

--
Med venlig hilsen / Regards
- Jacob Atzen

Kim Emax - ayianapa.~ (11-04-2002)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 11-04-02 19:02


"Thomas Schulz" <dk_sz@hotmail.com> skrev

> 2 filer: st1.php og st2.php. Den del der bruger $HTTP_SESSION_VARS virker.
> Anyway, jeg har prøvet at duplikere det til min rigtigt side, men det
virker
> ikke. Måske fordi noget foregår i funktioner (altså den kode jeg postede i
> første post)?
> Jeg ved det ikke.. Men jeg ved snart ikke hvad mere jeg kan chekke (har
søgt
> meget på nettet og prøvet meget selv).
> Hvis det ender op med at være en eller anden typo fejl slår jeg sku mig
selv
> rigtigt hårdt... Her er de 2 filer:

_hvor_ kører du dette? jeg mener, hos hvilken udbyder?

--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk
http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Thomas Schulz (11-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 11-04-02 11:19

> Jeg har kode ala dette;


sigh..

hvis i får samme problem

så installer 4.2.0 release candidate 1



Thomas



Thomas Schulz (11-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 11-04-02 11:21

> sigh..

nevermind
der var jeg for hurtigt ude

det virker bedre
og e.g. den test kode jeg postedede før med $_SESSION og $HTTP_SERVER_VARS
virker

Thomas



Thomas Schulz (11-04-2002)
Kommentar
Fra : Thomas Schulz


Dato : 11-04-02 13:28

>
Sidste melding forhåbentligt..

Det virker nu.


Det var dels det at php 4.1.2 virker elendigt med sessions (fandt også nogle
bug reports) + at min IE åbentbart ikke accepterede cookies (jeg testede dog
under hele forløbet også med Mozilla og Opera).

Thomas



Søg
Reklame
Statistik
Spørgsmål : 177522
Tips : 31968
Nyheder : 719565
Indlæg : 6408668
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste