webForumDet fria alternativet
Logga in / Bli medlem

Sessionsfel

PHP

1 svar · 233 visningar · startad av Jonny Puma

Medlem sedan jan. 200420 inlägg
Trådstart#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

Medlem 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 &&

254 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)