Gelöst Session-ID in php-Datei übergeben

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
Folgendes Problem:
Wir haben Videos bei uns auf der Shopseite, die man bewerten und kommentieren kann. Das Problem ist jetzt, dass wenn ich Artikel im Warenkorb habe, dann eine Bewertung oder eine Stimme abgebe, dass dann mein Warenkorb geleert wird. Das passiert dadurch, dass keine SID mit übergeben wird. Dadurch, dass die beiden "Tools" aber als .php-Datei eingebunden werden, kann ich da die SID nicht übergeben. Hat einer ne Idee wie man das lösen könnte?

Hier mal der Code vom Bewertungstool:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
   <link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <div id="main_mr">
     <?php if ( (!isset($_POST['submit'])) ) { ?>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
            <table width="100%" align="center">
              <tr>
              Your rating:<select name="rate">
              <?php for ($i = 1; $i <= 5; $i++) { echo "<option value=\"$i\">$i</option>"; } ?>
      </select>
              <input type="submit" value="Rate it!" name="submit"/>
		</tr>
		</table>
       </form> 
   <?php } else
            $rate = isset ($_POST['rate']) ? $_POST['rate'] : 0;
            $filename = "ratings";
            $alreadyRated = false;
            $totalRates = 0;
            $totalPoints = 0;
                        
            $ip = getenv('REMOTE_ADDR');
            $oldResults = file('results/'.$filename.'sports02.txt');
            foreach ($oldResults as $value) {
            	$oneRate = explode(':',$value);
            	if ($ip == $oneRate[0]) $alreadyRated = true;	   
            	$totalRates++;
            	$totalPoints += $oneRate[1];
            }

            if ((!$alreadyRated) && ($rate > 0)){            
               $f = fopen('results/'.$filename."sports02.txt","a+");         
               fwrite($f,$ip.':'.$rate."\n");
               fclose($f);
               $totalRates++;
               $totalPoints+=$rate;
            }
            
?>           

<?php
if ((!$alreadyRated) or ($rate > 0))
{
echo "
";
}
?>

<div style="font-size:10px;margin-top:-20px;margin-left:15px;">
<?php 
       echo "$totalRates Bewertungen 
";
?>
  </div>  
<div style="margin-left:10px;">
<?php  
       for ($i=0;$i<round(($totalPoints/$totalRates),0);$i++){
          echo "[img]style/star.png[/img]";
       }
?>          
</div>

  </div>
</body>
 

Thomas Lisson

Administrator
Mitarbeiter
24. März 2006
15.574
299
Köln
Hi,

du verschickst dort ein Formular, d.h. da musst du die Session mit übergeben:

Unter
Code:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

füge das ein:
Code:
<input name="<?php echo(session_name());?>" value="<?php echo(session_id()); ?>"
 

Dealux-GmbH

Sehr aktives Mitglied
5. März 2007
8.676
7
Düsseldorf
Der Ansatz war richtig. So läuft es richtig:

Code:
<input type="hidden" name="<?php echo(session_name());?>" value="<?php echo(session_id()); ?>">

Fehlte nen > am Ende und ich habe den Type auf hidden gesetzt, da man die SID ja nicht sehen soll.

Aber trotzdem vielen Dank mal wieder Thomas!