webForumDet fria alternativet

Sessionsfel

1 svar · 231 visningar · startad av Jonny Puma

Jonny PumaMedlem sedan jan. 200420 inlägg
#1

Halloj

Har lite problem med sessioner. Det jag har problem med är att variablerna inte sparas korrekt.

Har följande kod:

sok.php

<?php

include ("ms_functions.php");

if( $_GET[ 'action' ] == "add_item" && $_GET[ 'idnr' ] != "" && $_GET[ 'artist' ] != "" && $_GET[ 'titel' ] != "" && $_GET[ 'pris' ] != "" ) {
     add_item( $_GET[ 'idnr' ] && $_GET[ 'artist' ] && $_GET[ 'titel' ] && $_GET[ 'pris' ] );
}

bla bla bla .....

print "<td align=\"right\"><input type='button' value='Köp' class='knappkop' id='kop' onclick=\"location.href='sok.php?action=add_item&idnr=$Idnr&artist=$Artist&titel=$Titel&pris=$Pris';\" /></td></tr>";

bla ...

?>

ms_functions.php

<?php
session_save_path(".\\temp");
session_start();

function add_item($Idnr, $Artist, $Titel, $Pris){
if (!isset($_SESSION['skiva'][$Idnr])){
    $_SESSION['skiva'][$Idnr] = array('antal' => 1, 'artist' =>$Artist, 'titel' => $Titel, 'pris' => $Pris);
    
  } 
else {
    $_SESSION['skiva'][$Idnr]['antal'] += 1;
    }

}
?>

men sessionen ser ut så här:

skiva|a:1:{i:1;a:4:{s:5:"antal";i:1;s:6:"artist";N;s:5:"titel";N;s:4:"pris";N;}}

Den verkar alltså inte ta emot några värden. Inte ens $Idnr för det ska inte vara 1 som det står i sessionen.

Att länkningen är ok vet jag i och med att den blir så här:

http://localhost/projekt/sok.php?action=add_item&idnr=27&artist=Mogwai&titel=RockAction&pris=149

Har fått enklare sessioner att fungera men denna vill inte av någon anledning.
Det är säkert bara något slarvfel eller så har jag inte riktigt förstått hur det ska se ut.
Skulle vara tacksam för lite hjälp för jag vet inte om jag med mitt lilla kunnande kan lösa detta på egen hand.

Tack på förhand
//Puma

Jonny PumaMedlem sedan jan. 200420 inlägg
#2

Fixat!

Jag har löst det.

if( $_GET[ 'action' ] == "add_item" && $_GET[ 'idnr' ] != "" && $_GET[ 'artist' ] != "" && $_GET[ 'titel' ] != "" && $_GET[ 'pris' ] != "" ) {
     add_item( $_GET[ 'idnr' ] && $_GET[ 'artist' ] && $_GET[ 'titel' ] && $_GET[ 'pris' ] );
}

Skulle igentligen se ut då här:

if( $_GET[ 'action' ] == "add_item" && $_GET[ 'idnr' ] != "" && $_GET[ 'artist' ] != "" && $_GET[ 'titel' ] != "" && $_GET[ 'pris' ] != "" ) {
     add_item( $_GET[ 'idnr' ] , $_GET[ 'artist' ] , $_GET[ 'titel' ] , $_GET[ 'pris' ] );
}

alltså kommatecken istället för &&

133 ms totalt · 3 externa anrop · v20260731065814-full.16f3d68c
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)