1Danke
ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
467
467
EMPFEHLEN
-
04.11.09 15:51 #1
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Ich entwickle über EasyPHP auf dem Hiemrechner (phpversion 5.2.8), dort funktioniert das Warenkorb script ohne Probleme.
Nun hab ich es auf den Webserver geladen (phpversion 5.2.9) und der sagt:
Fatal error: Cannot use object of type benutzer as array
besteller ($_SESSION["benutzer"]) wird als '= array()' initialisiert allerdings behandelt er es nicht als solches.
Nun habe ich in einen Versuch gestartet und das Script
von $_SESSION["benutzer"]["name"]
auf $_SESSION["benutzer"]->name umgestellt.
So funktioniert es auch aber ich bekomme an anderen Stellen Probleme.
Kennt jemand eine Lösung für dieses Problem?
MfG Mohag.Geändert von Mohag (04.11.09 um 16:23 Uhr)
Einstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
Poste bitte die entsprechenden Ausschnitte deines codes in den [PHP] Tags
Google und die Forensuche beantworten 50% aller Fragen!
Pflichtlektüre: Das PHP Handbuch als Windows Help Datei
Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
[PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]
Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.
-
04.11.09 18:37 #3
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Initialisiere benutzer als array,
und im Script werden einträge ins array geschrieben.PHP-Code:$_SESSION["benutzer"] = array();
usw..PHP-Code:$_SESSION["benutzer"]["name"] = $_POST["name"];
versuche ich nun auf die Einträge zuzureifen,
Sagt der Parser:PHP-Code:if(isset($_SESSION["benutzer"]["name"])) echo($_SESSION["benutzer"]["name"]);
Fatal error: Cannot use object of type benutzer as array
Das script läuft ja (auf dem localhohst system) nur der Webserver will nicht..
Kann das an dem Versionsunterschied liegen?
könnte es helfen in alles in php 4 parsen zu lassen?
MfG Mohag.Einstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
Hast du eine Variable oder Klasse namens "session"?
In PHP 5.x gibt (oder gab) es einen Bug, der somit die richtig Session überschreiben kann.
Allerdings weiss ich nicht durch welches Verhalten dieser ausgelöst wurde, ich weiss nur noch "da war mal was".
Dass die Session vor dem ersten Zugriff auch gestartet werden muss ist hoffentlich selbstverständlich.mfg
DeluXe
-
Versionsprobleme sind unwarscheinlich.....
Hast du $_SESSION["benutzer"] schon vorher initialisiert?
Als Klassenobjekt?
Aber selbst dann müsste er es überschreiben....
Wenn nein lass $_SESSION["benutzer"] = array(); mal raus denn in PHP brauchst du es bei deiner Syntax nicht als Array initialisieren das merkt er selbst...
Poste mal das Gesamtscript.Google und die Forensuche beantworten 50% aller Fragen!
Pflichtlektüre: Das PHP Handbuch als Windows Help Datei
Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
[PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]
Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.
-
04.11.09 19:37 #6
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
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:
Nun die besteller.phpPHP-Code:<?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>
Diese soll mir halt im Array $_SESSION[] unter benutzer ein array für dessen Daten schaffen..
Und nun noch die order_step2.php in der der Fehler das erste mal aufgetaucht ist.PHP-Code:
<?php
/**
* @author Marcel Burkhardt
* @copyright 2009
*
* erstellen der Besteller SESSION
*/
class besteller
{
function besteller()
{ }
function createbesteller()
{
$_SESSION["besteller"] = array();
}
}
?>
Zudem meckert er es im steuerscript und auch beim warenkorb an..
Hier noch der Warenkorb:PHP-Code: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
}
}
PHP-Code:
<?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;
}
}
?>Einstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
Hast du mal ein var_dump( $_SESSION ) gemacht und geschaut, ob darin Wirklich nur die gewünschten Datentypen enthalten sind?
Falls du dir nicht sicher bist, poste einfach mal die Ausgabe hier. In deinem Auszug kann ich jedenfalls nichts finden.mfg
DeluXe
-
04.11.09 20:26 #8
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Das ist die Ausgabe des var_dump() sieht (finde ich) alles bestens aus.PHP-Code:array(3)
{
["ausgabe"]=> ∫(3)
["besteller"]=> array(8)
{
["name"]=> string(16) "Marcel Burkhardt"
["email"]=> string(27) "marcel.burkhardt@lilsoft.de"
["strasse"]=> string(9) "Bauernweg"
["nummer"]=> string(1) "9"
["plz"]=> string(5) "37318"
["ort"]=> string(9) "Bornhagen"
["telefon"]=> string(0) ""
["serok"]=> int(0)
}
["warenkorb"]=> array(0)
{
}
}
Mach ich jetzt wieder einen Schritt zurück kommt der ERROR.
MfG MohagEinstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
wie jetzt? Ist das die Ausgabe nach dem fehler oder wie? oO
Setze mehrere var_dump vor und nach veränderung der variable.Google und die Forensuche beantworten 50% aller Fragen!
Pflichtlektüre: Das PHP Handbuch als Windows Help Datei
Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
[PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]
Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.
-
05.11.09 01:26 #10
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Seh ich das richtig das er mir beim Sprung weiter (oder zurück)PHP-Code:
array(3)
{
["ausgabe"]=> ∫(5)
["besteller"]=> &object(besteller)#2 (0)
{
}
["warenkorb"]=> &object(warenkorb)#3 (0)
{
}
}
die SESSION var löscht bzw ein object (klasse o. ä.) daraus macht..
Na gut, ist ja auch der Fehler den er beschreibt..
Nur, wo kommt das her
MfG Mohag.Einstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
Also in dem Teil deines Codes kann ich jetzt keinen Fehler entdecken der dazu führen könnte.
Wo wird noch auf die Sessionvariable zugegriffen?Google und die Forensuche beantworten 50% aller Fragen!
Pflichtlektüre: Das PHP Handbuch als Windows Help Datei
Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
[PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]
Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.
-
05.11.09 12:31 #12
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Dann erst wieder bei der Auswertung diese ist Schritt 5..
Zudem funktioniert es ja, das ist ja das Problem.
Ich sollte vlt doch von einem Bug ausgehen und mich mal mit dem Hoster in verbindung setzen.
MfG MohagEinstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
10.11.09 21:46 #13
- Registriert seit
- Mar 2007
- Ort
- Bornhagen (Thüringen)
- Beiträge
- 51
Also, nach viel hin und her mit dem Hoster kann ich nun sagen das es der oben beschriebene Bug war.
Hat man (in der PHP Version 5.2.9) eine
und instanziert eine Variable mit dem namenPHP-Code:$_SESSION["var"]
, so überschreibtPHP-Code:$var
beim erneuten Aufruf der SeitePHP-Code:$var
Habe das nur mal als Erkenntnis hier niedergeschrieben.PHP-Code:$_SESSION["var"].
PS: Der Hoster kam mir nicht mit einem Update der PHP Version entgegen.
Ich habe das Script anpassen müssen.
Danke für alle Antworten und die schnelle Hilfe!
MfG Mohag.Geändert von Mohag (10.11.09 um 22:08 Uhr)
Einstein sagte einmal,
wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden.
Das ist Relativität.
-
das klingt fast als ob da register globasl noch an sind..... was ist das nur für ein steinzeithoster?
Google und die Forensuche beantworten 50% aller Fragen!
Pflichtlektüre: Das PHP Handbuch als Windows Help Datei
Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
[PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]
Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.
Ähnliche Themen
-
error LNK2019 & fatal error LNK1120
Von HORNSWOGGLE im Forum C/C++Antworten: 4Letzter Beitrag: 24.11.09, 16:31 -
c++ fatal error
Von MedRamBO im Forum C/C++Antworten: 12Letzter Beitrag: 20.10.07, 00:06 -
Fatal Error
Von Soapp im Forum PHPAntworten: 2Letzter Beitrag: 15.10.06, 19:49 -
Fatal Error!
Von Rambo51 im Forum PHPAntworten: 3Letzter Beitrag: 01.11.05, 00:21 -
fatal error
Von kesnw im Forum PHPAntworten: 3Letzter Beitrag: 24.03.05, 13:26





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren