Avatar billede tigertool Nybegynder
16. april 2004 - 20:58 Der er 3 kommentarer og
1 løsning

Fra $_SESSION til Session i PHP 4.0.1

Jeg har følgende script:

-----------------------------------------KODE----------------------------------------
<?
session_start();
// functions.php

global $dates;
global $weekdays;
global $max_weeks;

$max_weeks = 3;
$weekdays = array('Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag','Søndag');

function addWeek()
{
        global $max_weeks;
        $_SESSION['week']++;

        if ($_SESSION['week'] > $max_weeks)
        {
                $_SESSION['week'] = 0;
        }
}

function changeDate($id)
{
        global $dates;

        if ($_SESSION['date'] == $dates[$_SESSION['week']][$id])
        {
                addWeek();
        }

        if ($dates[$_SESSION['week']][$id] == null)
        {
                addWeek();
        }
        $tempWeek = $_SESSION['week'];

        $_SESSION['date'] = $dates[$tempWeek][$id];
}


// end of functions

if(!isset($_SESSION['week']))
{
        $_SESSION['week'] = 0;
}
?>
<center>
<form action="<?=$PHP_SELF?>" method="post">
<?
//temp
$tempDate = time();
$tempWeek = 0;

for ($r = 0; $r < $max_weeks * 7; $r++)
{
        $weekDay = date("w",$tempDate);

        $dates[$tempWeek][$weekDay] = date("d-m-Y",$tempDate);

        if ($weekDay == "0")
        {
                $tempWeek++;
        }

        $tempDate += 60*60*24;
}
?>
<p>Udskrift af dobbelt-array:</p>
<?
for ($i = 0; $i < $max_weeks + 1; $i++)
{

        if ($_SESSION['week'] > $max_weeks)
        {
                $_SESSION['week'] = 0;
        }
}

function changeDate($id)
{
        global $dates;

        if ($_SESSION['date'] == $dates[$_SESSION['week']][$id])
        {
                addWeek();
        }

        if ($dates[$_SESSION['week']][$id] == null)
        {
                addWeek();
        }
        $tempWeek = $_SESSION['week'];

        $_SESSION['date'] = $dates[$tempWeek][$id];
}


// end of functions

if(!isset($_SESSION['week']))
{
        $_SESSION['week'] = 0;
}
?>
<center>
<form action="<?=$PHP_SELF?>" method="post">
<?
//temp
$tempDate = time();
$tempWeek = 0;

for ($r = 0; $r < $max_weeks * 7; $r++)
{
        $weekDay = date("w",$tempDate);

        $dates[$tempWeek][$weekDay] = date("d-m-Y",$tempDate);

        if ($weekDay == "0")
        {
                $tempWeek++;
        }

        $tempDate += 60*60*24;
}
?>
<p>Udskrift af dobbelt-array:</p>
<?
for ($i = 0; $i < $max_weeks + 1; $i++)
{
        echo "<p>";
        for ($l = 0; $l < 7; $l++)
        {
                echo $dates[$i][$l]." ";
        }
        echo "</p>";
}
?>
<p>
<input type="submit" name="d1" value="<?=$weekdays[1]?>">&nbsp;
<input type="submit" name="d2" value="<?=$weekdays[2]?>">&nbsp;
<input type="submit" name="d3" value="<?=$weekdays[3]?>">&nbsp;
<input type="submit" name="d4" value="<?=$weekdays[4]?>">&nbsp;
<input type="submit" name="d5" value="<?=$weekdays[5]?>">&nbsp;
<input type="submit" name="d6" value="<?=$weekdays[6]?>">&nbsp;
<input type="submit" name="d0" value="<?=$weekdays[0]?>">&nbsp;
<?
if ($d1)
{
        changeDate(1);
}
elseif ($d2)
{
        changeDate(2);
}
elseif ($d3)
{
        changeDate(3);
}
elseif ($d4)
{
        changeDate(4);
}
elseif ($d5)
{
        changeDate(5);
}
elseif ($d6)
{
        changeDate(6);
}
elseif ($d0)
{
        changeDate(0);
}
else
{
        if ($date1)
        {
                $_SESSION['date'] = $date1;
        }
        else
        {
                $_SESSION['date'] = date("d-m-Y");
        }
}
?>
</form>
<p><? echo $_SESSION['date']; ?></p>
</center>
----------------------------------------/KODE----------------------------------------

Mit problem er ar jeg har skrevet det på en Apache-server installeret lokalt med den sidste af PHP4, men den server hvor det skal ligge på kører PHP 4.0.1, og der virker $_SESSION desværre ikke.

Er der en der kan skrive det om sådan at det virker i PHP 4.0.1?

(Jeg har allrede oprettet et spm, men jeg tror ikke jeg fik beskrevet mit problem ordentligt, derfor prøver jeg igen: http://www.eksperten.dk/spm/488223)
Avatar billede detox Nybegynder
16. april 2004 - 21:41 #1
Prøv at skifte $_SESSION ud med $HTTP_SESSION_VARS. Du skal dog være opmærksom på at den ikke er en super global, så du er nødt til at tilføje:
global $HTTP_SESSION_VARS;
i dine funktioner.
Avatar billede tigertool Nybegynder
16. april 2004 - 21:43 #2
Det har jeg allerede prøvet, det virkede ikke. Ikke optimalt i al fald, det var som om min $HTTP_SESSION_VARS['week'] ikke ville ++ i min addWeek().
Avatar billede tigertool Nybegynder
16. april 2004 - 22:00 #3
Jeg prøvede med følgende:

<?
session_start();
// functions.php

global $dates;
global $weekdays;
global $max_weeks;
global $HTTP_SESSION_VARS;
session_register('week');
session_register('date');

if (!$HTTP_SESSION_VARS['week'])
{
        $HTTP_SESSION_VARS['week'] = 0;
}

$max_weeks = 3;
$weekdays = array('Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag','Søndag');

function addWeek()
{
        global $HTTP_SESSION_VARS;
        global $max_weeks;
        $HTTP_SESSION_VARS['week'] = $HTTP_SESSION_VARS['week'] + 1;

        if ($HTTP_SESSION_VARS['week'] > $max_weeks)
        {
                $HTTP_SESSION_VARS['week'] = 0;
        }
}

function changeDate($id)
{
        global $HTTP_SESSION_VARS;
        global $dates;
    $var_1 = $HTTP_SESSION_VARS['date'];
    $var_2 = $HTTP_SESSION_VARS['week'];
        if ($var_1 == $dates[$var_2][$id])
        {
                addWeek();
        }

        if ($dates[$HTTP_SESSION_VARS['week']][$id] == null)
        {
                addWeek();
        }
        $tempWeek = $HTTP_SESSION_VARS['week'];

        $HTTP_SESSION_VARS['date'] = $dates[$tempWeek][$id];
}

?>
<center>
<form action="<?=$PHP_SELF?>" method="post">
<?
//temp
$tempDate = time();
$tempWeek = 0;

for ($r = 0; $r < $max_weeks * 7; $r++)
{
        $weekDay = date("w",$tempDate);

        $dates[$tempWeek][$weekDay] = date("d-m-Y",$tempDate);

        if ($weekDay == "0")
        {
                $tempWeek++;
        }

        $tempDate += 60*60*24;
}
?>
<p>Udskrift af dobbelt-array:</p>
<?
for ($i = 0; $i < $max_weeks + 1; $i++)
{
        echo "<p>";
    for ($l = 0; $l < 7; $l++)
    {
        echo $dates[$i][$l]." ";
    }
    echo "</p>";
}
?>
<p>
<input type="submit" name="d1" value="<?=$weekdays[1]?>">&nbsp;
<input type="submit" name="d2" value="<?=$weekdays[2]?>">&nbsp;
<input type="submit" name="d3" value="<?=$weekdays[3]?>">&nbsp;
<input type="submit" name="d4" value="<?=$weekdays[4]?>">&nbsp;
<input type="submit" name="d5" value="<?=$weekdays[5]?>">&nbsp;
<input type="submit" name="d6" value="<?=$weekdays[6]?>">&nbsp;
<input type="submit" name="d0" value="<?=$weekdays[0]?>">&nbsp;
<?
if ($d1)
{
        changeDate(1);
}
elseif ($d2)
{
        changeDate(2);
}
elseif ($d3)
{
        changeDate(3);
}
elseif ($d4)
{
        changeDate(4);
}
elseif ($d5)
{
        changeDate(5);
}
elseif ($d6)
{
        changeDate(6);
}
elseif ($d0)
{
        changeDate(0);
}
else
{
        if ($date1)
        {
                $HTTP_SESSION_VARS['date'] = $date1;
        }
        else
        {
                $HTTP_SESSION_VARS['date'] = date("d-m-Y");
        }
}
?>
</form>
<p><? echo $HTTP_SESSION_VARS['date']; ?></p>
</center>

Men det hjalp ikke.
Er ovenstående kode ikke korrekt?
Avatar billede tigertool Nybegynder
21. juli 2004 - 14:45 #4
Lukker.. fandt ikke en løsning :(
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