Big problème php

Fermé
yann5 Messages postés 398 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 1 mai 2015 - 6 juin 2009 à 09:08
 A.Nonymous - 8 juin 2009 à 01:43
Bonjour,

Sur mon site, j'obtient une erreur php. Voici mon code php :
<?php

if(isset($_GET['page']))
{
if($_GET['page']==youtube)
{
include("http://youtube.com/user/babla");
}
else
{
include("$_GET['page']");
}
else
{
include("news.php");
}

Le code html :

<a href="?page=youtube">
<a href="?page=com_jeu.php">


Pour moi je lis :

si on a cliqué sur un lien
si ce lien vaut youtube
afficher youtube
sinon
afficher la page demandée
si la variable n'existe pas
afficher les news



Merci pour votre aide
A voir également:

14 réponses

benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
6 juin 2009 à 14:24
Oui. Mais je considère quand même que include($_GET['page']); est une faille de sécurité, c'est juste un conseil (car on peut visiter votre serveur avec, lire tout les fichiers même ceux qui sont dans un dossier protégé par .htaccess).
1
quand intervient ton problème php, lorsque tu clique sur le lien ou lorsque tu charge la première fois ta page ?
0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
6 juin 2009 à 10:06
Tu peux déjà modifier une de tes conditions (car youtube est une chaine de caractère) :
if($_GET['page']=="youtube")

Sinon tu peux aussi modifier cette ligne (il y a pas besoin des "):
include($_GET['page']); 

Autre chose la ligne include($_GET['page']); est très dangereuse au niveau de la sécurité de ton site car l'utilisateur peut charger n'importe quel fichier présent sur ton serveur.
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
6 juin 2009 à 10:54
Mais non, tu peux pas inclure une page qui n'est pas sur ton domaine.
Si ton site est tartampion.com, tu ne pourra pas faire d'include sur monvoisin.com, mais seulement sur tartampion.com => voilà pourquoi tu as cette erreur.

Youtube tu donnes les codes à insérer; c'est des embed car c'est du flash.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
6 juin 2009 à 12:10
C'est pas ça que je veux dire par exemple tu as un dossier admin protégé par un .htaccess.
Ton utilisateur pourra accéder à la page d'index de admin sans problème (il va taper ?page=admin%2Findex.php) il peut même remonter au dossier parent si admin et dans le dossier parent en tapant : ?page=..%2Fadmin%2Findex.php.

Même si admin et protégé par un .htaccess, php y a quand même accès.
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
6 juin 2009 à 14:19
Oui.

Moi ce que je veux dire c'est que:
include("http://youtube.com/user/babla");
est totalement impossible, sauf si tu t'appel Google ou Youtube...
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
6 juin 2009 à 14:36
Benvii +1: je suis tout à fait d'accord avec toi.
Je répondais en fait à son problème et pas à ton intervention ;-)

0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
6 juin 2009 à 15:32
Ok
0
yann5 Messages postés 398 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 1 mai 2015 61
6 juin 2009 à 15:40
je sais que c nul pour la sécurité mais c pour du test
pis je veu inclure la page youtube pour toujours rester sur le site
car la page youtube : http://www.youtube.com/wakstep je me suis arrangé
0
yann5 Messages postés 398 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 1 mai 2015 61
6 juin 2009 à 15:52
<?php
if(isset($_GET['page']))
{
if($_GET['page']==youtube)
{
echo "Veuillez cliquez sur ce lien "
?>
<a href="http://www.youtube.com/wakstep">...</a>
<?php
}
elseif(isset($_GET['page']))
{
if($_GET['page'] != youtube)
{
include($_GET['page']);
}
}
else
{
include(news.php);
}
?>

voila le nouveau code mais erreur sur la ligne 160 qui est
</html>
ça signifie ?
0
benvii Messages postés 308 Date d'inscription dimanche 8 juin 2008 Statut Membre Dernière intervention 28 octobre 2010 137
6 juin 2009 à 16:00
C'est parce que tu n'as pas fermé la première condition, donc tu rajoutes un } :
<?php
if(isset($_GET['page']))
{
if($_GET['page']==youtube)
{
echo "Veuillez cliquez sur ce lien "
?>
<a href="http://www.youtube.com/wakstep">...</a>
<?php
}
elseif(isset($_GET['page']))
{
if($_GET['page'] != youtube)
{
include($_GET['page']);
}
}
else
{
include(news.php);
}
}
?> 
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
6 juin 2009 à 16:01
Hum je sais pas car on n'a pas ta ligne avec </html>... mais j'ai une question:
est-ce que ce que tu veux faire c'est ça:


<?php
if (( isset($_GET['page'] )) && ( $_GET['page'] == "youtube" ))
{ echo'Veuillez cliquez sur ce lien <a href="http://www.youtube.com/wakstep">...</a>' ; }

else if (( isset($_GET['page'] )) && ( $_GET['page'] != "youtube" ))
{ include($_GET['page']); }

else { include(news.php); }
?>

Je trouve ça un peu plus clair bien qu'on puisse faire certainement mieux en sachant vraiment qu'elle est ton but.
0
yann5 Messages postés 398 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 1 mai 2015 61
7 juin 2009 à 22:32
merci imacity ça marche mais j'ai du corriger pleins d'erreurs dans ton code :

<?php
if (isset($_GET['page']) AND ($_GET['page'] == "youtube"))
{
echo "Veuillez cliquez sur ce lien <a href=\"http://www.youtube.com/wakstep\">...</a>";
}

elseif (isset($_GET['page']) AND ($_GET['page'] != "youtube"))
{
include($_GET['www/page.php']);
}

else
{
include("www/admin/news.php");
}
?>
0
imencity Messages postés 214 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 29 août 2014 43
7 juin 2009 à 22:47
Pas d'accord; Je t'accorde la parenthèse à la 5ème ligne, mais j'ai écris ça à la vavite aussi. Pour le reste c'est choux vert et vert choux:
echo"blabla\"ok\"?";
peut s'écrire plus simplement:
echo'blabla"ok"?';
echo fonctionne avec des simples quote ou des guillemets... à toi de savoir jongler en les utilisant.

Quant à "&&" c'est la même chose que "AND".

La chose positive c'est que ça t'a mis sur la voix de quelque chose de moins affreux que ce que tu nous as mis dans ton premier message ;-)

0
Humpf ....

<?php
$param = !empty($_GET['page'])?(string)$_GET['page']:'news.php';
switch( $param )
{
case 'youtube':
header("Location: http://www.youtube.com/wakstep");
break;
default:
if( file_exists( './' . basename($param ) )
{
include( $param );
}else{
include('news.php');
}
break;
}
?>
Pas parfait, mais mieux qu'un include($_GET['page']), qui est vraiment à bannir
0