[PHP/MySQL]Best practices

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Ik ben nu al een tijd bezig met PHP, ik ben er niet bijzonder goed in, maar ik kan er aardig mee overweg (met php.net kom je al een heel eind). Ik ben nu voor de pagina waar ik momenteel mee bezig ben de code wat aan het opschonen enzo, en ik heb een paar gevallen waar ik niet precies weet wat het beste is.

- mysql_close(), nadat je verbinding hebt gemaakt met de database, en je hebt alle info die je nodig had eruit gehaald, zou je deze database-verbinding met die functie weer kunnen (moeten) sluiten.
Volgens php.net wordt de verbinding echter automatisch gesloten als het script helemaal uitgevoerd is. Betekent dit dat ik die functie niet aan hoef te roepen op het eind van de pagina, of als ik header redirects verstuur?
Ik doe dit nooit, en ik krijg er geen foutmeldingen over, maar is het beter als ik het wel doe?
- Als ik een form heb wat gepost wordt naar een file.php welke het form verwerkt, start ik die file.php altijd met if ($_POST).
Is dit false, dan wordt je naar het form geredirect. Is dit true, dan wordt het form verwerkt.
Hierin lees ik eerst alle POST-variabelen uit die het form meegeeft (althans mee zou moeten meegeven) met $var = $_POST['var'];.
Ik bedenk me dat dit eigenlijk misschien niet zo'n goeie manier is, en dat ik eerst moet kijken of die waarde uberhaupt wel bestaat met isset($_POST['var'], maar dat zou ik voor elke variabele die check uit moeten voeren.
Kan dit niet makkelijker? Of korter iig?
- Lege MySQL kolommen.
Op de site moeten newsitems en 'foto-items' geplaatst kunnen worden. Het lijkt mij het overzichtelijkst als dit alles in dezelfde tabel komt te staan, maar dit zou betekenen dat er bij de 'foto-items' steeds een kolom leeg zou zijn. De tabel heeft de volgende velden:
id, userid, title, summary, message, date, imageid, item
In het geval van een foto-item zou het veld "message" steeds leeg zijn. Moet ik daar dan ook niks invoegen, of kan ik er beter steeds bijv "n/a" of "nvt" ofzo invullen?

[ Voor 4% gewijzigd door Dr_Frickin_Evil op 19-04-2004 18:51 ]


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Als je PHP't zoals je net post, zou ik nutz worden, onoverzichtelijke hoop met letters. Of is je enter-knop kapot? >:)

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • glashio
  • Registratie: Oktober 2001
  • Laatst online: 18-09 10:13

glashio

C64 > AMIGA > PC

Er zijn 80 wegen naar Rome....

En jij vraagt welke ? uhhh wat vind je belangrijk....
- Route 1 dat je autoradio niet gejat wordt onderweg ( SECURITY )
- Route 2 dat je er zo snel mogelijk ben ( PERFORMANCE )
- Route 3 dat je genoeg te zien krijgt onderweg ( EXTENDABLE )
- Route 4 dat je niet met autopech komt te staan ( STABLE )

> Google Certified Searcher
> Make users so committed to Google that it would be painful to leave
> C64 Gospel
> [SjoQ] = SjoQing


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Heb er maar gewoon een enorme quote van gemaakt:
Dr_Frickin_Evil schreef op 19 april 2004 @ 18:42:- mysql_close(), nadat je verbinding hebt gemaakt met de database, en je hebt alle info [...]verstuur?
Ik doe dit nooit, en ik krijg er geen foutmeldingen over, maar is het beter als ik het wel doe?
Nee, geen enkel probleem aangezien het inderdaad vanzelf gebeurt.
- Als ik een form heb wat gepost wordt naar een file.php welke het form verwerkt, start ik die file.php altijd met if ($_POST).
Is dit false, dan wordt je naar het form geredirect. Is dit true, dan wordt het form verwerkt.
Check de request method. Dat is al een stukje beter.
Hierin lees ik eerst alle POST-variabelen uit die het form meegeeft (althans mee zou moeten meegeven) met $var = $_POST['var'];.
Ik bedenk me dat dit eigenlijk misschien niet zo'n goeie manier is, en dat ik eerst moet kijken of die waarde uberhaupt wel bestaat met isset($_POST['var'], maar dat zou ik voor elke variabele die check uit moeten voeren.
Maak een array met alle benodigde velden en loop hierdoorheen. Check steeds of het veld wat verplicht is ook in de post array voorkomt.
- Lege MySQL kolommen.
Op de site moeten newsitems en 'foto-items' geplaatst kunnen worden. Het lijkt mij het [...] "n/a" of "nvt" ofzo invullen?
Gewoon leeg laten, geen enkel probleem. Een melding tonen aan de gebruiker kan desgewenst aan de hand van de resultaten van de empty() functie.

[ Voor 13% gewijzigd door djluc op 19-04-2004 20:17 ]


Acties:
  • 0 Henk 'm!

  • Eärendil
  • Registratie: Februari 2002
  • Laatst online: 15:34
djluc schreef op 19 april 2004 @ 19:12:Maak een array met alle benodigde velden en loop hierdoorheen. Check steeds of het veld wat verplicht is ook in de post array voorkomt.
Hier kan je handig 'variable variables' voor gebruiken:
PHP:
1
2
3
4
5
foreach $array as $a {
  if (isset($_POST[$a])){
    ${$a}=$_POST[$a];
  }
}

Acties:
  • 0 Henk 'm!

  • BraveWorld
  • Registratie: September 2001
  • Niet online
Voor eenvoudige/kleine toepassingen maakt het waarschijnlijk niks uit of is het zelfs inefficiënter, maar wat ik hier op GOT geleerd heb: NORMALISEREN is het netste.

Als één pagina news of foto's kan bevatten maak je een tabel:

page_id, page_type (news/foto).

Daarnaast een news tabel: news_id, page_id

En voor de foto's: foto_id, page_id

Dit is geen signature...


Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Bedankt voor de reacties, hier kan ik wel wat mee.

Nog een vraagje, op de site include ik verschillende php-files voor de verschillende onderdelen van de site. Om ervoor te zorgen dat deze files niet zomaar opgevraagd kunnen worden, doe ik het volgende. Ik zet in de index.php (die de andere files include) de regel:
code:
1
$initialized = 1;

Vervolgens check ik bij elke geinclude file:
code:
1
2
if (!$initialized)
    header("Location:../index.php?section=error&code=5");

Op deze manier krijg je dus een error te zien als je die file via de adresbalk opvraagt. Ik heb er geen else-statement bijgezet, omdat je er toch altijd meteen uitgeknikkerd wordt door de header-redirect, of niet?

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Ik heb al mijn modules in met .htacces bestanden beveiligde mappen zitten. Dat werkt erg fijn. In index.php include ik alle benodigde modules en kan ik op een veilige manier bepalen wat wel en niet mag.

Acties:
  • 0 Henk 'm!

Verwijderd

Op deze manier krijg je dus een error te zien als je die file via de adresbalk opvraagt. Ik heb er geen else-statement bijgezet, omdat je er toch altijd meteen uitgeknikkerd wordt door de header-redirect, of niet?
Joah.. als je register_globals off hebt tenminste (anders kan je die variabele gewoon met het requesten definieren als je de code kent). Handiger is om een constante aan te maken met define(), en dan middels defined() te checken of de constante aanwezig is. Die kan op geen enkele manier ge-overruled worden, dat is wel zo comfortabel. Verder heb ik, zoals iemand anders ook al aangaf, altijd m'n andere files buiten de webroot staan, zodat direct aanroepen niet eens kan.

[ Voor 7% gewijzigd door Verwijderd op 20-04-2004 23:30 ]


Acties:
  • 0 Henk 'm!

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08 14:36
Eärendil schreef op 20 april 2004 @ 02:21:
[...]
Hier kan je handig 'variable variables' voor gebruiken:
PHP:
1
2
3
4
5
foreach $array as $a {
  if (isset($_POST[$a])){
    ${$a}=$_POST[$a];
  }
}
Is dat handig? Ik weet hierna nog steeds niet of ik variabele $foo kan gebruiken. Volgens mij schiet je hier helemaal niets mee op.
Bovendien is het net zo lek als register_globals = on.

| Toen / Nu


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Je zult toch echt moeten initialiseren wil je het enigszins overzichtelijk en veilig houden.

PHP:
1
2
3
4
5
6
7
$var1 = '';
$var2 = '';
$var3 = 0;

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   extract ($_POST, EXTR_OVERWRITE);
}


Zo weet je zeker dat je varabelen gezet zijn en ze niet te overschrijven zijn.

Waarom niemand overigens extract() gebruikt en zelf daar maar loopjes voor blijft schrijven is mij ook een raadsel :P

Het extracten is in principe ook al niet zo netjes (er variabelen van maken), maar het scheelt je een berg issets op de $_POST elke keer.

[ Voor 31% gewijzigd door Bosmonster op 21-04-2004 09:51 ]


Acties:
  • 0 Henk 'm!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
- Als ik een form heb wat gepost wordt naar een file.php welke het form verwerkt, start ik die file.php altijd met if ($_POST).
Is dit false, dan wordt je naar het form geredirect. Is dit true, dan wordt het form verwerkt.
Hierin lees ik eerst alle POST-variabelen uit die het form meegeeft (althans mee zou moeten meegeven) met $var = $_POST['var'];.
Ik bedenk me dat dit eigenlijk misschien niet zo'n goeie manier is, en dat ik eerst moet kijken of die waarde uberhaupt wel bestaat met isset($_POST['var'], maar dat zou ik voor elke variabele die check uit moeten voeren.
Kan dit niet makkelijker? Of korter iig?
Waarom moeiljik doen als het makkelijker kan. Gewoon iedere INPUT-element van je formulier een attribute name="naam_variabel" meegeven. Deze zijn dan in je file.php als normale variabelen beschikbaar.

Voobeeldje:
code:
1
2
3
4
<form method="post" action="file.php">
  <input type="text" name="name">
  <input type="submit" value="ok">
</form>

In file.php heb je gelijk $name met het ingevoerde waarde beschikbaar. Ik denk in jouw situatie dat je hier al genoeg aan hebt.
- Lege MySQL kolommen.
In het geval van een foto-item zou het veld "message" steeds leeg zijn. Moet ik daar dan ook niks invoegen, of kan ik er beter steeds bijv "n/a" of "nvt" ofzo invullen?
Is NULL niet beter i.p.v. niks of "n/a" e.d. ?

Acties:
  • 0 Henk 'm!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
robertpNL schreef op 21 april 2004 @ 09:57:
[...]


Waarom moeiljik doen als het makkelijker kan. Gewoon iedere INPUT-element van je formulier een attribute name="naam_variabel" meegeven. Deze zijn dan in je file.php als normale variabelen beschikbaar.
Daarna wel in file.php even via een $var = $HTTP_POST_VARS['var'] of $var = $HTTP_GET_VARS['var'] initialiseren. Anders kun je in de problemen komen omdat de ene keer register_globals aanstaat en de andere keer uit. Initialiseren voorkomt ook dat van buitenaf niet zomaar de $var gezet kan worden voor file.php via de adresbalk.

Always shoot for the moon. Even if you miss you will land among the stars...


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

robertpNL schreef op 21 april 2004 @ 09:57:
[...]
Waarom moeiljik doen als het makkelijker kan. Gewoon iedere INPUT-element van je formulier een attribute name="naam_variabel" meegeven. Deze zijn dan in je file.php als normale variabelen beschikbaar.
Dat is nou juist waar het om gaat.. Wat jij beschrijft is het gedrag van register_globals. Das ranzig, onoverzichtelijk en creeert potentiele veiligheidslekken. Het gebruik hiervan wordt afgeraden, zelfs door PHP.NET door bovenstaande redenen. In standaard installaties staat de setting standaard ook disabled om deze redenen. Met als gevolg dat de setting gebruiken ook nog eens compatibiliteitsproblemen op kan leveren.

M.a.w.: Niet gebruiken...

@seamus21: $HTTP_POST_VARS etc zijn al HEEL lang vervangen door de superglobals: $_POST, $_GET, $_SESSION, $_COOKIES, etc..

Mensen moeten eens naar de datum gaan kijken van de tutorials die ze volgen op internet... :P

[ Voor 38% gewijzigd door Bosmonster op 21-04-2004 10:46 ]


Acties:
  • 0 Henk 'm!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Dat is nou juist waar het om gaat.. Wat jij beschrijft is het gedrag van register_globals. Das ranzig, onoverzichtelijk en creeert potentiele veiligheidslekken. Het gebruik hiervan wordt afgeraden, zelfs door PHP.NET door bovenstaande redenen
Bedankt, dat wist ik niet. Please, vergeef mij bovenstaande advies.

Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 06:42
Bosmonster schreef op 21 april 2004 @ 10:43:
[...]
Dat is nou juist waar het om gaat.. Wat jij beschrijft is het gedrag van register_globals. Das ranzig, onoverzichtelijk en creeert potentiele veiligheidslekken. Het gebruik hiervan wordt afgeraden, zelfs door PHP.NET door bovenstaande redenen. In standaard installaties staat de setting standaard ook disabled om deze redenen. Met als gevolg dat de setting gebruiken ook nog eens compatibiliteitsproblemen op kan leveren.
Je heb volkomen gelijk, maar het ziet er toch naar uit dat 3/4e van de PHP'ende mensen hoopt dat register globals gewoon aan staat. Als ik op één van de hosting servers van mijn bedrijf dit uit zou zetten, weet ik zeker dat er binnen een paar minuten al een aantal klachten liggen. (Zo zijn er van die mensen die elke minuut hun eigen site refreshen :D)
Bosmonster schreef op 21 april 2004 @ 09:48:
Je zult toch echt moeten initialiseren wil je het enigszins overzichtelijk en veilig houden.

PHP:
1
2
3
4
5
6
7
$var1 = '';
$var2 = '';
$var3 = 0;

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   extract ($_POST, EXTR_OVERWRITE);
}


Zo weet je zeker dat je varabelen gezet zijn en ze niet te overschrijven zijn.

Waarom niemand overigens extract() gebruikt en zelf daar maar loopjes voor blijft schrijven is mij ook een raadsel :P

Het extracten is in principe ook al niet zo netjes (er variabelen van maken), maar het scheelt je een berg issets op de $_POST elke keer.
Dit is wel een goed idee om bestaande projecten snel aan te kunnen passen :D
Ik denk dat niet veel mensen die methode kennen. Ik geef eerlijk toe dat ik even een greep naast me heb moeten doen. (PHP manual in boekvorm :D)

sebsoft.nl


Acties:
  • 0 Henk 'm!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
@Bosmonster, bedoel je niet EXTR_SKIP??

Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Het leek mij wel handig om gewoon een functie te maken, zoals dit:
code:
1
2
3
4
function getVar($source, $element) {
    if (isset($source[$element]))
        rerturn $source[$element];
    }

En deze als volgt aan te roepen:
code:
1
$var = getVar($_POST, 'var');

Maar wat moet ik in die functie nu returnen als die waarde niet bestaat? return FALSE ofzo?

[ Voor 4% gewijzigd door Dr_Frickin_Evil op 21-04-2004 15:34 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Dr_Frickin_Evil schreef op 20 april 2004 @ 17:12:
Nog een vraagje, op de site include ik verschillende php-files voor de verschillende onderdelen van de site. Om ervoor te zorgen dat deze files niet zomaar opgevraagd kunnen worden, doe ik het volgende. Ik zet in de index.php (die de andere files include) de regel:
code:
1
$initialized = 1;

Vervolgens check ik bij elke geinclude file:
code:
1
2
if (!$initialized)
    header("Location:../index.php?section=error&code=5");

Op deze manier krijg je dus een error te zien als je die file via de adresbalk opvraagt. Ik heb er geen else-statement bijgezet, omdat je er toch altijd meteen uitgeknikkerd wordt door de header-redirect, of niet?
ik doe dat op deze manier:
PHP:
1
if(!defined("IN_SITE")){trigger_error("Zo, jij bent 1337 :o", E_USER_ERROR);}

in mijn include files als eerste regel

en in mijn files zelf zet ik een
PHP:
1
define('IN_SITE','scriptname');


met als bijkomend voordeel dat ik overal de beschikking heb over de naam van het script :P

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 15:26
Zet je include files gewoon in een aparte dir die niet te benaderen is van het internet. Maar alleen door apache/php.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Eskimootje schreef op 21 april 2004 @ 15:34:
Zet je include files gewoon in een aparte dir die niet te benaderen is van het internet. Maar alleen door apache/php.
true, maar ook dan doe ik dit, waarom?
omdat je niet altijd mogelijkheden hebt om dit soort files buiten je webroot te zetten ;)
en dan nog heb ik wel een settings file die ik include die in de webroot staat waarin staat waar mijn include files zich bevinden etc. etc
Niet dat een dergelijke include page output genereert of op een andere acties onderneemt, maar zo komt het wel in je error.log :Y)

Acties:
  • 0 Henk 'm!

  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 15:26
Je kan permissies ook per file instellen, gaat me er vooral om dat men er over nadenkt welke techonlogie het beste gebruikt kan worden. En dubbele security is in dit geval zeker niet erg.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Eskimootje schreef op 21 april 2004 @ 15:55:
Je kan permissies ook per file instellen, gaat me er vooral om dat men er over nadenkt welke techonlogie het beste gebruikt kan worden. En dubbele security is in dit geval zeker niet erg.
true, alleen permissies instellen dat files niet gelezen mogen worden door de webserver heeft weinig nut omdat je applicatie ook draait met dezelfde user als de webserver :)
Ook gebruik van htaccess raad ik af, tenzij het niet anders kan. htaccess is "traag"

Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Ik wil ook graag de files zelf beveiligen, zonder direct afhankelijk te zijn van de server.

Andere vraag. Ik heb de functie getVar geschreven, deze ziet er zo uit:
code:
1
2
3
4
5
6
function getVar($source, $element) {
    if (isset($source[$element]))
        return $source[$element];
    else
        return FALSE;
    }

Als ik een GET of POST variabele wil gebruiken, doe ik dit als volgt:
code:
1
2
3
4
5
$code = getVar($_GET, 'code');  
if (!$code) {
    header("Location: index.php?section=error&code=1");
    exit();
    }

Nu wil het geval dat $code ook 0 kan zijn, en dat in dat geval !$code dus true oplevert (duurde ff voordat ik erachter kwam wat er mis ging :D ), Ik ben dus tot de conclusie gekomen dat !$code eigenlijk niet erg netjes is, hoe moet ik dat dan toesten? if ($code == FALSE) ofzo?

Acties:
  • 0 Henk 'm!

  • Dr_Frickin_Evil
  • Registratie: Mei 2000
  • Laatst online: 19-09 20:42
Heeft iemand misschien een antwoord op de vraag wat ik de functie getVar het beste kan laten returnen als $source of $element niet bestaat? Dat return FALSE werkt niet erg goed, want in dat geval kan ik de uitkomst niet toetsen aan een integer: de statement:
code:
1
if ($var > 1)

Werkt dan niet (goed). Is het dan misschien beter om gewoon de hele else-statement uit die functie weg te halen ofzo?

Acties:
  • 0 Henk 'm!

Verwijderd

Ik gebruik zelf ongeveer het volgende:

PHP:
1
2
3
4
5
6
7
function get ( $name, $default = null ) {
   if ( array_key_exists ( $name, $_GET ) ) {
      return $_GET [ $name ];
   } else {
      return $default;
   }
}

Verder kun je ook de === operator gebruiken om te vergelijken. Die is wat stricter dan alleen ==, hij controleert namelijk ook of het type van beide variabelen overeenkomt.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Nielsz schreef op 21 april 2004 @ 13:54:
@Bosmonster, bedoel je niet EXTR_SKIP??
Nee.. anders zou het helemaal niks doen :P Het is juist de bedoeling dat indien ze bestaan in bijvoorbeeld $_POST ze de geinitialiseerde variabelen overschrijven. Zo weet je zeker dat alle variabelen gezet zijn (geen issets meer nodig dus).

[ Voor 6% gewijzigd door Bosmonster op 24-04-2004 20:06 ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Dit soort details hoort je Database Abstraction Layer (DBAL) toch gewoon af te vangen? Geniale dingen zoals
PHP:
1
2
3
4
5
6
7
$dbc->db_update('users',array(
  'user_group_id'=>3,
  'user_icon_id'=>15
  'user_nick'=>'Al\'Sayad'),
'user_id = 32');

$dbc->db_insert('documents',$_POST);
zijn dan gewoon mogelijk. Al dat soort beveiliging, het openen en sluiten van verbindingen en dergelijke logica moet je zo diep mogelijk wegstoppen, zodat je programma er zelf aan denkt en jij er niet over hoeft in te zitten (behalve wanneer je je DBAL bouwt).

[ Voor 89% gewijzigd door Skaah op 24-04-2004 20:14 ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Dr_Frickin_Evil schreef op 22 april 2004 @ 14:46:
Ik wil ook graag de files zelf beveiligen, zonder direct afhankelijk te zijn van de server.

Andere vraag. Ik heb de functie getVar geschreven, deze ziet er zo uit:
code:
1
2
3
4
5
6
function getVar($source, $element) {
    if (isset($source[$element]))
        return $source[$element];
    else
        return FALSE;
    }

Als ik een GET of POST variabele wil gebruiken, doe ik dit als volgt:
code:
1
2
3
4
5
$code = getVar($_GET, 'code');  
if (!$code) {
    header("Location: index.php?section=error&code=1");
    exit();
    }

Nu wil het geval dat $code ook 0 kan zijn, en dat in dat geval !$code dus true oplevert (duurde ff voordat ik erachter kwam wat er mis ging :D ), Ik ben dus tot de conclusie gekomen dat !$code eigenlijk niet erg netjes is, hoe moet ik dat dan toesten? if ($code == FALSE) ofzo?
Als $code 0 is evalueert ie tot FALSE.
PHP:
1
2
3
4
5
if ($var === FALSE)
{
  // als type gelijk (dus, 2x bolean)
  // en beide FALSE
}
Dr_Frickin_Evil schreef op 20 april 2004 @ 17:12:
Bedankt voor de reacties, hier kan ik wel wat mee.

Nog een vraagje, op de site include ik verschillende php-files voor de verschillende onderdelen van de site. Om ervoor te zorgen dat deze files niet zomaar opgevraagd kunnen worden, doe ik het volgende. Ik zet in de index.php (die de andere files include) de regel:
code:
1
$initialized = 1;

Vervolgens check ik bij elke geinclude file:
code:
1
2
if (!$initialized)
    header("Location:../index.php?section=error&code=5");

Op deze manier krijg je dus een error te zien als je die file via de adresbalk opvraagt. Ik heb er geen else-statement bijgezet, omdat je er toch altijd meteen uitgeknikkerd wordt door de header-redirect, of niet?
Zo werkt phpBB (bijna) ook
PHP:
1
define('IN_PHPBB',true);

en in de includes
PHP:
1
if (!defined('IN_PHPBB') { // etc

[ Voor 33% gewijzigd door Skaah op 24-04-2004 20:17 ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
-- quote ipv edit---

[ Voor 96% gewijzigd door Skaah op 24-04-2004 20:09 ]

Pagina: 1