FraXinuS Skrevet 20. februar 2012 Del Skrevet 20. februar 2012 $_SESSION skal bli oppdatert, kan du poste koden du brukte? For å lage en kopi kan du bruke clone. Lenke til kommentar
WillY- Skrevet 20. februar 2012 Forfatter Del Skrevet 20. februar 2012 Å beklager, må ha vært en array jeg testa med! Har en test fil jeg tester alt mulig i, så jeg går litt i surr Lenke til kommentar
dahuff Skrevet 20. februar 2012 Del Skrevet 20. februar 2012 (endret) Ett lite spørsmål: $obj = & new Object($param); Hva er egentlig poenget med referanse der? Skjønner viss det er "$obj = & $someObject" for da er det en direkte referanse, men referanse til "new" skjønner jeg ikke helt Den plassen det gir mening å bruke &, eller referanse, er når du skal manipulere en variabel du sender inn i en funksjon/metode. PHP bruker dette f.eks. for preg_match(), hvor resultatet lagres i tredje parameter "$matches": http://no2.php.net/manual/en/function.preg-match.php Generelt gir det ikke mening å bruke referanse, utenom slik som i eksempelet. PHP er ikke C. Endret 20. februar 2012 av dahuff 1 Lenke til kommentar
WillY- Skrevet 21. februar 2012 Forfatter Del Skrevet 21. februar 2012 Skjønner ikke hvorfor jeg ser så mange som skriver $obj = & new Object() da. Kanskje de er litt prega av C hehe Lenke til kommentar
FraXinuS Skrevet 21. februar 2012 Del Skrevet 21. februar 2012 (endret) Det er mest sannsynlig gammel kode, det ble brukt i PHP4 fordi der ble objekter kopiert som standard. Edit: Hvis du bruker php5.3 skal du få en advarsel om at den syntaxen ($obj = & new Object()) snart vil bli fjernet. Endret 21. februar 2012 av FraXinuS 1 Lenke til kommentar
WillY- Skrevet 29. februar 2012 Forfatter Del Skrevet 29. februar 2012 Det fungerte glimrende med objektene i session!! Fikk først _PHP_incomplete_object, men bare omstrukturerte includesa mine så fungerte det. Men! Nå støtte jeg på et problem. En administratorbruker kan assigne en bruker til et kurs. Men dette vil jo ikke brukeren som er logget inn se, siden brukeren får sin informasjon cacha i SESSION. Brukeren vil altså ikke se dette før han/hun logger inn på nytt (og objektene er ferskt oppdatert fra databasen). Hadde det vært selve brukeren selv som assigna seg selv, hadde det jo vært noe problem. Men når det er annen bruker som gjør oppdateringene, blir det verre.. Finnes det noen måte å "tvinge" brukeren til å oppdatere SESSION hvis en admin har gjort en endring? Lenke til kommentar
Sono Juventino Skrevet 1. mars 2012 Del Skrevet 1. mars 2012 Den kanskje enkleste måten jeg kommer på er å oppdatere et timestamp i et felt i brukertabellen når det gjøres endringer. Om du så setter siste tidspunkt for oppdatering i session også, vil du kunne sammenligne tidene. Om tiden i databasen er nyere enn i session, bygger du objektet igjen med nye data, legger det i session og oppdatere tidspunkt i session. Psuedokode: (objektet lages og tid settes) $_SESSION['courses'] = new Course(); $_SESSION['updated'] = new DateTime("now") (admin legger til kurs) query = "INSERT bla bla; UPDATE user set time=now() WHERE user_id=x limit 1"; (bruker laster siden på nytt) $query = "SELECT time FROM user WHERE id=x"; $result = // $mysqli_fetch_array(); if ( $_SESSION['updated'] < $result['time'] ) { unserialize($obj); // bygg objekt på nytt, serialiser igjen } Noen tanker bare. Sikkert ingen spesielt god løsning, men første som slo meg. 1 Lenke til kommentar
WillY- Skrevet 1. mars 2012 Forfatter Del Skrevet 1. mars 2012 Ja det vil jo fungere det! Men vil ikke dette være et vanlig problem for de som bruker f.eks memcache? Noen som kjenner til hvordan det løses der? Så at noen setter objekt cachinga på ett minutt. Men det virker jo litt unødvendig å måtte opprette objektene på nytt i TILFELLE noe var oppdatert på databasen. Så da syntes jeg heller din løsning med timestamp ville fungert bedre da Lenke til kommentar
Terrasque Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 En måte jeg gjør det er å "version'e" nøkkelen. F.eks et event-system på ene siden har en "last event id" som f.eks er på 153771, og alle cache keys har da det event nummeret (f.eks "active_users_153771"). Når event id oppdateres så invalideres alle gamle keys. Det er ikke alltid helt optimalt (event for A invaliderer også cache for B), men fungerer stort sett ganske bra. I andre tilfeller så er det å slette (eller regenerere cache innhold) når endring blir gjort. f.eks "latest_news" - når en ny news entry blir lagt inn blir enten nøkkelen slettet, eller man genererer ny liste ved POST. Du ser kanskje en forskjell mellom memcache og sessions, tho. Alle tråder har tilgang til memcache, og kan endre der. Litt vanskeligere med sessions. Lenke til kommentar
xibriz Skrevet 5. mars 2012 Del Skrevet 5. mars 2012 (endret) Nå har jeg studert problemstillingen med å lagre objektet i sesjon, og jeg fant ikke __sleep() og __wakeup() som gode alternativer for å løse dette. Jeg legger serialiseringen av objektet til sesjonen i __destruct(), da lagres alle endringer automatisk i sesjon. Også bruker jeg unserialize() fra sesjon når jeg skal bruke objektet. Når det gjelder oppdatering av data er ett versjonsnummer veldig vanlig, f.eks. ett timestamp. Endret 5. mars 2012 av xibriz Lenke til kommentar
WillY- Skrevet 5. mars 2012 Forfatter Del Skrevet 5. mars 2012 Er det virkelig nødvendig å drive med serialize/unserialize? Skjønte det sånn at siden PHP 5 så tar SESSION seg av det. Men anyhow, hvorfor syntes du sleep og wakeup fungerte dårlig? Har ikke prøvd noen av disse selv da.. Lenke til kommentar
xibriz Skrevet 5. mars 2012 Del Skrevet 5. mars 2012 (endret) Tja.. ja og nei. Hvis jeg ikke bruker serialize/unserialize får jeg problemer med at PHP ikke har loadet riktig klasse på forhånd pga. at jeg bruker en autoload-klasse om automatisk inkluderer riktig klasse når den blir brukt. Jeg inkluderer aldri noen filer direkte i koden min. The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "test" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in Mulig det er en løsning på dette jeg ikke vet om enda. Hvis du leser dokumentasjonen på sleep og wakeup så ser du at slik det er foreslått her ikke er riktig bruk av funksjonene. EDIT: Nå ble jeg motivert til å finne ut av dette, og det hadde noe å si i hvilken rekkefølge jeg inkluderte autoloader-klassen og kjørte session_start(). Hvis jeg inkluderete autoloader-klassen før session_start() slipper jeg å manuelt drive med serialize/unserialize, men hvis jeg inkluderete autoloader-klassen etter session_start() fikk jeg feilmeldingen som vist over her at den ikke finner riktig klasse, men det ordnet seg hvis jeg manuelt kjøre serialize/unserialize Endret 5. mars 2012 av xibriz Lenke til kommentar
WillY- Skrevet 5. mars 2012 Forfatter Del Skrevet 5. mars 2012 Jeg hadde også problemet med incomplete object. Jeg bare sørga for å include alle klasse-filene før jeg henta ut objektet av session. Jeg har egentlig bare én ini fil med alle sammen: //Includes: require_once(INCLUDES_DIR."config.php"); require_once(INCLUDES_DIR."course.class.php"); require_once(INCLUDES_DIR."session.class.php"); require_once(INCLUDES_DIR."part.class.php"); require_once(INCLUDES_DIR."skill.class.php"); require_once(INCLUDES_DIR."database.class.php"); require_once(INCLUDES_DIR."functions.php"); require_once(INCLUDES_DIR."user.class.php"); require_once(INCLUDES_DIR."comment.class.php"); require_once(INCLUDES_DIR."mobile.class.php"); require_once(INCLUDES_DIR."user_session.class.php"); Den siste der user_session.class.php tar seg av å hente objektene, så den må være sist. Funker fett det ikke noe serializing eller noe sånt.. Lenke til kommentar
xibriz Skrevet 5. mars 2012 Del Skrevet 5. mars 2012 Kommer litt ann på hvor stort prosjekt du har, men å drive å huske på å inkludere filer er noe jeg aldri vil gå tilbake til. Derfor har jeg en autoloader-klasse som henter en ferdig-parset filstruktur, eller parser filstrukturen for å lete etter nye klasser. Og da inkluderer den kun klassene ved behov. Vet ikke hvordan det blir med ytelse dersom du inkluderer 200 filer men bare har bruk for 3? Lenke til kommentar
WillY- Skrevet 5. mars 2012 Forfatter Del Skrevet 5. mars 2012 Kommer litt ann på hvor stort prosjekt du har, men å drive å huske på å inkludere filer er noe jeg aldri vil gå tilbake til. Derfor jeg bare inkluderer "../init.php" i hver fil Men det er nok neppe ideelt i et stort prosjekt. Hadde nok aldri begynt med det hadde det ikke vært for at han duden i PHP Lynda.com kurset sa det hadde veldig lite å si ytelsesmessig. Så jeg var bare lat og har latt det være sånn for nå. Lenke til kommentar
xibriz Skrevet 5. mars 2012 Del Skrevet 5. mars 2012 (endret) Kommer litt ann på hvor stort prosjekt du har, men å drive å huske på å inkludere filer er noe jeg aldri vil gå tilbake til. Derfor jeg bare inkluderer "../init.php" i hver fil Men det er nok neppe ideelt i et stort prosjekt. Hadde nok aldri begynt med det hadde det ikke vært for at han duden i PHP Lynda.com kurset sa det hadde veldig lite å si ytelsesmessig. Så jeg var bare lat og har latt det være sånn for nå. Men du må fortsatt huske å legge nye filer i "../init.php". Der er jeg lat siden jeg lagde ett rammeverk slik at jeg slipper det og heller parser filstrukturen Endret 5. mars 2012 av xibriz Lenke til kommentar
WillY- Skrevet 11. juni 2012 Forfatter Del Skrevet 11. juni 2012 Så, nå har jeg holdt på med PHP og AJAX en stund. Synes det er veldig lett å bruke i jQuery med JSON (til å begynne med sendte jeg alt tilbake som html! ). Men jeg er litt nysgjerrig på hvordan dere strukturer det i et prosjekt. Sånn jeg har det nå, så har jeg en php fil som heter f.eks quiz.ajax.php hvor det er en hel rekke med if-er som bare venter på POST variabler sendt med ajax. Blir kanskje litt rotete, siden lista blir ganske lang Også har jeg en functions.js (som inkluderes i index fila) med en hel rekke jQuery events som sender POST data. F.eks $(".showList").click(function(){ ..kode..}); som tar imot lista i JSON sendt fra PHP, og oppdaterer HTML-koden med lista. Kan bli litt mye kode bare for å oppdatere småting.. Men er kanskje ikke så mange andre måter å gjøre det på? Lenke til kommentar
Terrasque Skrevet 11. juni 2012 Del Skrevet 11. juni 2012 (endret) *blinks* Du bruker en database, right? Og hvis du er ny på databaser, så bør du også lese om sql injection før du setter i gang. Endret 11. juni 2012 av Terrasque Lenke til kommentar
WillY- Skrevet 11. juni 2012 Forfatter Del Skrevet 11. juni 2012 (endret) Jo da, har database (MySQL), og er fult klar over sql injection EDIT: Mulig jeg skifta tema litt, men tenkte det var unødvendig å starte en ny tråd siden vi var inne på noe av det samme Endret 11. juni 2012 av WillY- Lenke til kommentar
Terrasque Skrevet 12. juni 2012 Del Skrevet 12. juni 2012 så har jeg en php fil som heter f.eks quiz.ajax.php hvor det er en hel rekke med if-er som bare venter på POST variabler sendt med ajax. Blir kanskje litt rotete, siden lista blir ganske lang Hvordan i strukturerer du det der, egentlig? Hardcoder du ting inn i scriptet? Burde det ikke heller vært et SELECT query der? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå