[PHP] Failed opening for inclusion

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik mijn pagina open krijg ik elke keer deze fout:
Warning: Failed opening '' for inclusion (include_path='.;C:/phpdev/php/includes;C:/phpdev/php/class') in c:\phpdev\www\public\index.php on line 232
maar als ik op de link klik doet hij het wel gewoon, dit is de code:

<MAIN text="Test" URL="index.php?include=test.php"></MAIN>

<? include($_GET['include']); ?>

Ik weet dat niet veilig is, maar dit is een test.

Dus nogmaals het includen werkt alleen ik krijg vooraf zeg maar die warning, de pagina is trouwens opgemaak in tabellen

[ Voor 29% gewijzigd door Verwijderd op 28-04-2005 22:17 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

"Failed opening '' for inclusion". Hmm, zo te zien komt die $_GET-variabele niet aan. Zeker weten dat je alles goed getikt hebt?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
-NMe- schreef op donderdag 28 april 2005 @ 22:23:
"Failed opening '' for inclusion". Hmm, zo te zien komt die $_GET-variabele niet aan. Zeker weten dat je alles goed getikt hebt?
Pas als hij op die ?include=test.php klikt, gaat het goed.

TS:
PHP:
1
2
3
if(isset($_GET['include'])) {
  include($_GET['include']);
}


Trouwens al nagedacht wat er gebeurt als mensen iets als index.php?include=http://www.google.com doen?
Ik weet dat niet veilig is, maar dit is een test.
Zou ik iets doen als ?pagina=test
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
if(isset($_GET['include'])) {
  switch($_GET['include']) {
    case "test":
      include("test.php");
      break;
    case "nogwat":
      include("nogwat.php");
      break;
    default:
      echo "De opgevraagde pagina bestaat niet.";
  }
}

Zoiets kun je beter vanaf het begin goed doen :)
Als het om wat meer pagina's gaat, kun je de goede pagina's in een array zetten, en daarna met in_array checken of de te includen pagina valid is.

[ Voor 79% gewijzigd door GlowMouse op 28-04-2005 22:31 . Reden: stukje toegevoegd ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke dan het is gelukt
Ik heb het gedaan zoals je het op het laats zei, is een stuk mooier en veiliger.

Tnx _/-\o_

Acties:
  • 0 Henk 'm!

  • bat266
  • Registratie: Februari 2004
  • Laatst online: 24-08 06:41
Maar als je heel veel verschillende includes wil doen is het een heel groot case-statement, wat je dan zou kunnen doen om het toch veilig te krijgen is alle toegestane includes in een array te zetten en te kijken of een meegegeven include in het array staat. Dus iets dergelijks:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$includearray=array('include1', 'include2',......);
if(isset($_GET['include'])) {
  if (in_array($_GET['include'],$includearray))
  { 
   include($_GET['include']); 
  }
  else
  {  
    echo "De opgevraagde pagina bestaat niet.";
  };
}
else
{
  echo "De opgevraagde pagina bestaat niet.";
};

[ Voor 18% gewijzigd door bat266 op 29-04-2005 08:29 ]

Better to remain silent and be thought a fool then to speak out and remove all doubt.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (!isset($_GET['page'])) { $page = "index"; }
if (isset($_GET['page'])) { $page = $_GET['page']; }
if (empty($_GET['page'])) { $page = "index"; }

 // Stoute users als je het onderstaande tegenkomt
if (strpos($page,"://") !== false) { $page = "errors/404s"; }
if (strpos($page,"../") !== false) { $page = "errors/404s"; }
if (strpos($page,"\0") !== false) { $page = "errors/404s"; }

// Bestaat het bestand?
if (!is_file("./content/".$page.".php")) { $page = "errors/404"; }
    
require("./content/".$page.".php");

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1