Autor Zpráva
luma64
Profil
Zdravim, ako prenesiem do inej stranky cez php obsah query (napr Select col1, col2 from tbl1) kliknutim na odkaz. Na druhu stranku ma presmeruje , ale prenesie mi iba slovicko Select.

<?php 
$qry=$_SESSION['SESS_QRY'];
$qry="Select col1, col2  from tbl1";
$newUrl = "plan_export.php" . "?par1=$qry";
?>
panther
Profil
luma64:
ale prenesie mi iba slovicko Select.
protoze tam mas mezery, coz nejsou platne znaky v URL.

Ale nevidim jediny duvod prenaset MySQL dotazy v URL nebo sessions, ceho se snazis dosahnout? Toto je spatne reseni, najdeme lepsi.
luma64
Profil
1, V stranke mam viacero moznosti filtrovania a podla toho, aka sa zvoli vytvorit prikaz, ktorym sa vytvori pohlad.
2, Z vytvoreneho pohladu chcem urobit export do suboru. Problem je v tom, ze ked sa zobrazi selekt a potvrdi sa moznost exportu, uz nemam zapamatane query. Preto ho dam do session. Nemam s tymto skusenost.
3, Preto si myslim ze jednoduche je ulozit query do session a napr. ako parameter poslat do inej stranky, z tej sa urobi export.
panther
Profil
luma64:
provadej filtrovani na teze strance, jen si men parametry v URL, aby na nej bylo mozno odkazat.

PHP pak podle parametru, ktere obdrzi, a jejich hodnot vytvori SQL dotaz, dane hodnoty z URL dosadi a vrati vysledek. Spatna je uz tva myslenka, prenaset nekam SQL dotaz.
Joker
Profil
panther:
Preto si myslim ze jednoduche je ulozit query do session a napr. ako parameter poslat do inej stranky, z tej sa urobi export.
A když někdo otevře plan_export.php?par1=delete%20*%20from%20tbl1?
luma64
Profil
Joker:
OK , dakujem, vyskusam
luma64
Profil
Ako si pls dokazem uchovavat rozne hodnoty query v zavislosti na vybere ? Moznosti pre vybery je viacero a ked sa mi obnovi stranka, nedokazem si povodny query uchovat. A to je aj pripad exportu ako som pisal vyssie. Ak si uzivatel zobrazi pohlad podla podmienok a klikne na Export, query uz neexistuje. Neaviem ci uvazujem spravne...Bez toho aby som pouzil session si nedokazem query uchovat.
panther
Profil
luma64:
Neaviem ci uvazujem spravne
uz jsem psal, ze ne.

Podivej se treba na strankovani, jak je resene - je to stejny pripad jako export, ktery potrebujes ty. Videl jsi nekdy na nejakem webu nebo scriptu, ze by se v URL prenasel SQL dotaz? Ze by v nekterem z tech strankovacich nebo tridicich scriptu byl SQL dotaz v sessione nebo jinde? Ne, vzdy se jen predavaji paramtery, na zaklade kterych se pak dotaz sestavi.
peta
Profil
luma64:
$newUrl = "plan_export.php" . "?par1=$qry";
A urlencode mas kde? Viz priklad Jokera. Kdyz neco chces posilat pres url, tak musis vedet, jak se url pise a jake znaky ma kde povolene. Mezera neni povoleny znak a musi se zakodovat.
http://cz.php.net/urlencode
Pripadne si vyrob formular FORM, napis to do nej a nastav mu methode=get. Klikni na odeslat a on ti vyrobi spravnou url adresu.

A viz Joker, kdyz ti tam nekdo napise query pro smazani tabulky, tak prijdes o vsechna data.
DELETE * FROM tabulka
DROP tabulka
UPDATE uzivatele SET admin=1 WHERE name='peter' -- takze si nastavim admin prava
UPDATE * FROM uzivatele -- smazu veskere uzivatele a uz se do systemu neprihlasis ani ty

Viz panther, posilaji se parametry a v tom druhem php si sql dotaz sestavis znovu.
Cili misto
?query=delete%20*%20from%20tbl1 si pro kazdy odkaz znovu posles vsechny parametry
?query=delete%20*%20from%20tbl1 si pro kazdy odkaz znovu posles vsechny
. Nebo si ten query uloz do session. Hlavne ne do odkazu jako parametry.
V tom kousku kodu nemas ani sesion_start. Zkus se podivat na priklady v manualu, jak se pracuje se session.
http://cz.php.net/session_start

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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