$_Get + file_exist

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

AstroVersum

AstroVersum

21/03/2008 14:15:00
Quote Anchor link
Hallo,

Ik ben bezig met een scriptje voor mijn site en ben er achtergekomen je een get-variable invult die niet bestaat niets verschijnt. Dt wil ik voorkomen. Ik heb gepuzzeld met

if (file_exists($_GET['page']))
include($_GET['page']);
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
 
PHP hulp

PHP hulp

22/12/2024 07:49:33
 
- SanThe -

- SanThe -

21/03/2008 14:18:00
Quote Anchor link
Je gebruikt geen $text = bij een include. Verder maak het path relatief. En je checked ook niet of de file wel bestaat of niet.
 
AstroVersum

AstroVersum

21/03/2008 14:21:00
Quote Anchor link
Dat $text heb ik voor een ander deel in het script nodig. Het path is relatief, maar heb het hier effe veranderd in absoluut.

- En je checked ook niet of de file wel bestaat of niet.
Ja, dat wil ik nu toevoegen -_-
 
Joren de Wit

Joren de Wit

21/03/2008 14:23:00
Quote Anchor link
Quote:
Dat $text heb ik voor een ander deel in het script nodig.
Weet je dat zeker? $text zal namelijk niets meer zijn dan een boolean die true of false is, hij verder echt geen waarde hebben...

ps. Controleren of de file bestaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(file_exists($_GET['id'].'.php'))
?>

Je zult dan echter wel het relatieve pad op moeten geven...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
- SanThe -

- SanThe -

21/03/2008 14:26:00
Quote Anchor link
if (isset($_GET['id']) && !empty($_GET['id']) and file_exists(........) {

Maar zo kan dus elk bestand worden geinclude.
Probeer maar eens 'index.php'.
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 14:26:00
Quote Anchor link
ik gebruik het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php

//opgeven welke pagina's toegestaan zijn
$paginas = array("home","leden","downloads_fun","fotos","gastenboek","links");

//opgeven van een map en een extensie
$dir = 'includes/pagina/';
$ext = '.inc.php';

//opgeven van de "home" pagina
$home = 'includes/pagina/home.inc.php';

//controleren of er een pagina is meegegeven
if(isset($_GET['page']))
{

    $pad = $dir.$_GET['page'].$ext;
        
//controleren of de pagina is toegestaan en bestaat
    if(in_array($_GET['page'], $paginas) && file_exists($pad))
    {

        include"$pad";
    }

    else
    {
        echo'Deze pagina bestaat niet';
    }
}

else
{
    include"$home";
}


?>
 
- SanThe -

- SanThe -

21/03/2008 14:31:00
Quote Anchor link
@Erwin:
include"$home";

Gebruik daarvoor:
include($home);

Dat is een stuk netter.
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

21/03/2008 15:37:00
Quote Anchor link
ik zal het aanpassen, maar ik zie er de logica nog niet echt in.
Er zijn namelijk enkele quotes, dubbele quotes, haakjes en niks..

kun je me misschien uitleggen wanneer ik wat moet gebruiken?
 
- SanThe -

- SanThe -

21/03/2008 16:04:00
Quote Anchor link
Een $var gewoon niet tussen quotes zetten.
 
- wes  -

- wes -

21/03/2008 16:11:00
Quote Anchor link
() haakjes zijn voor functies, zoals include() en eigen gemaakte zoals bereken_aantal()
'' enkele quotejes zijn voor het echoen of in output zetten van een string.
"" dubbele quotejes zijn voor het gebruik in HTML
niets, zoals je dat zelf zegt is wat je gebruikt om het outputten van $vars.

dus bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

    echo '<div id="test_ding">dit is een voorbeeld met '.$var.' als variabele hierin, dat kan ook een '.functie_zijn($var).' die iets terug geeft</div>';

?>
 
AstroVersum

AstroVersum

23/03/2008 10:10:00
Quote Anchor link
erwin, bedankt. Ik heb zitten puzzelen en de rest van mijn script werkt nog :)

Weet iemand hoe ik

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?else
    {
        echo'Deze pagina bestaat niet';
    }
?>


in erwins script kan vervangen door een header 404 redirect? Als ik een header location 404 instel, krijg ik een bericht 'header already sent by line 1... '
 
Mike van Dongen

Mike van Dongen

23/03/2008 10:19:00
Quote Anchor link
@AstroVersum:
[a href="http://www.phphulp.nl/php/faq/#2"]Headers cannot / already be sent on line x[/a]

Edit, Hoe kan ik eigelijk een link in een berichtje plaatsen???
Gewijzigd op 01/01/1970 01:00:00 door Mike van Dongen
 
AstroVersum

AstroVersum

23/03/2008 10:24:00
Quote Anchor link
Heb ik al gelezen, maar ik heb geen idee waar er eerder een output kan zijn :S

@Mike [url.][/url.] wel puntje weghalen
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
 
AstroVersum

AstroVersum

23/03/2008 11:39:00
Quote Anchor link
Probleem omzeilt door

ob_start();
...
ob_end_flush();

Slordig, maar enigste oplossing.
 
Joren de Wit

Joren de Wit

23/03/2008 11:45:00
Quote Anchor link
AstroVersum schreef op 23.03.2008 11:39:
Slordig, maar enigste oplossing.
Zeer slordig en zeker niet de enigste oplossing! Als jij zorgt dat je scripts goed opgebouwd zijn, dus beginnend met de business logica (php) en afsluiten met de presentatie/output (html), kom je dit soort problemen nooit tegen...
 
AstroVersum

AstroVersum

23/03/2008 11:45:00
Quote Anchor link
Weet jij dan waar ik moet zoeken in het script van erwin?

(Was voor mij enigste oplossing)
Gewijzigd op 01/01/1970 01:00:00 door AstroVersum
 
Jesper Diovo

Jesper Diovo

23/03/2008 11:45:00
Quote Anchor link
Headers already sent-probleem valt op te lossen door alle output voorgaande aan de header() weg te halen. Ob_start() is inderdaad een oplossing, maar is niet netjes.
 
Joren de Wit

Joren de Wit

23/03/2008 12:08:00
Quote Anchor link
In het script van erwin vindt verder geen output plaats, daar hoef je het dus niet te zoeken.

Daarentegen is het leuke van de 'headers already sent' foutmelding dat deze precies aangeeft waar de output plaats heeft gevonden ('output already started at'), dus je weet al precies waar je moet kijken...
 
AstroVersum

AstroVersum

23/03/2008 15:50:00
Quote Anchor link
Yep, er stond line 1.. waar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php staat, dus daarom kwam ik niet verder.

Ik heb het ondertussen helemaal veranderd en het werkt :) zonder Ob_start
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.