Das gesamtscript posten ist ein wenig schwierig..
Ist zweisprachig und ein in 6 Schritte aufgeteilter Bestellvorgang..
Ja, die Sessionvariable wird in einer klasse initialisiert.
Und ja, das mit dem session_start() ist mir auch bewusst.
versuchs al grob zu erläutern und ein paar Beispielschnipsel zu geben:
Aufruf des Vorgangsscriptes
-> abfrage bestimmter Grundvoraussetzungen (SID, Sprache und Schritt)
-> ab Schritt 3 überprüf das Script ob $_SESSION["benutzer"] existiert isset()
-> dann wird das $_POST[] array ausgewertet.
Funktioniert bis hierher auch ganz gut, nur wenn ich dann (wenn $_SESSION["benutzer"] existiert) darauf zu greife kommt der error.
Das ist so gesehen der Kopf der Cobra:
PHP:
<?php
/*
* Session starten
*/
session_start();
require_once("warenkorb.php");
require_once("besteller.php");
$warenkorb = new warenkorb();
$besteller = new besteller();
if(!isset($_GET["sid"]))
{
$sid = session_id();
}
else
{
session_id($_GET["sid"]);
$sid = $_GET["sid"];
}
if(!isset($_GET["step"])
|| $_GET["step"] == "")
{
header("Location:?step=1?sid=".$sid);
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="lilSoft" />
<meta name="author" content="Marcel Burkhardt" />
<title>Coinbook bestellen</title>
</head>
<body>
<?php
include("head.html");
if($_GET["step"] == 1)
{
if(!isset($_SESSION["ausgabe"]))
$_SESSION["ausgabe"] = 1;
else
$_SESSION["ausgabe"] += 1;
require_once("order_step1.php");
$s1 = new step1_de();
$s1->start_step1();
}
if($_GET["step"] == 2)
{
if(!isset($_SESSION["ausgabe"]))
$_SESSION["ausgabe"] = 1;
else
$_SESSION["ausgabe"] += 1;
require_once("order_step2.php");
$s2 = new step2_de();
$s2->start_step2();
}
if($_GET["step"] == 3)
{
if(!isset($_SESSION["ausgabe"]))
$_SESSION["ausgabe"] = 1;
else
$_SESSION["ausgabe"] += 1;
if(!isset($_SESSION["besteller"]))
{
$besteller->createbesteller();
}
if(!isset($_SESSION["warenkorb"]))
{
$warenkorb->createwarenkorb();
$warenkorb->fillwarenkorb();
}
$bOk = true;
if(isset($_POST["name"])
&& strlen($_POST["name"]) > 0)
$_SESSION["besteller"]["name"] = $_POST["name"];
else
$bOk = false;
if(isset($_POST["email"])
&& strlen($_POST["email"]) > 0)
$_SESSION["besteller"]["email"] = $_POST["email"];
else
$bOk = false;
if(isset($_POST["strasse"])
&& strlen($_POST["strasse"]) > 0)
$_SESSION["besteller"]["strasse"] = $_POST["strasse"];
else
$bOk = false;
if(isset($_POST["nummer"])
&& strlen($_POST["nummer"]) > 0)
$_SESSION["besteller"]["nummer"] = $_POST["nummer"];
else
$bOk = false;
if(isset($_POST["plz"])
&& strlen($_POST["plz"]) > 0)
$_SESSION["besteller"]["plz"] = $_POST["plz"];
else
$bOk = false;
if(isset($_POST["ort"])
&& strlen($_POST["ort"]) > 0)
$_SESSION["besteller"]["ort"] = $_POST["ort"];
else
$bOk = false;
if(isset($_POST["telefon"]))
$_SESSION["besteller"]["telefon"] = $_POST["telefon"];
if(isset($_POST["old"]))
{
$_SESSION["besteller"]["old"] = true;
if(isset($_POST["ser1"])
&& strlen($_POST["ser1"]) > 0)
$_SESSION["besteller"]["ser1"] = $_POST["ser1"];
if(isset($_POST["ser2"])
&& strlen($_POST["ser2"]) > 0)
$_SESSION["besteller"]["ser2"] = $_POST["ser2"];
else
$_SESSION["besteller"]["ser1"] = 0;
if(isset($_POST["ser3"])
&& strlen($_POST["ser3"]) > 0)
$_SESSION["besteller"]["ser3"] = $_POST["ser3"];
else
{
$_SESSION["besteller"]["ser1"] = null;
$_SESSION["besteller"]["ser2"] = null;
}
}
else
{
if(isset($_POST["ser1"])
&& strlen($_POST["ser1"]) < 1
&& isset($_POST["ser2"])
&& strlen($_POST["ser2"]) < 1
&& isset($_POST["ser3"])
&& strlen($_POST["ser3"]) < 1
&& isset($_SESSION["besteller"]["old"]))
{
$_SESSION["besteller"]["old"] = null;
$_SESSION["besteller"]["ser1"] = null;
$_SESSION["besteller"]["ser2"] = null;
$_SESSION["besteller"]["ser3"] = null;
}
}
if(!isset($_GET["artid"]))
{
if(!$bOk
&& (!isset($_SESSION["besteller"]["name"])
|| !isset($_SESSION["besteller"]["email"])
|| !isset($_SESSION["besteller"]["strasse"])
|| !isset($_SESSION["besteller"]["nummer"])
|| !isset($_SESSION["besteller"]["plz"])
|| !isset($_SESSION["besteller"]["ort"])))
{
require_once("order_step2.php");
$s2 = new step2_de();
$s2->start_step2();
}
}
if(isset($_SESSION["besteller"])
&& isset($_SESSION["warenkorb"]))
{
require_once("order_step3.php");
$s3 = new step3_de();
$s3->start_step3($warenkorb, $_GET["sid"]);
}
else
{
include_once("order_error.php");
}
}
if($_GET["step"] == 4)
{
if(!isset($_SESSION["ausgabe"]))
$_SESSION["ausgabe"] = 1;
else
$_SESSION["ausgabe"] += 1;
if(isset($_POST["waer"]))
{
$waer = $_POST["waer"];
}
else
{
$waer = "EUR";
}
if(isset($_POST["bUpdate"]))
{
$bud = $_POST["bUpdate"];
}
else
{
$bud = 0;
}
if(isset($_SESSION["besteller"])
&& isset($_SESSION["warenkorb"]))
{
require_once("order_step4.php");
$s4 = new step4_de();
$s4->start_step4($warenkorb, $waer, $bud);
}
else
{
include_once("order_error.php");
}
}
if($_GET["step"] == 5)
{
if(!isset($_SESSION["ausgabe"]))
$_SESSION["ausgabe"] = 1;
else
$_SESSION["ausgabe"] += 1;
if(isset($_SESSION["besteller"])
&& isset($_SESSION["warenkorb"]))
{
require_once("order_step5.php");
$s5 = new order_step5_de();
$s5->StartBest();
$warenkorb->createwarenkorb();
$besteller->createbesteller();
session_destroy();
}
else
{
include_once("order_error.php");
$warenkorb->createwarenkorb();
$besteller->createbesteller();
session_destroy();
}
}
if($_GET["step"] == 6)
{
require_once("order_step6.php");
$s6 = new step6_de();
if(isset($_POST["name"])
&& isset($_POST["email"])
&& isset($_POST["strasse"])
&& isset($_POST["nummer"])
&& isset($_POST["plz"])
&& isset($_POST["ort"])
&& isset($_POST["telefon"]))
{
$s6->send($_POST["name"], $_POST["email"], $_POST["strasse"], $_POST["nummer"], $_POST["plz"], $_POST["ort"], $_POST["telefon"]);
?>
<script type="text/javascript">window.close(); </script>
<?php
}
else
{
$s6->startOutput();
}
}
?>
</body>
</html>
Nun die besteller.php
Diese soll mir halt im Array $_SESSION[] unter benutzer ein array für dessen Daten schaffen..
PHP:
<?php
/**
* @author Marcel Burkhardt
* @copyright 2009
*
* erstellen der Besteller SESSION
*/
class besteller
{
function besteller()
{ }
function createbesteller()
{
$_SESSION["besteller"] = array();
}
}
?>
Und nun noch die order_step2.php in der der Fehler das erste mal aufgetaucht ist.
Zudem meckert er es im steuerscript und auch beim warenkorb an..
PHP:
class step2_de
{
function step2_de()
{ }
function start_step2()
{
?>
<h2>Coinbook (2008) bestellen Schritt 2</h2><br /><br />
<form action="?step=3&sid=<?php echo(session_id()); ?>" method="post">
<table>
<tr>
<td>Name:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["name"])) echo($_SESSION["besteller"]["name"]); ?>" name="name" /></td>
</tr>
<tr>
<td>E Mail:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["email"])) echo($_SESSION["besteller"]["email"]); ?>" name="email" /></td>
</tr>
<tr>
<td>Straße:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["strasse"])) echo($_SESSION["besteller"]["strasse"]); ?>" name="strasse" /></td>
</tr>
<tr>
<td>Nummer:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["nummer"])) echo($_SESSION["besteller"]["nummer"]); ?>" name="nummer" /></td>
</tr>
<tr>
<td>Plz:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["plz"])) echo($_SESSION["besteller"]["plz"]); ?>" name="plz" /></td>
</tr>
<tr>
<td>Ort:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["ort"])) echo($_SESSION["besteller"]["ort"]); ?>" name="ort" /></td>
</tr>
<tr>
<td>Telefon:</td><td colspan="2"><input type="text" value="<?php if(isset($_SESSION["besteller"]["telefon"])) echo($_SESSION["besteller"]["telefon"]); ?>" name="telefon" /></td>
</tr>
<tr>
<td colspan="3">(Für eventuelle Rückfragen)</td>
</tr>
<tr>
<td><input type="checkbox" <?php if(isset($_SESSION["besteller"]["old"])) echo('checked="checked"'); ?> name="old" /></td><td colspan="2">Ja, Ich besitze bereits Coinbook in der Version 2006</td>
</tr>
<tr>
<td><input type="text" value="<?php if(isset($_SESSION["besteller"]["ser1"])) echo($_SESSION["besteller"]["ser1"]); ?>" name="ser1" /></td><td><input type="text" value="<?php if(isset($_SESSION["besteller"]["ser2"])) echo($_SESSION["besteller"]["ser2"]); ?>" name="ser2" /></td><td><input type="text" value="<?php if(isset($_SESSION["besteller"]["ser3"])) echo($_SESSION["besteller"]["ser3"]); ?>" name="ser3" /></td>
</tr>
<tr>
<td colspan="3">Für das entfernen der eingegebenen Lizenz müssen alle Felder zurücksetzt werden.</td>
</tr>
<tr>
<td><a href="?step=1&sid=<?php echo(session_id()); ?>" style="text-decoration: none;"><input type="button" value="Einen Schritt zurück" /></a></td><td colspan="2"><input type="submit" value="Weiter zum nächsten Schritt" /></td>
</tr>
</table>
</form>
<?php
}
}
Hier noch der Warenkorb:
PHP:
<?php
/**
* @author Marcel Burkhardt
* @copyright 2009
*
* erstellen der Warenkorb SESSION
*
* Füllen der SESSION mit Artikeldaten
* (Index)
*/
require_once("../../CDbConnection.php");
class warenkorb
{
function warenkorb()
{
}
function createwarenkorb()
{
$_SESSION["warenkorb"] = array();
}
function fillwarenkorb()
{
$Connection = new CDbConnection();
$verbindung = $Connection->OpenConnection("localhost","cb_adusr","cb_ad_user_pw","CoinbookDb");
$Rows = $Connection->GetRows("*", "tblartikel", "");
if($Rows)
{
while($Row = mysql_fetch_assoc($Rows))
{
$_SESSION["warenkorb"][$Row["colIndex"]] = 0;
}
}
$Connection->CloseConnection($verbindung);
}
function Insert($Id)
{
$_SESSION["warenkorb"][$Id] = 1;
}
function Remove($Id)
{
$_SESSION["warenkorb"][$Id] = 0;
}
function _isIn($Id)
{
foreach($_SESSION["warenkorb"] as $Index => $menge)
{
if($Index == $Id
&& $menge == 1)
return true;
}
return false;
}
}
?>