Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP abil POST/GET info kättesaamine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 31.03.2008 16:22:37 PHP abil POST/GET info kättesaamine vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 31.03.2008 16:48:29 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
sosssepp
HV veteran
sosssepp

liitunud: 12.05.2003




sõnum 31.03.2008 16:55:54 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 31.03.2008 17:04:29 vasta tsitaadiga

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 icon_wink.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 31.03.2008 17:05:37 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
sosssepp
HV veteran
sosssepp

liitunud: 12.05.2003




sõnum 31.03.2008 17:06:13 vasta tsitaadiga

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 icon_wink.gif

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
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 31.03.2008 17:16:07 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
maxorator
HV kasutaja

liitunud: 30.08.2006




sõnum 31.03.2008 17:24:08 vasta tsitaadiga

Lased $_GET-i foreachist läbi, ongi olemas.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
limp
HV Guru
limp

liitunud: 11.08.2003




sõnum 31.03.2008 17:26:11 vasta tsitaadiga

maxorator kirjutas:
Lased $_GET-i foreachist läbi, ongi olemas.

print_r on ehk antud olukorras lihtsam icon_smile.gif

_________________
Ä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
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 31.03.2008 17:26:59 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 31.03.2008 17:38:46 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 31.03.2008 17:39:19 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 31.03.2008 17:52:14 vasta tsitaadiga

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 icon_wink.gif 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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 31.03.2008 18:16:14 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
maxorator
HV kasutaja

liitunud: 30.08.2006




sõnum 31.03.2008 19:16:14 vasta tsitaadiga

limp kirjutas:
maxorator kirjutas:
Lased $_GET-i foreachist läbi, ongi olemas.

print_r on ehk antud olukorras lihtsam icon_smile.gif

Ega ta neid näha ei taha. Neid on aadressiribalt niikuinii näha aga ta tahab kontrollida, et neid ülearu ei oleks. icon_wink.gif

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
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 31.03.2008 19:28:09 vasta tsitaadiga

maxorator kirjutas:
limp kirjutas:
maxorator kirjutas:
Lased $_GET-i foreachist läbi, ongi olemas.

print_r on ehk antud olukorras lihtsam icon_smile.gif

Ega ta neid näha ei taha. Neid on aadressiribalt niikuinii näha aga ta tahab kontrollida, et neid ülearu ei oleks. icon_wink.gif

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 icon_wink.gif
php:
  1. <?php
  2. $lubatud=array("id","id2");
  3. foreach($_GET as $name => $value){
  4.   if(!in_array($name,$lubatud)){
  5.     echo "pole array's";
  6.     exit();
  7.   }
  8. }
  9. ?>
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
maxorator
HV kasutaja

liitunud: 30.08.2006




sõnum 31.03.2008 19:29:38 vasta tsitaadiga

Mnjaa, see on see kiiruga kokkumätsimine. icon_neutral.gif

$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
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 31.03.2008 23:23:16 vasta tsitaadiga

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 icon_wink.gif

Suured tänud icon_smile.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
marttali
HV kasutaja

liitunud: 16.12.2003




sõnum 18.04.2008 21:15:14 vasta tsitaadiga

Kui sa seo fanatt oled, siis sa niimoodi trafficut ei raiskaks icon_smile.gif
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 18.04.2008 22:19:20 vasta tsitaadiga

marttali kirjutas:
Kui sa seo fanatt oled, siis sa niimoodi trafficut ei raiskaks icon_smile.gif

Möh? Kuskohast see raiskamine selle teemaga seotud on?
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
marttali
HV kasutaja

liitunud: 16.12.2003




sõnum 23.04.2008 12:48:42 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 23.04.2008 13:41:25 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
tanzanite
HV kasutaja
tanzanite

liitunud: 13.05.2006




sõnum 23.04.2008 14:45:06 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
marttali
HV kasutaja

liitunud: 16.12.2003




sõnum 26.04.2008 10:05:25 vasta tsitaadiga

Tee siis vähemasti custom 404 leht, millel lingid erinevatele tähtsatele osadele oma kodulehel. "Tähtis" PR ei lähe kaotsi icon_smile.gif Ja kylastajad saavad soovikorral õige koha üles leida hõlpsasti..
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
Aq
HV kasutaja

liitunud: 01.01.2003




sõnum 26.04.2008 14:38:41 vasta tsitaadiga

marttali kirjutas:
Tee siis vähemasti custom 404 leht, millel lingid erinevatele tähtsatele osadele oma kodulehel. "Tähtis" PR ei lähe kaotsi icon_smile.gif 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... icon_wink.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP abil POST/GET info kättesaamine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.