Ahoj Chtěl bych se zeptat možna se to tu už probiralo nekolikrat, ale hraju si s tim uz fakt dlouho a ne ane se hnout,hledam,hledam a nic nejak nenachazim a tak bzch chtel poprosit o radu,treba to bude jen malickost
jde mi o to predavat SID klic pomoci formulare nikoliv odkazu, tak abych, ale na dalsi strance mohl čist normálně formularove data.(bez pouziti cookies a databaze,je-li to mozne)
page1.php
-----------
<?
session_start();
$_SESSION['prihlasen'] = 'ano';
?>
<form method="post" action="./page2.php?<?echo SID;?>">
<p><input type="radio" id="rdo" name="rdo" value="volba">hodnota 1</p>
<p><input type="radio" id="rdo3" name="rdo" value="volba2">hodnota 2</p> <BUTTON TYPE=SUBMIT><b>Ok</b></BUTTON>
</form>
page2.php
----------
<?
session_start();
$prihl=$_SESSION['prihlasen'];
$vybrano=$_POST["rdo"];
?>
Zajimalo by me jestli je moznost nejak predat hodnotu prvku input type=radio a zaroven predat klic k session ,kde mam ulozene nekolik dalsich udaju
Predat samotny klic neni problem predat ale ta kombinace...
Zkousel jsem i varianty kdy, jsem do skryteho pole daval ID a pak je priradil na druhe strane do session_id, ale ani tahle varianta mi nevysla
$klic=$_POST["klicovepole"];
session_id($klic);
Mozna jde hodnota prvku radio nejak zapsat do sessionu bohuzel me nenapada jak(mozna jen tak ze by action forlmulare nesmeroval nikam, a tak ze bych dokazal zjistit hodnotu prvku radio,ale bzlo bz pak treba znovu jit na dalsi stranku pomoci dalsiho odkazu coz se mi nehodi)
Budu moc rad kdyz se k tomu nekdo vyjadri a predem dekuji za kazdou reakci ci tip.
pokud vim, tak SID se tedy normalne predava pomoci cookies, a pokud ty jsou vypnute, tak jsou automaticky doplneny do kazdeho odkazu. Takze kazdopadne bude SID vzdy predavano jednim z techto zpusobu. Moc nechapu podstatu toho problemu. Ty chces nastavit session_id podle toho, co prijde z formulare?
1) string session_id ( [string id] ):
If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose.
(...)
Note that SID is only defined if the client didn't send the right cookie.
No poravde se moc v session nevyznam.Jde mi o to predat klic k session do dalsi stranky bez pomoci databaze a cookies a to prostřednictvím formuláře, kde uživatel třeba přidá nějakou další hodnotu do session,s kterou se pak pracuje na dalsích strankach.
zjednodušeně chci zrealizovat to at uzivatel si uzivatel vybere pomoci prvku input type=radio,na jakou stranku se prepne a at na tehle strance ma hodnotu klice k session ,kterou jiz ziskal napr pred 10strankami pri uspesnem logovani a v ktere jsou uz nektere dulezite udaje.
kdyz jsem zkousel predavat klic pomoci action u formulare,tak na te dalsi strance uz nemuzu vztahnout jednotlive hodnoty poli.
druhou variantou jsem zkousel davat tenhle SID klic do hidden pole a na dalsi strance tuto predanou hodnotu davat do session_id ale to mi taky uplne nefunguje.
moje rada: nech sessions tak, jak jsou a proste s nima jenom pracuj. Na zacatku kazdy stranky zavolas session_start() a o vic se nemusis starat, protoze uz to udelal nekdo za tebe. Jestli se budou ukladat do db nebo do souboru, o to se uz postara samotny system. Stejne jako o to, jak se SID bude predavat - jestli v cookies, nebo v odkazech. Ale resit to nejak slozite pres formulare mi prijde zbytecne. Jestli ti nejsou jasne SESSIONS, muzu napsat kratky tutorial.
Princip sessions spociva v tomto: jako session (nekdy se nevhodne preklada jako sezeni, seance a podobny zhovadilosti) si muzeme predstavit situaci, kdy jeden clovek surfuje na jednom serveru v jedno nepretrzite casove obdobi. Myslenka je takova, aby v ramci jedne session (tj. pri praci jednoho cloveka s ruznymi strankami na jednom serveru) bylo mozne mezi strankami prenaset nejaka data. Nabizi se nekolik zpusobu. Jednim z nich je, ze se na server budou ta data ukladat pod hlavicku IP adresy klienta. Zde je ovsem problem, protoze v Internetu muze pod stejnou IP vystupovat treba desitky ruznych PC (verejne IP u proxy atd.). Preskocime tedy k dalsi moznosti: ukladat na server ta data pod hlavickou nejakeho nahodneho (unikatniho) retezce. Nezbyva, nez zabezpecit, aby si ty ruzne stranky v ramci session predavaly prave tento retezec (SID). To muzou delat ruznymi zpusoby: v odkazech, tedy metodou GET (je zarizeno, aby PHP toto SID do HTML odkazu samo doplnovalo, nemusime se o to tedy starat); nebo pomoci cookies (vzdy se pouzije, pokud nejsou cookies vypnute). Browser klienta si cookies ulozi k sobe a vzdy pri pozadavku na stranku se do cookie podiva a odesle na server, ktery sahne pro ta spravna data. Ted jeste k ukladani dat na server. Ten se o to opet stara sam. Bud uklada data jednotlivych sessions do souboru v TMP adresari, nebo do databaze. Kazdopadne server je vzdy nastaven tak, aby uzivatel toto nemusel resit. Samozrejme je moznost, ze si programator php muze zpusob ukladani nadefinovat sam, ale to nechme stranou. Shrnuti: prohlizec nejakym (automatickym) zpusobem preda SID serveru a ten podle tohoto SID zpristupni data te session pro skripty php, ktere ulozi do pole $_SESSION.
<?php
//////// formular.php /////////
// funkce pro zapsání (uložení session)
if ($akce == "go")
{
@session_start();
// zapiš do sessions proměnnou rdo
isset($_session["$rdo"]);
session_register("rdo");
echo "<script>window.location='dalsi_stranka.php'</script>";
}
?>
<?php
//////////// dalsi_stranka.php ////////////
echo $_session["rdo"];
echo "Vaše rdo je: ".$rdo."";
?>
Pokud jsem tě pochopil myslíš asi něco takového ... za pomocí sessions přenést určitá data do další stránky ... Nejsem si jistej jestli je toto správný zápis ale já to používám a docela to funguje ;-)
Diky za všechny vaše vyadření , moc mi to pomohlo, nebdu už ted rešit vlastni predavani klice.Ještě jednou dik
DONNY: k tomu tvojmu, ze sa netreba starat o to, ako su pomocou session prenasane data, tak s tebou plne suhlasim, pokial nepride na bezpecnost... ak si premenne drzis v datovych kolekciach ako $_SESSION $_POST a pod, tak sa ti do nich obycajny uzivatel len tak lahko nedostane... a mnozstvo ludi ak ma na stranke
session_start();
session_register("premenna");
tak dalej v kode pokojne pouziva
$inapremenna=$premenna+1;
atd. jednoducho si tu "zabalenu premennu odkryje".. a vtedy prichadzaju na rad nezbedni uzivatelia ;) opravte ma ak sa mylim
zalezi na nastaveni register_globals...