Query string érték kiírása a weblapra?
Üdv! Az lenne a kérdésem, hogy egy Query String értéket hogyan tudok PHP-val beilleszteni az oldalra?
pl: http://valami.hu/valami.php?asd=123
És az oldalra írja ki hogy 123
Köszönettel: DaWe
■ pl: http://valami.hu/valami.php?asd=123
És az oldalra írja ki hogy 123
Köszönettel: DaWe
Alapok
<?php // a teljes get
Thanks
_GET ['asd']
Bevezető a PHP nyelv használatába:
http://php.webprog.biz/phptanfolyam/bevezeto
Query string. Amit "idézett",
Amit "idézett", az pedig nem link, hanem URL.
Kösz.
Ha már mindenképpen oda
Ha már úgyis itt vagyunk, érdemes megemlíteni, hogy direktbe sose iratunk ki query string változót, vagy bármi mást, ami kívülről jött. HTML esetén htmlspecialchars használata szükséges.
PHP-ban kötelező a pontosvessző.
A linkelt tutorialba belepillantottam, annyit láttam, hogy adatbáziskezelést az elavult mysql_ függvényekkel tanít, így ezt a részt legkevésbé sem javaslom. Valamint a hibarejtő operátorral (@) kapcsolatban rendkívül rossz tanácsokat ad.
Más bajom nincs :).
:)
A "htmlspecialchars" használatával kapcsolatban a "mindig kötelező" erős túlzás. Az első oldal amibe belecsöppentem; ott mezőnként kellett válogatni, ez most védendő, vagy direktben kiírandó. Az admin felületen nem alkalmaztak sem bb-code, sem másmilyen támogatást. Kiemelés, soremelés, linkek, mind html-ben lettek feltöltve. Kívülről jött minden, csak nem direkt kiírás volt, hanem előbb átment adatbázisba a tartalom. Egy weblaboros form szerkesztőig eljutni, az mennyire gyakori?
Ui. Nem anyanyelvem a PHP. A "$" jel is lemarad a változók előtt pár nap kihagyás után.
Nem csesztetésből írtam, csak
Az elavult nem idézőjelbe való, mivel hivatalosan is deprekálva van a mysql_ csomag, azaz hamarosan kikerül a PHP-ből. Ráadásul a paraméterezett kverik nyújtják a legbiztosabb védelmet az SQL injekció ellen, arról nem is beszélve, hogy tisztább lesz a kód is. Ezt meg csak a mysqli és a PDO támogatja PHP-ben, a mysql_ nem. Nem ismertem az ELTE PHP tananyagát, de ezek szerint nem mondhatóak tekintélyesnek ebben a témában, valószínűleg jó rég frissítették az anyagukat (és ez a jobbik eset). Sajnos jó tutorialt nem ismerek (magyarul legalábbis), kezdőként én is beszoptam elég sok szörnyű tananyagot, tény, hogy jó lenne valami, ahová irányíthatnánk a kezdőket.
Lehet félreérted, én azt írtam, "direktbe sose iratunk ki query string változót, vagy bármi mást, ami kívülről jött" (ebben benne van az is, hogy előtte elmented az adatbázisba, és onnan iratod ki). Természetesen helyzete válogatja, hogy milyen tisztítást/eszképelést használsz rajta. A htmlspecialchars akkor kötelező, ha HTML-be iratsz valamit, kivéve persze, ha HTML-t (és akarod, hogy az HTML maradjon), de ez esetben is érdemes a HTML Purifier-t végigtolni rajta. Persze bizonyos esetekben dönthetsz úgy, hogy ezt kihagyod, bizonyos okokból - de tudnod kell, hogy meghoztad ezt a döntést, a kezdők viszont nem tudják, ezért kell elmondani nekik. Majd ha megértik az ilyen szabályok okát, akkor felülírhatják őket, addig viszont jobb, ha a szabályokat követik.
Mysqli_, hibaelnyomó operátor @
Mysqli_; nem vagyok tőle feldobva. A paraméterezett kifejezés opció, figyelmen kívül hagyható. Viszlát biztonság.(PDO-t nem ismerem erről az oldaláról) Ja, és mit kezdesz az addigi munkáiddal? Mintha szándékosan úgy lenne megtervezve, hogy ne tudd átírni. Egy betű különbség a függvény nevekben, a paraméterek viszont mások. Ha időmilliomos vagy nem gond, ha sosem használtad direktben a függvény készletet mivel saját könyvtárad van, akkor sem.
(5) Korábbi téma, de nem értem ...
A hibaelnyomást szerintem jól magyarázza. Meggátolandó minden ötletszerű kiírkálás amit a futtató rendszer produkál, amennyiben hiba adódik azt elkapjuk, és saját hatáskörben kezeljük le.
http://php.webprog.biz/phptanfolyam/alapok/19-operatorok-III
Mi evvel a gond? Az alapelv, vagy a megvalósítás?
Ja, és mit kezdesz az addigi
Mindenhol el van mondva, mi a baj a spagettikóddal. Szerencsés esetben igen kevés tényleges mysql_ utasítás szerepel a kódodban, főleg azoknál a nagyobb projekteknél, ahol problémásabb lehet az átalakítás.
Ha már mysqli vagy PDO, csakis paraméterezett kverik. Hogy érted, hogy figyelmen kívül hagyható?
Ami a hibaelnyomást illeti, kezdőknek a létezését sem szabadna említeni :). Egyszerűen borzasztó ritka az olyan szituáció (én még nem találkoztam ilyennel, csak olvastam róla :D), ahol tényleg ez a legjobb megoldás. Fejlesztés közben az a jó, ha látod a hibákat, a hiba azért van, hogy tudj róla, élesben meg eleve ki kell kapcsolni a hibák megjelenítését (valahol eleve perverz, hogy a HTML-ben jelennek meg a hibák, van, aki fejlesztés közben is a logot használja helyette). Erről azonban nem írnak, sőt javasolják a @ használatát, újabb kezdőgenerációknak okozva többórás hibakeresési rémálmokat (és ráadásul rohadt lassú is). Bárcsak valaki annó elmondta volna nekem ezeket...
A többi részét nem néztem a tutorialnak, általában van 3-4 dolog amit elsőre megnézek egy ilyennél, ha ezeket bukja, akkor kuka :).
Figyelmen kívül hagyható
Ráadásul, bonyolultabb kifejezést nem függvény paraméterként szokás összerakni, hanem külön sztringben. Akkor meg ott vagyunk ahonnan indultunk. Az előkészítés régről ismerős, dupla idézőjelen belüli bűvészkedés a változókkal, ugyanaz a minta. Szeretném ha többet tudna a javasolt felület, csak valahogy nem látszik rajta. Inkább a fegyelmen múlik a dolog.
A kukacos hibaelnyomást megvizsgáltam. Fogjuk rá, babona volt. Egyes függvények, ha van, ha nincs, mindenképp üzennek a képernyőre. Szerencsére az error_reporting() -ra hallgatnak.
Természetesen támogatja a nem
Paraméteres kverikkel nincs sztring-összefűzögetés (az olvashatatlanság netovábbja), meg rakás idézőjel megnyitva több szinten, legalábbis nem kéne, hogy legyen. Fegyelem lehet, hogy kell hozzá, de amióta átálltam (annó nagy morogva), nem is áll rá a kezem a régi módszerre (egyedül az IN() listákkal van egy kis kellemetlenség, de megoldható).
Kis pontosítás
Legközelebb majd használom. Hasznos beszélgetés volt.
Eh, jól elszúrtam, kösz :).
Ez a leírás egy fokkal jobb, de még mindig a mysql_-el kezd.
Nekem is hasznos volt a beszélgetés.
Ha egy ilyen alap dolgot nem
Ez az alapozás minimum szükséges hogy nekikezdj a php-s világnak, utánna jöhet hogy escapelés, meg pdo (vagy mysqli) és az összes többi finomság amivel jó és biztonságos kódot írhatsz, addig ne is fárasszuk őt ilyenekkel.
10 évvel később
Azóta vagy 15 nyelven programoztam, rengeteg megrendelésen és saját projekten vagyok túl. A sok-sok év alatt egyetlen dolog változatlan, hogy nagyon odafigyelek az SQL injection-re