Avatar billede stonejunkie Nybegynder
01. januar 2006 - 15:16 Der er 5 kommentarer og
1 løsning

Serialisering af objekt

Jeg har i dette spørgsmål(http://eksperten.dk/spm/675867)spurgt omkring overføring af objkter med GET/POST. Men nu har jeg prøvet mig frem med serialisering men uden held. Jeg har læst PHP's dokumentation om emnet men det virker stadig ikke.

Jeg håber der er nogen der kan hjælpe mig på rette vej.

Her er mit test eksempel, når jeg kører dette eksempel så får jeg at vide at mit unserialiserede objekt i 2.php er tomt.
--------------------------------
testClass.php:
<?PHP
  class A {
    var $one = "this class";
 
    function show_one() {
        echo $this->one;
    }
  }
?>
----------------------------
1.php:
<?php
require("testClass.php");

$myObject = new A();
$serializedObj = serialize($myObject);
?>

<form action="2.php" method="post">
<input type="hidden" name="obj" value="<?php echo($serializedObj);?>" />
<input type="submit" name="submit" value="OK"/>
</form>

----------------------------------
2.php:
<?php
require("testClass.php");

if($_POST["submit"]){
   
  $unSerializedObj = unserialize($_POST['obj']);
  if(!empty($unSerializedObj)){
      $unSerializedObj->show_one();
  } else echo("Objektet er tomt");
} else echo("Variablen submit ikke sat.");
?>
----------------------------------------------
Avatar billede Slettet bruger
01. januar 2006 - 17:31 #1
echo er ikke en funktion, ergo skal outputtet ikke skrives i (), men bare som "echo 'string';"

Prøv at teste om $_POST['obj'] er sat, i stedet for at teste på det unserializede objekt.
Avatar billede ranglen Nybegynder
01. januar 2006 - 17:36 #2
hvis du kigger på kildekoden i browseren, så er problemet tydeligt. Den serialiserede streng indeholder gåseøjne, det kan browseren ikke så godt finde ud af at håndtere. urlencode kan være en løsning
Avatar billede stonejunkie Nybegynder
01. januar 2006 - 18:32 #3
Tak for jeres svar.

Nu ser min kode således ud men nu får jeg denne fejlmeddelelse:
Fatal error: Call to a member function on a non-object in /var/www/webpages/2.php on line 47

------------
1.php
require("testClass.php");

$myObject = new A();
$myObject->show_one();
$serializedObj = urlencode(serialize($myObject));

?>

  <form action="2.php" method="post">
  <input type="hidden" name="obj" value="<?php echo $serializedObj;?>" />
  <input type="submit" name="submit" value="OK"/>
  </form>
---------------------
2.php
<?php
require("testClass.php");

if($_POST["obj"]){
  $unSerializedObj = unserialize($_POST["obj"]);
  $unSerializedObj->show_one();
}

?>
----------------
testClass.php er den samme som før.
Avatar billede ranglen Nybegynder
01. januar 2006 - 18:40 #4
prøv

$unSerializedObj = unserialize(urldecode($_POST["obj"]));
Avatar billede stonejunkie Nybegynder
01. januar 2006 - 18:45 #5
nu virker det. Tak for hjælpen.

Ranglen hvis du smider et svar så skal du få dine point.
Avatar billede stonejunkie Nybegynder
07. januar 2006 - 17:11 #6
Jeg går ud fra at pointene ikke har interesse, så jeg lukker selv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester