[php] casten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Ik heb met php een sessie gemaakt.Het sessie id geef ik door aan verschillende bestanden. De sessie bevat een object die dat bevat. Deze is alsvolgt gemaakt in de index.php:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?session_start();?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>De Altijd Blauw Network Spoofer</title>
</head>
<?
include "browser.php";
$d= new Browser();
$d->setIP("test");

$sesid=session_id();
$_SESSION["browseobj"]= $d;

en wordt opgehaald: (andere php-file)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?$sesid=$_REQUEST["sesid"];
session_id($sesid);
session_start();?>
<html>
<head>
<title>De Altijd Blauw Network Spoofer</title>
<link rel="stylesheet" type="text/css" href="style1.css">
</head>
<body>
<?
include "browser.php";
include "dbase.php";

$browseobj=$_SESSION["browseobj"];

$base=new Dbase();
$base->connect();

$ip=$browseobj->getIP();


nu krijg ik de fout:
Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>browser</b> of the object you are trying to operate on was loaded _before_ the session was started in /var/www/html/samba/menu.php on line 19
dat is dus de regel: $ip=$browseobj->getIP();

Met php 5 werkt dit wel, met php 4.3 niet. Is het zo dat php 4 nog iets extra vereist (casten??) kan kan php 4 dit sowieso niet?

[ Voor 12% gewijzigd door elgringo op 29-01-2006 14:10 ]

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Heb je de error message uberhaubt wel gelezen?
Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>browser</b> of the object you are trying to operate on was loaded _before_ the session was started in /var/www/html/samba/menu.php on line 19
Jij doet eerst session_start() en dan pas include je het bestand met je browser class definition.

If you can't beat them, try harder


Acties:
  • 0 Henk 'm!

Verwijderd

Fatal error: Unknown(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition <b>browser</b> of the object you are trying to operate on was loaded _before_ the session was started in /var/www/html/samba/menu.php on line 19
Heb je die error wel gelezen? Je moet dus je class definition includen voor dat je session_start() aanroept.. Heeft niets met casten te maken

edit:
sorry, te laat!

[ Voor 6% gewijzigd door Verwijderd op 29-01-2006 14:16 ]


Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
dingstje schreef op zondag 29 januari 2006 @ 14:15:
Heb je de error message uberhaubt wel gelezen?

[...]

Jij doet eerst session_start() en dan pas include je het bestand met je browser class definition.
Ja, dat komt als ik het niet ik dit krijg:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/samba/browser.php:259) in /var/www/html/samba/menu.php on line 7

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/samba/browser.php:259) in /var/www/html/samba/menu.php on line 7
browser.php is een gewone class definitie

[ Voor 4% gewijzigd door elgringo op 29-01-2006 14:17 ]

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

Verwijderd

Dan moet je de spaties/newlines die buiten <?php ?> staan uit je classfile halen. Nog een tip: ik vind het duidelijker om classes op te slaan als naam.class.php

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
het is de bedoeling dat je je CLASSES (in dit geval dus browser) include VOORDAT je je session start en dus een sessie var (je browser object) dus ophaalt.

en idd, zoals hierboven

een class hoort niks te ouputten, alleen iets te getten en te setten (bij wijze van spreken)

[ Voor 29% gewijzigd door BasieP op 29-01-2006 14:19 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
Die spaties waren idd het probleem. Maar ik loop nu tegen iets nog mooiers aan.

Ik heb een index die een sessie en het browser object maakt welke in de sessie staat.
Als ik in index.php hier een instantie variabele van het object browser instel. Kan een andere php file die het browser object uit de sessie haalt deze variabele niet uitlezen. Hij is dan nog steeds de standaard waarde

if broken it is, fix it you should


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Waar synchroniseer je dat object met je sessie dan?

Acties:
  • 0 Henk 'm!

  • qless
  • Registratie: Maart 2000
  • Laatst online: 17:11

qless

...vraag maar...

Kun je dan niet beter een Static class gebruiken als common binder?

Website|Air 3s|Mini 4 Pro|Avata 2|Canon R6|Canon 5d2|8 fisheye|14f2.8|24f2.8|50f1.8|135f2|10-22|17-40|24-105|70-300|150-600


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Het is me niet echt duidelijk wat je wilt en wat er mis gaat nu met je script. Slaat hij je waarden niet op in je sessie? Lukt het niet die sessie over te pakken zodat je waarden wegzijn?\

Btw. Groetjes van je bijna-buurman (woon paar huizen verderop) en jullie huissite laat mn browser (FF1.5) keihard crashen.

Acties:
  • 0 Henk 'm!

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 16-09 20:30
De bedoeling is dat het browser object dat bevat die aan verschillende files / pagina's doorgegeven moet worden. Bij php kun je $browserobject=$_session["browser"] doen en als browserobject verandert verandert de session var mee. Bij php 4 is dit niet zo. De oplossing is als het object verandert is dit te doen: $_session["browser"]=$browserobject

Dan werkt alles wel en wordt de sessie var ook aangepast

if broken it is, fix it you should

Pagina: 1