Problem mit Sessions bei Warenkorb

03/07/2013 20:01 12345manu#1
Erstmal Hallo, undzwar habe ich einen Warenkorb erstellt, leider habe ich das Problem, dass wenn ich auf "in den Warenkorb" klicke die Session und die ID nicht übernommen werden, also es nicht in den Warenkorb kommt. Ich wäre sehr dankbar für jegliche Hilfe hier die Codes:

Ist auf jeder Seite, da hab ich die ID's der Sachen festgelegt und Preise + name als variablen...

PHP Code:
<?php
ini_set
("session.use_cookies""0");
ini_set("url_rewriter.tags",   "");

session_start();
session_register('warenkorb');

$waren = array(
 
'1' = array(
  
'name' 'autor',
  
'titel' 'titel
"></a>'
,
  
'preis' 0.50,
  
'text' 'inhalt.',
  
'nr' 'buch-001'
 
),
 
'2' => array(
  
'name' 'autor2',
  
'titel' 'anderer titel',
  
'preis' 49.95,
  
'text' 'blablabla',
  
'nr' 'buch-002
'
 
)
);

    include(
"connect.php");

?>
<html>
<head>
<title>Titel</title>
<style type="text/css">
      h2 {
        font-family:Arial;
        color:red;
      }
      h3 {
        font-family:Arial;
        color:orange;
      }
      ul li {
         font-family:Serif;
         color:grey;
      }
      ul li ul li {
         font-family:Serif;
         color:grey;
      }
      td {
         font-family:Serif;
         color:black;
      }
</style>
</head>
<body>
<div id="index">
Hier werden die ID's ausgelesen, ich glaube iwo hier ist der fehler aber debuggen hilft auch nicht...

PHP Code:
<?php
 
include("oben.php");
?>
<h2>Warenkorb</h2><hr>
<?php

  
foreach ($waren as $id => $produkt
  
    
printf('
    <fieldset><legend><h3>%s</h3></legend>
    <table>
    <tr>
    <td>
    %s
    </td>
    <td>
    <ul type="square">
        <li>Preis:</li>
        <ul>
        <li>Euro %01.2f</li>
        </ul>
        <li>Genaue Beschreibung:</li>
        <ul>
        <li>%s</li>
        </ul>
        </ul>
        </td>
        </tr>
        </table>
        <a href="setkorb.php?id=%d&%s">In den Warenkorb</a>
        <br>
        </fieldset>
        <br>
        <br>
    '
,
    
$produkt['name'],
    
$produkt['titel'],
    
$produkt['preis'],
    
$produkt['text'],
    
$id,
    
SID
    
);
    
?>
</body>
</html>
kann aber auch hier sein... (hier werden die ID's und infos an warenkorb geschickt)

PHP Code:
<?php
 
include("oben.php");
 
 if(!isset(
$_GET['id'])){
    die(
"Es befinden sich keine Produkte im Warenkorb.");
 }
 if(!isset(
$_SESSION['warenkorb']) || !in_array($_GET['id'], $_SESSION['warenkorb'])) {
    
       
$_SESSION['warenkorb'][]=$_GET['id'];
    
   }

?>
<p>Das Produkt wurde dem Warenkorb hinzugefügt.</p>
 <a href="korb.php?<?php print SID?>">Zum WarenKorb</a>
 <a href="index.php?<?php print SID?>">Zurück</a>
 </div>
</body>
</html>
hier ist der warenkorb...

PHP Code:
<?php
include("oben.php");
?>
<h2>Warenkorb</h2>
<hr>
<?php
if (isset($_SESSION['warenkorb']) &&
!empty(
$_SESSION['warenkorb'])) {
print 
"<p>Hier ist ihr Warenkorb::</p>";
print 
"<table border=0>";
?>
<tr>
<td WIDTH="80">
<b><p class="ueber">Art.-Nr.</p></b>
</td>
<td WIDTH="420">
<b><p class="ueber">Bezeichnung</p></b>
</td>
<td WIDTH="70">
<b><p class="ueber">Preis</p></b>
</td>
<td WIDTH="40">
<center><b><p class="ueber">&nbsp</p></b></center>
</td>
</tr>
<?php
$preis 
0;
foreach (
$_SESSION['warenkorb'] as $id) {
printf('
<tr>
<td WIDTH="70">
<b><p>%s</p></b>
</td>
<td WIDTH="420">
<b><p>%s</p></b>
</td>
<td WIDTH="70">
<b><p>Euro %01.2f </p></b>
</td>
<td WIDTH="40">
<center><b><p><a href="loesch.php?id=%d&%s" class="del">Löschen</a></p></b></center>
</td>
</tr>
'
,
htmlentities($waren[$id]['nr']),
htmlentities($waren[$id]['name']),
htmlentities($waren[$id]['preis']),
$id,
SID
);
$preis+=$waren[$id]['preis'];
}
?>
<tr> 
<td WIDTH="70"> 
<b><p class="ueber">&nbsp</p></b>
</td> 
<td WIDTH="420">
<b><p>&nbsp</p></b>
</td>
 <td WIDTH="70"> 
 <b><p class="ueber">&nbsp</p></b>
 </td> 
<td WIDTH="40">
<center><b><p>&nbsp</p></b></center>
</td>
</tr>

<tr>
<td WIDTH="70">
<b><p>&nbsp</p></b>
</td>
<td WIDTH="420">
<b><p>Gesamtpreis (ohne Versandgebühren):</p></b>
</td>
<td WIDTH="100">
<b><p>Euro <?php printf("%.2f"$preis); ?></p></b>
</td>
<td WIDTH="40">
<center><b><p class="ueber">&nbsp</p></b></center>
</td>
</tr>
</table>
<p><a href="kasse1.php">&raquo;Zur Kasse</a></p><br>
<?php
}
if(empty(
$_SESSION['warenkorb'])){
echo 
"<p>Sie haben keine Produkte im Warenkorb.</p><br><br>";
}
?>
</div>
</body>
</html>
Hier die lösch funktion fürn warenkorb:

PHP Code:
<?php
include("oben.php");

if (!isset(
$_GET['id']) ||
    !
in_array($_GET['id'], $_SESSION['warenkorb'])) {

  print(
"Sie haben dieses Produkt noch nicht bestellt,
         oder kein Produkt ausgewählt."
);
}
else {
  foreach (
$_SESSION['warenkorb'] as $id => $produkt) {
    if (
$produkt == $_GET['id']) {
      unset(
$_SESSION['warenkorb'][$id]);
    }
  }
  print 
"<p>Das Produkt wurde aus dem Warenkorb gelöscht.</p>";
}
?>
<p><a href="korb.php?<?php print SID?>">
    Zum Warenkorb</a></p>
  <p><a href="index.php?<?php print SID?>">
    Zuück
  </a></p>
</div>
</body>
</html>
Hier der erste Teil der Kasse: hier erfolgen die ganzen adress eingaben

PHP Code:
<?php
include("oben.php");
?>
<h2>Kasse</h2>
<hr>

<table border=0>
         <tr>

<td WIDTH="80">

<b><p>Art.-Nr.</p></b>

</td>

<td WIDTH="420">

<b><p>Bezeichnung</p></b>

</td>

<td WIDTH="70">

<b><p>Preis</p></b>

</td>

<td WIDTH="40">

<center><b><p>&nbsp</p></b></center>

</td>

</tr>

    <?php
    $preis 
0;
    foreach (
$_SESSION['warenkorb'] as $id) {
        
printf('
        <tr>
        <td WIDTH="70">

<b><p>%s</p></b>

</td>

<td WIDTH="420">

<b><p>%s</p></b>

</td>

<td WIDTH="70">

<b><p>Euro %01.2f </p></b>

</td>
</tr>
                '
,
                
htmlentities($waren[$id]['nr']),
               
htmlentities($waren[$id]['name']),
               
htmlentities($waren[$id]['preis']),
               
$id,
               
SID
              
);
             
             
$preis+=$waren[$id]['preis']; 
    }
    
?>
    <tr> <td WIDTH="70"> <b><p>&nbsp</p></b></td> <td WIDTH="420"> <b><p>&nbsp</p></b></td> <td WIDTH="70"> <b><p>&nbsp</p></b></td> <td WIDTH="40"><center><b><p>&nbsp</p></b></center></td></tr>
     <tr>

<td WIDTH="70">

<b><p>&nbsp</p></b>

</td>

<td WIDTH="420">

<b><p>Gesamtpreis (ohne Versandgebühren):</p></b>

</td>

<td WIDTH="75">
 
<b><p>Euro <?php printf("%.2f"$preis); ?></p></b>

</td>

<td WIDTH="40">

<center><b><p>&nbsp</p></b></center>

</td>

</tr>
    
    </table>
    <hr>
    
<?php
if (isset($_SESSION['warenkorb']) &&
   !empty(
$_SESSION['warenkorb']) && $_GET['v']=="") {
    
?>
    
    <p>1. Bitte geben Sie Ihre <u>Lieferadresse</u> an</p>
      <?php
    
        
        
if (isset($_POST['sinnlos'])){
                 
            
$email strip_tags($_POST['email']);
            
$name strip_tags($_POST['name']);
            
$zusatz strip_tags($_POST['zusatz']);
            
$str strip_tags($_POST['str']);
            
$plz strip_tags($_POST['plz']);
            
$ort strip_tags($_POST['ort']);
                
                if(!
ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)){
                    
$error_msg='<p>Bitte geben Sie eine gültige E-Mail Adresse an.</p>';
                } 
                if(
strlen($name)<OR strlen($str)<OR strlen($plz)<OR strlen($ort)<3){
                    
$error_msg.='<p>Bitte füllen Sie <u>alle</u> Felder korrekt aus.</p>';
                }
                
            if(
strlen($error_msg)>0)
            {
               
            echo 
"<fieldset><FORM>";
               echo 
$error_msg;
            echo 
"<p class=\"del\" style=\"text-align:center;\"><a href=\"javascript:history.back()\" class=\"del\">Erneut versuchen</a></p>";
            echo 
"</FORM></fieldset><br><br>";            
            }
              
            else {
                
                
$nagut=SID;
                
$eintragen "INSERT INTO tbl_data(sid,email,name,zusatz,str,plz,ort) VALUES ('$nagut','$email','$name','$zusatz','$str','$plz','$ort')";
                
$query mysql_query($eintragen);
                
                
$ubern $name;
                
                if(
$query==1
                    
?><meta http-equiv="refresh" content="0; URL=http://lukas-scheible.de/shop/kassa.php?v=2&<?php print SID?>"><?php
                
if($query<>1)    
                    echo 
"<SCRIPT>alert('Es ist ein Fehler aufgetreten!')</SCRIPT>";
                    
            }
      
      }
      else {  
      
?>
     
        <form action="kasse1.php?<?php echo SID?>" method="POST">
<fieldset>
<label class="formleft" for="email">E-Mail</label>
<input type="text" name="email"><br>
<label class="formleft" for="name">Name</label>
<input type="text" name="name"><br>
<label class="formleft" for="zusatz">Zusatz (optional)</label>
<input type="text" name="zusatz"><br>
<label class="formleft" for="str">Strasse & Nr.</label>
<input type="text" name="str"><br>
<label class="formleft" for="plz">PLZ</label>
<input type="text" name="plz"><br>
<label class="formleft" for="ort">Ort</label>
<input type="text" name="ort"><br>
<label class="formleft" for="land">Land</label>
<input type="text" name="land" value="Deutschland"><br>
<input type="hidden" name="sesid" value="<?php echo SID?>">
</fieldset>
<br>
<input type="submit" class="formsubmit" value="Weiter">
<input type="hidden" name="sinnlos" value="LOL">
<br><br>
</form>
      <?php
      
}
      }
      
        else if (isset(
$_SESSION['warenkorb']) && !empty($_SESSION['warenkorb']) && $_GET['v']==2
        {
        
?>
        
        
        <?php
        
}
        
      else {
         echo 
"<p><b>Sie haben keine Waren im Warenkorb!</b></p>";
         echo 
'
       <SCRIPT type="JavaScript">
       var one=1;
             while (one==1) {
                window.close();
             }
       </SCRIPT>
       '
;
      }
      
?>
</div>
</body>
</html>
Hier der letzte teil mit anschließendem email versand...

PHP Code:
<?php
include("oben.php");
?>
<h2>Kasse</h2>
<hr>
<?php

if (isset($_POST['lol'])) 
{
    
$methode2 $_POST['methode'];
    
$pp $_POST['preis'];
    
$vv $_POST['versand'];
    
$ss SID;
            if (
$vv=="Standartversand") {
                
$nv="Standardversand";
            }
            else if (
$vv=="Versandee") {
                
$nv="Versand via Einschreiben";
            
    
$r_o="SELECT * FROM tbl_data WHERE sid='$ss'";
    
$query3=mysql_query($r_o);
    while (
$hh=mysql_fetch_array($query3)){
    
    
$empfanger $hh['email']; 
    
$nde $hh['name'];
    
$ifu $hh['data_ID'];
    
    }

    
$betreff "Bestellung";
            if (
$methode2=="Vorkasseu") {
                    
$nachricht="Bitte Überweisen Sie die Summe an Folgendes Konto: 


            mail(
$empfanger $empfanger$betreff$nachricht);
            ?>
            
            <meta http-equiv="
refresh" content="0URL=http://b.de"> 
            
<?php
    
}
if (isset(
$_SESSION['warenkorb']) && !empty($_SESSION['warenkorb'])) 
        {
         
        
            
$methode $_POST['zmethode'];
            
$versand $_POST['versandart'];
            
            if (
$methode=="Vorkasseu" OR $methode=="Vorkassep") {
                
$zusatz 0;
            
            }
            
            if (
$versand=="Standartversand") {
                
$zusatz += 0.00;
            }
            
                
            
        
        
?>
<table border=0>
         <tr>

<td WIDTH="70">

<b><p class="ueber">Art.-Nr.</p></b>

</td>

<td WIDTH="420">

<b><p class="ueber">Bezeichnung</p></b>

</td>

<td WIDTH="70">

<b><p class="ueber">Preis</p></b>

</td>

<td WIDTH="40">

<center><b><p class="ueber">&nbsp</p></b></center>

</td>

</tr>
    <?php
   
    $preis 
0;
    
$pd "";
    foreach (
$_SESSION['warenkorb'] as $id) {
        
$pd.=htmlentities($waren[$id]['name']);
       
printf('
        <tr>
        <td WIDTH="70">

<b><p class="ok">%s</p></b>

</td>

<td WIDTH="420">

<b><p class="ok">%s</p></b>

</td>

<td WIDTH="70">

<b><p class="ok">Euro %01.2f </p></b>

</td>
</tr>
                '
,
                
htmlentities($waren[$id]['nr']),
               
htmlentities($waren[$id]['name']),
               
htmlentities($waren[$id]['preis']),
               
$id,
               
SID
              
);
            
              
$preis+=$waren[$id]['preis']; 
    }
    
$preis+=$zusatz;
    
?>
    <tr> <td WIDTH="70"> <b><p>&nbsp</p></b></td> <td WIDTH="420"> <b><p>&nbsp</p></b></td> <td WIDTH="70"> <b><p>&nbsp</p></b></td> <td WIDTH="40"><center><b><p>&nbsp</p></b></center></td></tr>
     <tr>

<td WIDTH="70">

<b><p>&nbsp</p></b>

</td>

<td WIDTH="420">

<b><p>Gesamtpreis (inkl. aller Zusatzgebühren):</p></b>

</td>

<td WIDTH="75">

<b><p>Euro <?php printf("%.2f"$preis); ?></p></b>

</td>

<td WIDTH="40">

<center><b><p>&nbsp</p></b></center>

</td>

</tr>
    
    </table>
    <?php
        $datum
=date("Y-m-d H:i:s");
        
$nagut=SID;
        
$eintragen "INSERT INTO tbl_vm(sid,vart,zm,preis,produkte,datetime) VALUES('$nagut','$versand','$methode','$preis','$pd','$datum')";
        
$query mysql_query($eintragen);
        
    
?>
    <hr>
    <?php
    
        
if ($methode=="Vorkasseu") {
                
?>
                <p>Die Konto-Daten für die &Uuml;berweisung, sowie weitere Informationen, werden, sobald Sie "Abschlie&szlig;en" klicken, an Ihre angegebene E-Mail Adresse versendet.<br>Ihren Gesamtpreis sehen Sie jetzt oben.</p>
                <?php
            
    
            
<FORM action="kasse2.php?<?php echo SID; ?>" method="POST">
            <
input type="hidden" name="lol" value="">
            <
input type="hidden" name="preis" value="<? echo $preis ?>">
            <
input type="hidden" name="versand" value="<? echo $versand ?>">
            <
input type="hidden" name="methode" value="<? echo $methode ?>">
            <
input type="submit" class="formsubmit" name="submit" value="Abschlie&szlig;en">
                </
FORM>
        <?
php
        
}
    
?>
Bitte mal anschauen ist wichtig ;(
03/10/2013 02:05 Fehlgeschlagen#2
: ) Und hallo sql injektion