Megtanulni írni scriptek helyesen

Sok kezdő web programozó ismeri a nyelvet segítségével könyveket. A könyv kétségtelenül nagyon fontos és szükséges, de van példa (kezdőknek), ami a lényegük nem helyesek a szempontból a stabilitás és a hordozhatóság a forgatókönyvet. Fenntarthatóság az értendő, a hibák lehetőségét a különböző típusú, az tolerancia - ugyanaz, de amikor át a forgatókönyvet a helyi gépről az otthoni hostng szolgáltató szerver.

Az alábbiakban szeretnék csak azt mutatják, a kezdő webfejlesztők, hogy megtanulják, hogyan kell írni szkripteket egyszerre, majd nem tapasztal felesleges problémákat, és nem „fogás” nem világos, hol kezd el hibát.

Azt kell mondanom, hogy én magam szembe ezzel, hogy minden ezen áthaladt én gyötrelem.

Azt fogja vizsgálni a következőket:

1. PHP konfiguráció a helyi és a kiszolgáló.
2. Ha eltemetett "@"?
3. register_globals = Off, és semmi mást.
4. főbb szempontjai szintaxis. Betűs op megjegyzi szó.

1. PHP konfiguráció a helyi és a kiszolgáló.

Miért vagyok ezzel előnyt. Az a tény, hogy számos, a helyi gép azonnal kikapcsol a kijelző az összes hibát. Ez - nem helyes. Ahelyett, nézd bámult a képernyőre, és keresse meg, ahol, mint kiderült, hiányzik a pontosvessző, akkor tévesen kiállított PHP rögtön megérti, hogy mi történik.

De először szeretnék egy kis kitérőt a részben, hogyan kell beállítani a PHP, Apache modul vagy gyorsan CGI.
A legoptimálisabb változatot -, hogy hozzanak létre, mint a web szerver modul. Ehhez a konfigurációs fájlban httpd.conf Apache webszerver levelet a következő sorokat:

LoadModule php4_module D: /bin/php/sapi/php4apache2.dll
AddType application / x-httpd-php .php .phtml .php4 .php


Ellentétben FastCGI - következő. Először. Amikor FastCGI php.ini betöltődik a memóriába a webszerver körülbelül minden második alkalommal a szkript fut, ha telepítve van az Apache modul PHP konfigurációt kell végezni csak induláskor, vagy újraindítani webszerver segítségével, önmagában a sebesség és a kiszolgáló terhelése kisebb lesz. Ezen felül, ha telepíti a két fastcgi bizonyos funkciók nem állnak rendelkezésre. nem kell egy kezdő programozó. de a fejlesztés nagyszabású internetes alkalmazásokat lehet futtatni problémákat. De jobb, hogy megakadályozzák a problémát.

Most folytassa a konfiguráció a PHP. A konfigurációs fájl php.ini kötelezően meghatározott, a következő irányelvek írásos alábbi értékeket:

error_reporting = E_ALL
display_errors = On
display_startup_errors = On


Írni vagy nem írni a hibákat a naplófájlok - ez az Ön választása szerint.
A szerver az ingyenes web hosting cég, biztos vagyok benne, kapcsolja ki az összes ilyen irányelvek biztonsági okokból úgy, hogy egy potenciális támadó nem találja a módját, ahol vannak a szkripteket. De jó, ha már közzé a script egy globális hálózat, hogy nem termel semmilyen hibát.
Ezen túlmenően, a


Annak érdekében, hogy nem lehet használni


Alapértelmezett max_execution_time direktíva értéke 30, de a hatékonyság, a jobb, hogy kevesebb. Ha valami „fixated”, a 10 másodperc is elég ahhoz, hogy megértsük.

register_globals = Off
register_argc_argv = Off


A 3. fejezetben elmondom többet.


Nagyon gyakran a kezdő webfejlesztők nem értik a különbséget a „és”, így kapcsolja ki az irányelvet. A 4. fejezetben a pillanat lesz látható példával.

2. Ha eltemetett "@"?

Ez talán a legalapvetőbb hiba a kezdő programozók - a használata „@”. Ez a karakter, mielőtt bármilyen üzemeltető elnyomja a hibát és annak hatályba a naplóban. Nem engedi, hogy a színpadon a hibakeresés nyomon követni a hibát, és kétségbeesetten próbálta kitalálni, hogy mi volt a baj.

Egy példája. Tegyük fel, tesszük a "@" jel előtti varrás $ f = fopen ( "fle.txt". "W +");. Ha vesszük csak a leggyakoribb hibákat, hogy előfordulhat az ezt követő fwrite Például: a) nem rendelkezik az iratbetekintési, b) a fájl nem létezik) az fopen nem lehet hivatkozni biztonságos módon. Képzeljük csak el, hány hibát lehetőség lehet? Rengeteg. És hogyan fogsz hogy megtudja, mi a hiba történt, csak rád, mert elnyomta a kimeneti „@” jel.

Ezért szigorúan szigorúan tiltják, hogy használja @.

Lehet kérdezni, hogy akkor azért, hogy ne hibaüzenetet?
Ahhoz, hogy nincs hiba van szükség, hogy megakadályozzák, vagy ahogy az ügy irataiban, hogy a) ellenőrizni a fájl létezik, és b) annak ellenőrzésére, de (már a jobb oldalon), hogy azt kell írni valamit is_writeable ();.

Más esetekben, például amikor a mysql_connect (); szükség van, hogy ellenőrizze az értéket, amelyet akkor a függvény. Általános szabály, hogy lehetőség van annak megállapítására, hogy van egy hiba, vagy sem. Általában, ha hibát jelez a HAMIS, NULL vagy üres karakterlánc.

Ez lehetővé teszi, hogy a felhasználó egy nem üres oldal, ha például, megpróbálta használni az adatokat (n = 14?), És a tárolt adatok a fájlokat, és a file 14 nem létezik, és a szöveges üzenetet: „Nincs adat” .

„Catching” hibák is nagyon fontos biztonsági szempont a forgatókönyvet.

3. register_globals = Off, és semmi mást.

Ha az első két fejezetet, tettem hangsúlyt azokat a pontokat, amelyekkel egy kezdő programozó arc már egyszer, ebben a fejezetben lesz szó ebben a kérdésben, ami megnyilvánul csak később. Gyakran fog szembenézni, amikor mozog a script (már kész) a szerver hosting szolgáltató. Személy szerint én sokáig megszokni register_globals = Off, így az elvtársak, kezdő programozók, csak hogy ez az irányelv ki. Ezen túlmenően, ez a pont nagyon fontos biztonságának biztosítása a forgatókönyvet.


if (isset ($ form))
if (isset ($ család) isset ($ form))
print "Az Ön neve:". $ Család. "

print "You are here". $ Form. "

>
más
// Itt az űrlapot.
>
>

Ie valójában ez az egész csapódik le, hogy lehetőség van a helyettesítési összes változó. Valójában ez jelentős hátrányt biztonság nagyon nagy a valószínűsége, hogy a támadó képes lesz látni a fontos fájlokat a kiszolgálón.

Most, hogyan valósítható meg az register_globals = Off

A PHP számos globális tömbök. $ _GET, $ _POST, $ _COOKIE, $ _REQUEST (az unió az első három, akkor nem ajánlott biztonsági okokból), $ _FILES (az aploda file), $ _SESSIONS (session), $ _SERVER (szerver változók), $ _ENV (környezeti változók) , $ GLOBALS (egyesíti).

Mit jelent ez. Az alábbiakban, én csak átírni a forgatókönyvet általam megadott korábbi register_globals = Off ..


if (isset ($ _GET [ 'form']) isset ($ _COOKIE [ 'család']) isset ($ _COOKIE [ 'forma']))
print "Az Ön neve:". $ _COOKIE [ 'család']. "

print "You are here". $ _COOKIE [ 'form']. "

>
más
// Itt az űrlapot.
>

Ebben a fejezetben azt szeretné, hogy az alábbi kis példa. Ismét, először azt a példát a register_globals.

4. főbb szempontjai szintaxis. Op szó, hanem szó.

1. Ismét sok kezdő programozók nem értik a különbség az írás: $ _POST [ „pólus”] és $ _POST [pole]. Az első lehetőség - szintaktikailag helyes, de a második viszont nem. PHP megpróbálja megtalálni nem rúdrész, és egy elem, amelynek neve van tárolva a pole állandók, hogy - nem.

Idézetek keretes literálok, azaz vonalon. Ha van egy tömb - index, akkor nem kell írni a $ _POST [ „1”], és szükség van a $ _POST [1].

A különbség a „és” nincs.

2. A kimeneti változók gyakran a következőképpen végezzük:

print „A nevem $ name. I $ kor éves.”;


„Megérti” a sorban tolmács mennyit kell, mint

print „A nevem”. $ Neve. "I". $ Age. „Éves.” ;
// vagy
print „A nevem. I. éves.” ;
?>


Az első lehetőség a legelőnyösebb, mind pedig a szerkesztő szoftver kód - könnyebb megérteni, ha van egy változó, de hol a szövegre.

Kapcsolódó cikkek