mam mozna jednoduchy dotaz:
jak snadneji posilat hodne promennych mezi strankama? pri prechodu na jinou potrebuji, aby zustaly vsechny promenne zachovany a tenhle styl "neco.php?v1=as&v2=dsdds&...&v45=sdfsf" moc vhodny neni...
da se nejak predavat POLE? nebo mam pouzivat cookies?
poradte
                                 
                                 
                               
               
                              
               
                              
                                 
                                      Pouziti sessions je mnohem snazsi i bezpecnejsi. Veskere promenne jsou ulozeny na serveru, staci prenaset jen session ID.
                                 
                                 
                               
               
                              
                                 
                                      aha, uz na to mrkam v manualu, todle bude asi lepsi... nemate odkaz na nejaky "tutorialek" a s nazornymi prikladky?... ;).
jinak moc dik
                                 
                                 
                               
               
                              
                                 
                                      Je to velice jednoduche:
session_start(); //nastartuje sessions
$_SESSION['promenna'] = $promenna; // muzes si ulozit lib. pocet promennych, udaju, atp.
Pokud budes chtit obsah vyvolat v jinem souboru, opet:
session_start();
$promenna = $_SESSION['promenna'];
session_start() musi vyt pouzito pred vystupem, jelikoz posila cookie v http zahlavi
                                 
                                 
                               
               
                              
               
                              
                                 
                                      Pokud by nesly ty sessions (neby byl nejaky jiny duvod proc je nepouzit), tak i pole se v URL samozrejme prenaset da, ale musi byt ve specialnim formatu. To se zajisti funkci serialize(), ktera z toho pole udela byte-stream (bitovou reprezentaci toho pole), ktery se da prenest pres GET nebo POST, atd. Na te druhe strance to prectes napr. ze $_GET[] a zavolas na to unserialize() a ono ti to z toho byte-streamu udela zase to pole.
                                 
                                 
                               
               
                              
                                 
                                      toz diky, to se taky celkem hodi... ;)
                                 
                                 
                               
               
                              
                                 
                                      a tedkom este doplnujici otazecka:
na netu sessions funguji, jak to ale zprovoznit na localhost?... haze mi to neco jako:
>>>
Warning: session_start(): open(/tmp\sess_96c08fac8606c8cf3894eafb1fc69f4b, O_RDWR) failed: No such file or directory (2) in e:\web\php\test.php on line 2
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at e:\web\php\test.php:2) in e:\web\php\test.php on line 2
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at e:\web\php\test.php:2) in e:\web\php\test.php on line 2
count not set!
<<<, kde "count" je testovana promenna...
v php.ini sem se nejdrive pokousel neco nastavit s tmp cestou, ale asi to moc nepomohlo... az sem si vytvoril na "c:" adresar "tmp", tak to tam zaclo vytvaret 0B soubory "sess_xxx..." a na strance jenom vypis vyse zminenych hlasek...
                                 
                                 
                               
               
                              
                                 
                                      Se session jsem ještě nedělal, ale zkusím střílet od pasu:
open(/tmp\sess... buď je špatně "/" nebo "\". Předpokládám, že to druhé.
Cannot send session cookie - headers already sent ... funkce session_start() musí být volána ještě před odesláním prvního znaku prohlížeči, tedy na začátku skriptu.
Ta třetí chyba bude mít stejnou příčinu.
Vidím, že volání funkce session_start() máš na druhém řádku. Co máš na prvním?
                                 
                                 
                               
               
                              
                                 
                                      jezz: v php.ini musis napred nastavit adresar na ukladani sessions, je to konkretne direktiva session.save_path. Jeji hodnota je obyvkle neco jako C:\Windows\Temp, ale muze to byt lib. adresar., dale pred prikazem session_start() nesmi predchazet jakykoliv vystup (zadne HTML, ani echo(), ale ani prazdy radek)
                                 
                                 
                               
               
                              
                                 
                                      no jenom pro testovani sem udelal tohle:
<?
session_start();
$count = $_SESSION['count'];
if (!(isset($count))) {
  echo "count not set!<br>";
} else {
  echo $count;
}
$_SESSION['count'] = "xxx";
echo "<a href=".$PHP_SELF.">link-ses</a>";
?>
na wz.cz to funguje presne podle dane logicke struktury (jezz.wz.cz/test.php)... ale diky dial-up connection :/ to nejdrive pisu a zkousim via apache(1.3.28) a mam tu php(4.3.3) a win2000.
pravdepodobne bude chyb v nastaveni v php.ini...
jinak obcas to vyhodi i tyto chyby (pri spatne nastavenem temp path: "C:/tmp"):
>>>
Warning: Unknown(): open(/tmp\b\sess_b6a64f083d406930a01ce9b29bcfb7a6, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (1;/tmp) in Unknown on line 0
<<<
takze v php.ini mam: session.save_path = "c:\tmp" a vypisuje to ty tri hlasky, ktere jsou nekolik prispevku nazpatek... a pritom se v "c:\tmp" vesele tvori ty prazdne soubory "sess_xxx...xxx",
dulezite ale je, ze to funguje tady na wz.cz
                                 
                                 
                               
               
                              
                                 
                                      btw: nevite o nejakem free_web_hostingu s moznosti pouziti https?...
                                 
                                 
                               
               
                              
                                 
                                      jezz: Mas spatne nastavenou cestu session.save_path v php.ini
                                 
                                 
                               
               
                              
                                 
                                      toz dobre, co tam mam ale napsat?
                                 
                                 
                               
               
                              
                                 
                                      ak sa ti tam tvoria tie session subory (sess....), tak by konfiguracia mala byt v poriadku, mozno prava na dany adresar nie su dobre nastavene, skontroluj ci je to povolene pre everybody....
                                 
                                 
                               
               
                              
                                 
                                      pinkynew: Bezi-li Apache jako sluzba, pak je to standardne ucet SYSTEM, a to by melo bejt defaultne OK
                                 
                                 
                               
               
                              
               
                              
                                 
                                      Sojkovec: hej, to mas pravdu...
potom neviem kde moze byt chyba.
ked som si nastavoval sessiony, stacilo ich povolit a nastavit save_path a funguje mi to bez problemov... :-|
                                 
                                 
                               
               
                              
               
                              
                                 
                                      Běží-li Apache jako služba, měl by běžet s minimálními právy.
                                 
                                 
                               
               
                              
                                 
                                      Kit: No a on bezi s maximalnimi :-))
                                 
                                 
                               
               
                              
                                 
                                      Tak to je chyba. Když ho někdo hackne, dostane se do systému. Ještě se dává do chrootovaného prostředí kvůli zvýšení bezpečnosti.
                                 
                                 
                               
               
                              
                                 
                                      Kit: lze to nastavit, ale vychozi nastaveni je opravdu MS_FULL_ACCESS_TO_YOUR_SYSTEM (tm) :)
                                 
                                 
                               
               
                              
                                 
                                      U mne má Apache práva skutečně jen minimální - v default instalaci a funguje. Jak je to možné?