Mystery2004 Posted July 13, 2004 Report Share Posted July 13, 2004 Haizaa PHP meistari! :) Nu te vairaakas dienas atpaka domaju japaskatas PHP. Nu pamaaciishos! Meginu, meginu. WWW serveri uzliku, PHP piesleedzu, MySql ari izliku datubaazi izveidoju, meginaaju datus nolasiit - sanaaca, atspogulot ari sanaaca, tipa pamazaam iet un tiiri nekaada vaina tam PHP, bet nu saskaaros ar taadu probleemu. Programmejot citas valodas mainiigos define un ti ari saglaba defineeto vertiibu, vai tas ir funkcija vai globaali, tas nebuutu tik svariigi. Taatad probleema sekojosha: Man ir index.php, tas atspogulo pogas un nelielu info kaa taadu. Katrai pogai man ir savs php fails. Tipa login.php register.php help.php utt. Bet nonaacu pie nepiesieshamiibas nodot mainiigos shiem failiem, tas ira: kaadaa no sadallam kaut kas ir atzimets vai izveeleets, un sho info gribu uzglabat mainiigajaa. uzspiezot uz pogas piemeeram atveras login.php, kur sakuma ir kods kas paarbauda vai esmu ielogojies vai ne. Vai varu defineet mainiigos faila. Piemeeram variables.php un cits *.php fails tos varees nolasiit. Iespeejams man ir galiigi nepareizas domas ka to dariit, bet tikai maacos un luuk griezos pec paliidziibas. Thanks visiem kas paliidzees. Link to comment Share on other sites More sharing options...
рпр Posted July 13, 2004 Report Share Posted July 13, 2004 nodot no vienas lapas uz otru vari izmantojot http GET un POST metodes. GET metodee mainiigais tiek nolasiits no url. GET piemeers: lapaa http://www.mansdomains.lv/index.php?mainiigais=lalala echo $_GET['mainiigais']; // tiks izvadiits lalala POST mainiigie tiek nodoti izmantojot formas un domaati lielaakam datu apjomam. POST piemeers: <form method="POST" action="lapauzkurunododmainiigos.php"> <input type="text" name="mainiigais" value="lalala"> </form> submitojot formu failaa lapauzkurunododmainiigos.php mainigos var nolasiit: echo $_POST['mainiigais']; // tiks izvadiits lalala Link to comment Share on other sites More sharing options...
Venom Posted July 13, 2004 Report Share Posted July 13, 2004 visu augstākminēto failu augšā: if (!session_id()) session_id(); nododāmos mainīgos saglabājam $_SESSION masīvā $_SESSION['x']=3; citā lapā $_SESSION['x'] jābūt pieejamam. svarīgi ir saprast, ka katrs php fails ir atsevišķa programma, ar savu mainīgo apgabalu on oper. atmiņu. Link to comment Share on other sites More sharing options...
bubu Posted July 13, 2004 Report Share Posted July 13, 2004 A ja kukiji ir atslēgit, tad nekā ar sesijām ... Link to comment Share on other sites More sharing options...
Aleksejs Posted July 13, 2004 Report Share Posted July 13, 2004 Tad sesijas mainīgais tiek nodots caur GET :P Link to comment Share on other sites More sharing options...
Venom Posted July 14, 2004 Report Share Posted July 14, 2004 A ja kukiji ir atslēgit, tad nekā ar sesijām ... pilnīga nesaprašana par sessiju mehānismu man vienmēr iekš php.ini session.use_cookies=0 kad tiek pastartēts php, kas pieprasa atvērt sesiju, tad _serveris_ noģenerē katram tādam lietotājam unikālu identifikātoru (balstoties uz IP, pilno pārlūka stringu, pārlūka programmas handle utml, vai nu arī atverot permanento socketu, kā nu kurais). Šis hashs tiek nosūtīts atpakaļ brauzerim, kurš var, bet var arī nenēsāt sev pats to līdzi (operatīvajā atmiņā, nododot to tikai ar slēpto HTTP headeri; vai arī caur $_GET; dažs arī cūkijā utml), bet ja pārlūks nenodod šo identifikātoru, tad serveris to ģenerē no jauna, pēc tā paša algoritma - un loģiski, ka arī tad viņam jāsakrīt ar iepriekšējo. Attiecīgi katram hasham tiek izveidots failiņš _uz servera_ (sk. temp direktoriju, vai kur viņš to veido jums - session~path), kurā tiek serializēts $_SESSION masīva saturs. Pieslēdzoties klientam ar kādu hashu, tiek pārbaudīts, vai tāds failiņš eksistē, un ja - jā - tad tiek unserializēts tā saturs php pieejamā $_SESSION masīvā (tātad, unikāli katram lietotājam). Ja tāda failiņa nav, tad tiek vērta vaļā jauna sesija (ar jaunu hashu). Paralēli iet arī cits process, kas nodzēš novecojušo sesiju failus. Jā, cilvēki dāžreiz session.use_cookies=1, _ja_ sessijās glabājas "nekonfidenciāla" informācija. Jā, kūkijos glabā sessijas identifikātoru, lai atsāktu to pašu sesiju, ja pārlūks tika aizvērts. Jo, ja pārlūks tika aizvērts, pie jaunas konekcijas "ienākošie" parametri hashu ģenerēšanas algoritmam būs citādi (cits ports, handle un hvz kas vēl). Cūkijos saglabāto identifikātoru pirms sessijas uzsākšanas ar session_start ekskluzīvi var iestatīt ar session_id funkciju, vai arī nodot kā PHPSID?=šurum-burum (PHPSID vietā jūsu sessiju mainīgā nosaukums). Link to comment Share on other sites More sharing options...
bubu Posted July 14, 2004 Report Share Posted July 14, 2004 Nu labi, labi. Nezināju par sesijām īpaši daudz. Bet redz, ar katru dienu iemācos ko jaunu .... Link to comment Share on other sites More sharing options...
Kaklz Posted July 14, 2004 Report Share Posted July 14, 2004 A ja kukiji ir atslēgit, tad nekā ar sesijām ... pilnīga nesaprašana par sessiju mehānismu man vienmēr iekš php.ini session.use_cookies=0 kad tiek pastartēts php, kas pieprasa atvērt sesiju, tad _serveris_ noģenerē katram tādam lietotājam unikālu identifikātoru (balstoties uz IP, pilno pārlūka stringu, pārlūka programmas handle utml, vai nu arī atverot permanento socketu, kā nu kurais). Šis hashs tiek nosūtīts atpakaļ brauzerim, kurš var, bet var arī nenēsāt sev pats to līdzi (operatīvajā atmiņā, nododot to tikai ar slēpto HTTP headeri; vai arī caur $_GET; dažs arī cūkijā utml), bet ja pārlūks nenodod šo identifikātoru, tad serveris to ģenerē no jauna, pēc tā paša algoritma - un loģiski, ka arī tad viņam jāsakrīt ar iepriekšējo. Attiecīgi katram hasham tiek izveidots failiņš _uz servera_ (sk. temp direktoriju, vai kur viņš to veido jums - session~path), kurā tiek serializēts $_SESSION masīva saturs. Pieslēdzoties klientam ar kādu hashu, tiek pārbaudīts, vai tāds failiņš eksistē, un ja - jā - tad tiek unserializēts tā saturs php pieejamā $_SESSION masīvā (tātad, unikāli katram lietotājam). Ja tāda failiņa nav, tad tiek vērta vaļā jauna sesija (ar jaunu hashu). Paralēli iet arī cits process, kas nodzēš novecojušo sesiju failus. Jā, cilvēki dāžreiz session.use_cookies=1, _ja_ sessijās glabājas "nekonfidenciāla" informācija. Jā, kūkijos glabā sessijas identifikātoru, lai atsāktu to pašu sesiju, ja pārlūks tika aizvērts. Jo, ja pārlūks tika aizvērts, pie jaunas konekcijas "ienākošie" parametri hashu ģenerēšanas algoritmam būs citādi (cits ports, handle un hvz kas vēl). Cūkijos saglabāto identifikātoru pirms sessijas uzsākšanas ar session_start ekskluzīvi var iestatīt ar session_id funkciju, vai arī nodot kā PHPSID?=šurum-burum (PHPSID vietā jūsu sessiju mainīgā nosaukums). šim forumam vaidzētu pielikt fīču ar postu novērtēšanu, dodu savas 5 zvaigznītes šim postam ;) Link to comment Share on other sites More sharing options...
Venom Posted July 14, 2004 Report Share Posted July 14, 2004 btw: SSL realizēts līdzīgi - pie pirmā handshake serveris noģenerē atslēgu, ar kuru kodēs tāl Link to comment Share on other sites More sharing options...
Roze Posted July 14, 2004 Report Share Posted July 14, 2004 Jā, cilvēki dāžreiz session.use_cookies=1, _ja_ sessijās glabājas "nekonfidenciāla" informācija.Nu shis gan attiecas tikai uz sesijas id glabaashanu liidz ar to konfidenciaala/nekonfidenciaala nav pareizi, jo dati anyway ir servera pusee. Jā, kūkijos glabā sessijas identifikātoru, lai atsāktu to pašu sesiju, ja pārlūks tika aizvērts. Parasti nokluseetaa konfiguraacijaa ir: session.cookie_lifetime = 0 Liidz ar to tiek veidota jauna sesija pie browsera aizveershanas/atveershanas. Ja gribaas lai taa buutu tad jaaseto savs cookijs un tad jau kaa Venom teica ar session_id() likt tur sesijas id vai arii jaamaina shis parametrs un janoraada cookiju lifetime (kas gan manupraat nav ieteicams). Link to comment Share on other sites More sharing options...
Mystery2004 Posted July 14, 2004 Author Report Share Posted July 14, 2004 Nu paldiesa. Vispaar starp failiem man sanaaca nodot mainiigos, bet vel vien jautaajums: kaada atshkiriiba starp session_id(); un session_start(); Thanks Jus man " DIKTI " paliidzeejat un PHP paliek ar vien interesantaaks :) Link to comment Share on other sites More sharing options...
Venom Posted July 15, 2004 Report Share Posted July 15, 2004 session_id() - atgriež (ja tiek palaista bez parametriem) /uzstāda sessijas identifikātoru (ja tas tiek nodots kā parametrs) session_start() iesāk sessiju ar aktīvo identifikātoru es parasti izmantoju variantu: if (!session_id()) session_start(); gadījumā, ja fails tiek inklūdots citā, kur jau iesāknēta B) sessija. Link to comment Share on other sites More sharing options...
Recommended Posts