[PHP]Sessions doen vreemd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • hornage
  • Registratie: November 2001
  • Laatst online: 24-09-2024
Ik ben bezig met een compleet content managing systeem in PHP waarin de content ook verhandeld kan worden.
Om bestellingen te doen kunnen klanten op bestellen klikken om een artikel te bestellen. Er wordt dan in een session variable een array bijgehouden van toegevoegde nummers. Zie voor voorbeeld: www.postzegelfouten.nl/nieuw/
Nu heb ik een probleem met nummers verwijderen uit die array. Eerst lijkt het alsof het nummer verwijderd is maar als je dan weer in het winkelwagentje kijkt zie je hem er gewoon weer staan. Hetzelfde met uitloggen. Je klikt op uitloggen, maar daarna ben je weer ingelogd (inloggen etc wordt ook dmv sessions geregeld).
Om dit probleem te analyseren heb ik een testscriptje gemaakt waarin tussen elke actie een print_t wordt gedaan van de array. Dit is te vinden op www.postzegelfouten.nl/nieuw/test.php

Het probleem lijkt te komen door een instelling van php. Op mijn eigen server doet hij het namelijk zonder problemen. www.postzegelfouten.nl wordt gehost door lycos. Ik ben alleen bang dat ze weinig kunnen doen als ik ze zo bel. Heeft iemand misschien een idee waardoor dit probleem komt en hoe ik het kan oplossen?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
    error_reporting(E_ALL);
    session_start();

    if (array_key_exists("action", $_GET)) {
        if($_GET["action"] == "add") { //add the stamperror to the order array in the session
            echo "<br />add before: <br />";
            print_r($_SESSION["order"]);
            array_push($_SESSION["order"], "".$_GET["error_nr"]);
            echo "<br />add after: <br />";
            print_r($_SESSION["order"]);
        }
                    
        if($_GET["action"] == "delete") { //delete the stamperror from the order array
            echo "<br />delete before: <br />";
            print_r($_SESSION["order"]);
            $tmp = array_flip($_SESSION["order"]);//flip so the key is the value and otherwise
            echo "<br />flipped temp: <br />";
            print_r($tmp);
            unset($tmp[$_GET["error_nr"]]);//delete the number
            echo "<br />delete temp: <br />";
            print_r($tmp);
            $_SESSION["order"] = array_flip($tmp);//flip it back
            echo "<br />delete after: <br />";
            print_r($_SESSION["order"]);
        }
    }
    if (!isset($_SESSION["order"]))
        $_SESSION["order"] = array();

    echo "<br /><a href=\"test.php?action=add&amp;error_nr=20\">stap1</a><br />";
    echo "<a href=\"test.php?action=add&amp;error_nr=15\">stap2</a><br />";
    echo "<a href=\"test.php?action=delete&amp;error_nr=20\">stap3</a><br />";
    echo "<a href=\"test.php?action=delete&amp;error_nr=15\">stap4</a><br />";
    print_r($_SESSION["order"]);

?>

[ Voor 15% gewijzigd door hornage op 09-06-2005 11:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

:X
Sorry ik las verkeerd, je stopt je array ook weer terug in
PHP:
1
 $_SESSION['order']

[ Voor 104% gewijzigd door Verwijderd op 09-06-2005 12:07 ]


Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
En als je nu netjes uit de session variabele zelf unset?

Zo heb ik het getest en werkt hier perfect :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
    session_start();
    
    if( isset( $_GET['action'] ) )
    {
        switch( $_GET['action'] )
        {
            case 'add':
                $_SESSION['test'][] = $_GET['num'];
                break;
            case 'delete':
                while( false !== ( $key = array_search( $_GET['num'], $_SESSION['test'] ) ) )
                {
                    unset( $_SESSION['test'][$key] );
                }
                break;
        }
    }
    if( !isset( $_SESSION['test'] ) )
    {
        $_SESSION['test'] = array();
    }
    
    echo "<a href='got.php?action=add&num=15'>Add 15</a><br>\n";
    echo "<a href='got.php?action=add&num=25'>Add 25</a><br>\n";
    echo "<a href='got.php?action=delete&num=15'>Del 15</a><br>\n";
    echo "<a href='got.php?action=delete&num=25'>Delete 25</a><br>\n";
    
    echo "Array waarde:\n";
    print_r( $_SESSION['test'] );
?>

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Volgens mij gebruiken ze bij Lycos meerdere servers, die dmv load balacing worden aangestuurd. Deze verschillende server delen waarschijnlijk niet de zelfde sessie's

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • hornage
  • Registratie: November 2001
  • Laatst online: 24-09-2024
sessie's worden toch op de client pc alleen opgeslagen?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

De sessie variabelen staan op de server. Die worden echt niet elke keer mee verzonden ;) De sessie identificatie staat op de client (bijv. m.b.v. een cookie).

Blijkbaar zit je iets uit de verkeerde array te verwijderen, het lijkt me dan ook sterk dat het wel werkt op de ene server en niet op de andere. Als het echt een instellingsprobleem zou zijn geweest (wat het hier zo te zien niet is) dan had je je topic beter hier niet kunnen plaatsen. Zie ook P&W FAQ - Installatie c.q. SA vragen

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • hornage
  • Registratie: November 2001
  • Laatst online: 24-09-2024
@Huppie
Die code van jou ziet er netjes uit en ik heb nu die twee gepakt. Het werkt goed voor zover ik zie, maarja dat was ook zo bij mijn code. In ieder geval bedankt _O_

Acties:
  • 0 Henk 'm!

  • L01
  • Registratie: December 2003
  • Laatst online: 19-09 22:17

L01

Mijn website host ik ook op lycos en ik heb precies hetzelfde probleem, zelfs al ik session_destroy gebruik dan komt het artikel weer gewoon terug in mijn winkelmandje.

Ik gebruik maar 1 array dus, een verkeerde array verwijderen is het niet.

Ik denk dat het de servers van lycos zijn die dit probleem veroorzaken, héél irritant.

Hi, I'm a signature virus. Put me in your signature to help me spread.


Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
hornage schreef op donderdag 09 juni 2005 @ 13:34:
@Huppie
Die code van jou ziet er netjes uit en ik heb nu die twee gepakt. Het werkt goed voor zover ik zie, maarja dat was ook zo bij mijn code. In ieder geval bedankt _O_
Toch nog even wat,

Wat me opvalt met jouw code is dat je array_flip() gebruikt, je kan hiermee nooit 2 dezelfde waarden hebben in je array, was dit je bedoeling of is deze fout er per ongeluk ingeslopen?

* Huppie doet het voor:
*klik Stap 1
*klik Stap 1
*klik Stap 4 (Dit zou niets moeten verwijderen)
*1 x 20 blijft over :)

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • hornage
  • Registratie: November 2001
  • Laatst online: 24-09-2024
@huppie
je kan maar 1 keer hetzelfde produkt toevoegen jah, elke keer als de collectie geladen wordt check ik met een memberfunctie of hij er al inzit en aan de hand daarvan komt een bestel of verwijder knop

@Mr._Superior
Ow, dus ik werd toch niet geheel gek, mm, heb jij ze al eens gebeld of gemaild hierover? Anders ga ik ze zo wel ff bellen

Acties:
  • 0 Henk 'm!

  • L01
  • Registratie: December 2003
  • Laatst online: 19-09 22:17

L01

Nee nog niet, dit omdat ik dacht dat het aan mijn programmeur kunsten lag, maar nu blijkt dat het aan lycos ligt (eigenlijk best gare server, ook vaak traag).
Ik ga ook even mailen hierover want als meer mensen er last van hebben gaan ze er hopelijk iets aan doen.
(over die traagheid heb ik wel gemailed en ze gaan er iets aan doen.)

Hi, I'm a signature virus. Put me in your signature to help me spread.


Acties:
  • 0 Henk 'm!

  • hornage
  • Registratie: November 2001
  • Laatst online: 24-09-2024
ok, nou, ik ga nu even bellen :D

Acties:
  • 0 Henk 'm!

  • Huppie
  • Registratie: Mei 2003
  • Laatst online: 02-09 09:59
Na flink wat zoeken ben ik er in ieder geval al achter dat ze bij Lycos geen PHP gebruiken maar PHP4U (een speciale dichtgetimmerde variant van PHP), er zijn ook een flink aantal mensen die daardoor problemen hebben met Postnuke bij Lycos.

Hier nog ergens een quote van de Lycos Helpdesk die ik tegenkwam op de Postnuke fora:
quote: Lycos Helpdesk
De technische dienst heeft mij geinformeerd dat ze de PHP instellingen zo hebben vastgezet wegens de veiligheid van de algemene server, en vanmorgen kreeg ik het antwoord dat ze dit binnen de hostingpakketten niet kunnen aanpassen.
Het schijnt wel ergens in hun hosting-specs te staan, als je op PHP versie x.x.x.x klikt ofzo krijg je te zien dat het PHP4U is, beetje misleidend imho maar ik denk niet dat ik meer voor je kan doen :|

Proud member of TCF - D2OL is zooooo 2005


Acties:
  • 0 Henk 'm!

  • L01
  • Registratie: December 2003
  • Laatst online: 19-09 22:17

L01

@hornage

Wat zeiden ze bij Lycos?

Hi, I'm a signature virus. Put me in your signature to help me spread.


Acties:
  • 0 Henk 'm!

  • hornage
  • Registratie: November 2001
  • Laatst online: 24-09-2024
Nou, na 10 minuten wachten had ik er genoeg van dus ik heb ze gemaild

Acties:
  • 0 Henk 'm!

  • mydogisgone
  • Registratie: Februari 2002
  • Laatst online: 22:30

mydogisgone

Watskeburtwithmydog

HET LIGT aan lycos..
ik heb gewoon precies hetzelfde.

check mijn topic maar..
http://gathering.tweakers.net/forum/list_messages/1043531

[ Voor 48% gewijzigd door mydogisgone op 10-06-2005 17:05 ]

Mijn hond is nog steeds echt weg! En die komt ook niet weer. :O


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:18

chem

Reist de wereld rond

Je kan ook op zoek gaan naar een echte hostingprovider, ipv een cheap-ass partij als lycos...

Je kan denk ik ook niet veel anders verwachten; als je voor een dumpprijs hosting krijgt, dan krijg je ook dumpkwaliteit...

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • mydogisgone
  • Registratie: Februari 2002
  • Laatst online: 22:30

mydogisgone

Watskeburtwithmydog

chem schreef op vrijdag 10 juni 2005 @ 17:11:
Je kan ook op zoek gaan naar een echte hostingprovider, ipv een cheap-ass partij als lycos...

Je kan denk ik ook niet veel anders verwachten; als je voor een dumpprijs hosting krijgt, dan krijg je ook dumpkwaliteit...
ja ik ben er al weer achter.. goedkoop = duurkoop.. :/

Mijn hond is nog steeds echt weg! En die komt ook niet weer. :O

Pagina: 1