Avatar billede bmdk Nybegynder
05. august 2009 - 22:28 Der er 5 kommentarer og
1 løsning

Sende objekt fra en side til en anden

Hey eksperter,

Jeg har et "simpelt" spørgsmål til jer:

Er det på nogen måde muligt at sende et objekt fra en side til en anden via et ganske almindeligt link (<a href=""><a/>)?

Jeg tænker i retning af at gøre brug af serialize og unserialize?

Vil nemlig helst undgå for så vidt muligt at gøre brug af session til formålet.

I kan se lidt kode her:

$resultArray = $tabCtr->searchTab($searchString);
        if(!isset($resultArray[0])) {
            echo "Din søgning på <b>$searchString</b> gav ingen resultater";
        } else {
       
            foreach($resultArray as $value) {
                $artist = $value->getArtist();
                $songTitle = $value->getSongtitle();
                $instrument = $value->getInstrument();
                echo "
                    <div id=\"searchArtist\">$artist</div>
                    <div id=\"searchSongtitle\">$songTitle</div>
                    <div id=\"searchInstrument\">$instrument</div>
                ";
            }
        }

Det ville være fedt, hvis det kunne laves sådan, at når man klikkede på "artist" f.eks., så tog den det pågældende objekt med til næste side. Men ved ikke om det er for besværligt?

En anden mulighed er jo også at hive id'et ud af objektet og hente det på næste side med $_GET, men ulempen ved det er så at man skal kontakte databasen igen.

Ideas? :)

Mvh
Avatar billede bmdk Nybegynder
05. august 2009 - 22:33 #1
.. og i øvrigt, hvis nogen har en ide til hvordan det kan laves med en form, så er I meget velkomne til at skrive det! ;) Ville gøre det hele lidt nemmere!
Avatar billede repox Seniormester
05. august 2009 - 22:40 #2
$_GET variabler har en begrænsning i størrelsen - jeg kan ikke huske grænsen, men man støder på at data går tabt når $_GET strengen bliver for lang.

Har du overhovedet kigget på funktionen serialize() i manualen?

Et lille tip at tage med; base64_encode() den serializede streng inden du sender den videre.
Avatar billede bmdk Nybegynder
05. august 2009 - 22:46 #3
repox,

Okay, så er det ikke $_GET jeg skal gøre brug af kan jeg godt se ;)

Ja, jeg har tjek'et serialize ud og ved også godt noget om det..

base64_encode() er skrevet bag øret :) takker
Avatar billede bmdk Nybegynder
05. august 2009 - 23:11 #4
Lavede det med to kald til databasen istedet - det var vist lidt mere medgørligt :)
Avatar billede j4k0b Nybegynder
06. august 2009 - 15:05 #5
bmdk: En ting du blot skal være opmærksom på når du lader brugere supplere objekter vha. en serialized streng er, at de kan give dig hvad som helst. Normalt ville jeg aldrig lade sådanne data komme udefra. Du skal være sikker på at man ikke kan snige kode ind i dit system, for det er naturligvis et stort sikkerhedsbrud.

Jeg vil anbefale dig at gemme objektet i en session (hvorfor er du imod sessions?) og lade brugeren supplere med et Session-ID eller lignende.
Avatar billede bmdk Nybegynder
06. august 2009 - 23:24 #6
hej j4kob og tak for svaret :)

Den måde jeg bygger mit site op på er således:

- Brugeren udfylder en form
- Henter de indtastede data ud med $_POST['']
- Opretter et nyt objekt (f.eks. et member objekt hvis en ny profil skal oprettes)
- Objektet sendes gennem et Control (nogen kalder det Service) lag
- Database laget modtager objektet, "pakker det ud" og sætter data i databasen.

Hvis ellers mine betingelser er 'stramme nok' til, at brugeren ikke kan fylde hvad som helst i objektets variabel, vil der så være noget problem med dette? Har skrevet et par sites i OOP (både PHP og ASP.NET) med en 3 lags arkitektur og det har kørt fint ihvertfald :) Men vil naturligvis gerne lære mere, hvis der er nogle seriøst 'huller' i måden at gøre det på.

Sessions.. er egentlig heller ikke imod sessions, jeg synes blot det var overkill at smide objektet i en session for derefter at skulle slå den ihjel på næste side ;)

Mvh
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