Autor Zpráva
fuNes
Profil *
Dobrý deň, potrebujem docieliť to aby sa po kliknutí na odkaz najskôr skript
vytvoril SESSION a až potom aby sa vykonala hlavná akcia (tj samotné
presmerovanie odkazu)

spravil som to takto:

function createRequestObject()
{
var req;
if(window.XMLHttpRequest)
{
req = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
alert('Your browser is not IE 5 or higher, or Firefox or Safari or
Opera');
}
return req;
}
function run(id, newurl)
{
var http = createRequestObject();
var url = "create_data.php?id="+encodeURIComponent(id);
http.open("GET", url, true);
http.onreadystatechange = function()
{
if(http.readyState == 4 && http.status == 200)
{
   location.replace(newurl);
}
}
http.send(null);
}


pričom v odkaze som doplnil onclick=run(cislo, this.href); a
v súbore create_data.php je


<?
session_start();
if(isset($_SESSION[cID]))
{
unset($_SESSION[cID]);
}
$_SESSION[cID]=$_GET[id];
?>


pokial som skúšal vypisovať alertom, resp. echom tak sa zdalo že to celé funguje, ale
SESSION mi nevytvorí, resp. s ňou nemôžem pracovať (chybu to tiež nehlási žiadnu)

Neviete mi niekto poradiť kde by mohol byť problém??

Ďakujem za prípadnú radu, nasmerovanie..
Aichi
Profil
to cID a id v PHP kódu máš definované jako konstanty, nebo tam schválně nedáváš uvozovky?
fuNes
Profil *
To cid je vpodstate už taký experiment, či to náhodou nepôjde tak. Skúšal som aj jednoduchší výpis:

<?
session_start(); 
$_SESSION['moja_session'] = 'Toto je moja waw SESSION';
?>


Ďakujem za reakciu
Aichi
Profil
máš někde na ukázku ten kód, pokud to stále nefunguje?
AM_
Profil
Opravím ten kousek:
<?php // !!! tohle nikdy nevynechávej, nové verze PHP už to ani s výchozím nastavením nespolknou
session_start();
//if(isset($_SESSION[cID]))
//{
//unset($_SESSION[cID]);
//}
//ty 4 řádky jsou úplně zbytečné, vždyť _SESSION['cid'] se na další řádce stejně vytvoří znovu
$_SESSION['cID']=$_GET['id']; //ach ty uvozovky...
?>


v té onreadystatechange funkci si nech httpRequest.responseText, třeba k nějaké chybě dochází v tom AJAXem volaném souboru. Jinak nevidím důvod, aby se session proměnná nevytvořila
fuNes
Profil *
add aichi
stále to nefunguje. Kompletný kód je uvedený tu z výnimkou odkazu.

add AM_
je mi jasné že tie riadky sú tam v tejto konštrukcií zbytočné a zároveň je to bez apostrofov chybne. Ako som v druhom príspevku písal toto bol už len experiment.

add httpRequest.responseText, pokiaľ čokolvek vypíšem či už v AJAXE alebo PHP, tak to funguje. Jediné čo nejde je práve tá SESSION. Aktuálne som to običiel napriek tomu by ma veľmi zaujímalo prečo to nešlo.

Ďakujem za reakcie a pekný piatok prajem :)
AM_
Profil
pořád si myslím, že se spíš jednalo o nějakou "hloupou" chybu, než že by to technicky nešlo. Já momentálně také dělám aplikaci, kde AJAXem volané skripty přistupují k session hlavního programu, a nemám s tím sebemenší problém. Nejspíš máš problém ještě někde jinde, než v ukázaném kódu (omylem si proměnnou někde přepisuješ, překlep v indexovacím řetězci, špatná inicializace session, nemáš třeba vyplé cookies? ikdyž to asi ne, na to bys přišel rychle)
fuNes
Profil *
Neviem jedine že by mi to blokovalo hlavné CMSko, jedná sa totiž o to že vytváram objednávkový modul do Joomly (veľmi špecifický)

Pokiaľ som skušal vytvoriť SESSION niekde mimo tak to šlo, len pokiaľ to SESSION robím AJAXom tak to neposlúcha. Ako som už ale písal problém som obišiel a modul je čoskoro pripravený na vypustenie pod GPL licenciou, len si nejak nechcem pripustiť porážku..
AM_
Profil
Tak ještě zkus napsat na nějaké fórum zaměřené na Joomly, není vyloučené, že se opravdu CMS o sessiony nějak stará a s tímhle nepočítá. Ale opravdu bych to spíš viděl na chybu z nepozornosti, kolikrát se mi takhle stalo, že mi nefungovaly různé věci, které normálně fungovat měly, a po hodině hledání byl zdrojem chyby třeba jen překlep v nějakém indexu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: