Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Aq
HV kasutaja
liitunud: 01.01.2003
|
31.03.2008 16:22:37
PHP abil POST/GET info kättesaamine |
|
|
Selline küsimus, et kuidas saada praegusel ajal PHP abil kätte info selle kohta, missugune POST ja GET info edastati?
Täpsemini. Oletame, et mul on aadress kujul:
www.domeen.ee/index.php?id=1
selle ID saan vabalt teada, aga minu praeguse süsteemi puhul on üks suur miinus. Nimelt võib selle ID järgi kribada veel mistahes muutujaid ja nende väärtusi, piisab sellest, et id oleks korrektne ning leht ikkagi serveeritakse korrektselt. Eesmärk on aga see, et saaks teha nii, et kui keegi kribab mul eelpool toodud näiteaadressile lisaks näiteks niimoodi:
www.domeen.ee/index.php?id=1&midagi=kah&pla=pla
sooviksin sellise aadressi sisestamise korral uhada tüüpidele 404 teate, aga selleks on mul ju vaja tuvastada see, kas midagi keegi ka lisaks kribas. Kuidas seda teha? "Vanasti" oli äkki mingi võimalus register globals tõttu??? Aga nüüd?
Tegelikult sama lugu on vormidest tuleva POST-infoga. Kuidas teada saada, kui mõni automaatne programm saadab mulle selliseid väljaväärtusi, mida minu ehitatud vormil polegi?
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
31.03.2008 16:48:29
|
|
|
Milleks sul üldse sellist kontrolli vaja? Tavaliselt nende lisamuutujatega probleeme ei ole, kui just sul endal kood niimoodi kirjutatud ei ole, et võib tekkida. Vajadusel võid kõik POST/GET muutujad ükshaaval läbi käia ja vaadata, kas on ikka tegemist lubatud muutujaga.
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
sosssepp
HV veteran

liitunud: 12.05.2003
|
31.03.2008 16:55:54
|
|
|
Ei tasu POST/GET muutujaid globaliseerida (e. ülalmainitud register globals peab olema väljas) ning endale vajalike muutujate lubatud piiride või väärtuste osas teostad kontrolli enne nende kasutamist. Muu ei peaks enam sinu rakendust huvitama ega mõjutama.
|
|
Kommentaarid: 87 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
75 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
31.03.2008 17:04:29
|
|
|
Ma tean, et register globals on paha-paha ja tean ka kuidas selleviisilise "häkkimise" eest end kaitsta (vähemalt põhiteooriat). Kas see tähendab, et siiski ei ole võimalik üldse kontrollida, mis saadetakse? On väike põhjus, miks seda vaja oleks
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
31.03.2008 17:05:37
|
|
|
Loomulikult on, kas sa tõesti ei saa aru, kuidas see käima peaks? $_GET ja $_POST muutujatest ikka kuulnud oled?
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
sosssepp
HV veteran

liitunud: 12.05.2003
|
31.03.2008 17:06:13
|
|
|
Aq kirjutas: |
Ma tean, et register globals on paha-paha ja tean ka kuidas selleviisilise "häkkimise" eest end kaitsta (vähemalt põhiteooriat). Kas see tähendab, et siiski ei ole võimalik üldse kontrollida, mis saadetakse? On väike põhjus, miks seda vaja oleks  |
No aga räägi ometi põhjusest, siis osatakse ka parim lahendus välja pakkuda.
|
|
Kommentaarid: 87 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
75 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
31.03.2008 17:16:07
|
|
|
Ma ei ole otseselt programmeerija, küll aga SEO fanatt. Seega on minu jaoks oluline, et lehtede serveerimine oleks selgelt minu kontrolli all. Praegu tuli idee kasutada $_SERVER["REQUEST_URI"] abi selle olukorra lahendamiseks.
Ehk - mina tahan, et kui mul on dokumendi URL enne mod_rewrite rakendamist näiteks tõesti selline www.domeen.ee/index.php?id=1 siis et AINULT see URL toimiks. Ma ei soovi, et keegi viitaks minu lehele näiteks niimoodi: www.domeen.ee/index.php?id=1&viitaja=keegi . Mina soovin sellise URL puhul anda 404 teate, et see ei satuks otsingumootorite ideksisse risustama.
Nagu öeldud, ma asun katsetama $_SERVER["REQUEST_URI"] võimalusi. Ehk aitab kuidagimoodi.
P.S. Tegelikult rakenduvad veel palju ilusamad URLid kasutades mod_rewite abi. See siin on lihtsustatud näide.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
maxorator
HV kasutaja
liitunud: 30.08.2006
|
31.03.2008 17:24:08
|
|
|
Lased $_GET-i foreachist läbi, ongi olemas.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
limp
HV Guru

liitunud: 11.08.2003
|
31.03.2008 17:26:11
|
|
|
maxorator kirjutas: |
Lased $_GET-i foreachist läbi, ongi olemas. |
print_r on ehk antud olukorras lihtsam
_________________ Ärgake lapsed, maailm on hädaohus
Windows keskkond on nagu li*s - kõik teda ke*ivad aga keegi teda ei armasta! |
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
52 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
31.03.2008 17:26:59
|
|
|
Aq, uuri selliseid muutujaid, nagu $_GET, $_POST ja $_REQUEST, mis sisaldavalt massiivi kujul POST/GETist tulevaid muutujaid. Kui sa tõepoolest tahad, et läbi läheksid ainult kindla sinupoolt määratud kujuga URLid, siis võid jah kasutada $_SERVER["REQUEST_URI"]. Muudel juhtudel aga uuri neid minu poolt antavaid muutujaid.
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
31.03.2008 17:38:46
|
|
|
Milles küsimus, sa tead kui pikk query sul võib max olla ja vaatad, kui on pikem annad veateate.
<?Php
// Sa tead kui pikk sul see voib olla. naiteks max id=12 yle kahekohalise arvu id ei tule
$nrr = $_SERVER['QUERY_STRING'];
if((strlen($nrr))>5){echo "Viga 404";}
?> |
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
31.03.2008 17:39:19
|
|
|
Aq, kui SEO fanatt oled, siis sind ju ei huvitagi kliendile andmiseks sellised id=2 jne aadressid, sind huvitab anda kliendile anda aadresse nagu /about, /products jne
htaccess failis teed rewrite ja asi korras
kui antakse midagi juurde aadressis, siis who cares ?
sinu süsteem selle peale ju midagi ei tee, seega milleks probleemi tekitada ?
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
31.03.2008 17:52:14
|
|
|
mikk36 kirjutas: |
Aq, kui SEO fanatt oled, siis sind ju ei huvitagi kliendile andmiseks sellised id=2 jne aadressid, sind huvitab anda kliendile anda aadresse nagu /about, /products jne
htaccess failis teed rewrite ja asi korras
kui antakse midagi juurde aadressis, siis who cares ?
sinu süsteem selle peale ju midagi ei tee, seega milleks probleemi tekitada ? |
Ma ütlesin, et see on lihtsustatud näide. Vaata minu kodulehte, näed, millised URLid tegelikult on Imelik on see, et ma tavaliselt alati kirjutan pikalt ja laialt, aga ikka juhtub nii, et ei selgita piisavalt täpselt. Peab vist veel pikemaid romaane siia kirjutama hakkama.
URLide osa sain nüüd enam-vähem korda. Põhjus on selles, et ma ei taha, et minu lehe sisu oleks dubleeritud kujul otsingumootorites. Teooriad räägivad kõiksugu juttu. Väidetavalt Google jaoks ei ole see probleem, kui on dubleeritud, aga NETI näiteks üldse ei talu seda, kui on topelt midagi jne.
POST asjaga pean siis kunagi hiljem tegelema.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
31.03.2008 18:16:14
|
|
|
hmm, jaa, saan aru nüüd
noh, võid ju kontrollida järgi $_GET array elementide nimekirja vastavust sobivatele nimedele
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
maxorator
HV kasutaja
liitunud: 30.08.2006
|
31.03.2008 19:16:14
|
|
|
limp kirjutas: |
maxorator kirjutas: |
Lased $_GET-i foreachist läbi, ongi olemas. |
print_r on ehk antud olukorras lihtsam  |
Ega ta neid näha ei taha. Neid on aadressiribalt niikuinii näha aga ta tahab kontrollida, et neid ülearu ei oleks.
Seega:
$lubatud=array("id","id2");
foreach($_GET as $jupp){
if(!in_array($jupp,$lubatud)){
header("HTTP/1.0 404 Not Found");
exit();
}
} |
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004

|
31.03.2008 19:28:09
|
|
|
maxorator kirjutas: |
limp kirjutas: |
maxorator kirjutas: |
Lased $_GET-i foreachist läbi, ongi olemas. |
print_r on ehk antud olukorras lihtsam  |
Ega ta neid näha ei taha. Neid on aadressiribalt niikuinii näha aga ta tahab kontrollida, et neid ülearu ei oleks.
Seega:
$lubatud=array("id","id2");
foreach($_GET as $jupp){
if(!in_array($jupp,$lubatud)){
header("HTTP/1.0 404 Not Found");
exit();
}
} |
|
antud kood ei tööta
php:
|
<?php $lubatud= array("id", "id2"); foreach($_GET as $name => $value){ } } ?>
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
maxorator
HV kasutaja
liitunud: 30.08.2006
|
31.03.2008 19:29:38
|
|
|
Mnjaa, see on see kiiruga kokkumätsimine.
$lubatud=array("id","id2");
foreach($_GET as $jupp => $sisu){
if(!in_array($jupp,$lubatud)){
header("HTTP/1.0 404 Not Found");
exit();
}
} |
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
31.03.2008 23:23:16
|
|
|
Super! Nüüd sai URL-i temaatika kohe väga hästi toimima. Nüüd saab isegi & sümboli kribamisel URL järgi 404 teate
Suured tänud
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
marttali
HV kasutaja
liitunud: 16.12.2003
|
18.04.2008 21:15:14
|
|
|
Kui sa seo fanatt oled, siis sa niimoodi trafficut ei raiskaks
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
18.04.2008 22:19:20
|
|
|
marttali kirjutas: |
Kui sa seo fanatt oled, siis sa niimoodi trafficut ei raiskaks  |
Möh? Kuskohast see raiskamine selle teemaga seotud on?
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
marttali
HV kasutaja
liitunud: 16.12.2003
|
23.04.2008 12:48:42
|
|
|
No mina suunaksin kõik sellised vigaste id'dega päringud näiteks esilehele ?
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
23.04.2008 13:41:25
|
|
|
marttali kirjutas: |
No mina suunaksin kõik sellised vigaste id'dega päringud näiteks esilehele ? |
Ja kuidas see istub kasutajamugavuse seisukohalt? kasutaja ei tea ju, miks ta sinna nüüd järsku sattus. kui on 404 leht, siis saab kasutaja kas otsingu või sisukaardi abil uurida, kas teda huvitavat sisu on, kuid süsteem ütleb selgelt ära selle, et antud aadressil seda hetkel ei ole.
Esilehele hüppamine on parem, kui tühjade lehtede kuvamine, kuid ei asenda siiski korrektset veateadete süsteemi.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
tanzanite
HV kasutaja

liitunud: 13.05.2006
|
23.04.2008 14:45:06
|
|
|
404 on vale/paha/päh-päh lahendus.
Kasuta 301 kus vigase/üleliigse osa kõrvaldad (seda GET/HEAD korral).
POST ja muu on ebaoluline.
|
|
tagasi üles |
|
 |
marttali
HV kasutaja
liitunud: 16.12.2003
|
26.04.2008 10:05:25
|
|
|
Tee siis vähemasti custom 404 leht, millel lingid erinevatele tähtsatele osadele oma kodulehel. "Tähtis" PR ei lähe kaotsi Ja kylastajad saavad soovikorral õige koha üles leida hõlpsasti..
|
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
Aq
HV kasutaja
liitunud: 01.01.2003
|
26.04.2008 14:38:41
|
|
|
marttali kirjutas: |
Tee siis vähemasti custom 404 leht, millel lingid erinevatele tähtsatele osadele oma kodulehel. "Tähtis" PR ei lähe kaotsi Ja kylastajad saavad soovikorral õige koha üles leida hõlpsasti.. |
On olemas ju.. viited avalehele ja sisukaardile + otsing... Igatahes minu arvates nagu kõik toimib...
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
4 |
|
tagasi üles |
|
 |
|