Big problème php

yann5 Messages postés 454 Statut Membre -  
 A.Nonymous -
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
Configuration: Windows XP
Firefox 3.0.10

14 réponses

  1. benvii Messages postés 311 Statut Membre 137
     
    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
  2. Katsuo49
     
    quand intervient ton problème php, lorsque tu clique sur le lien ou lorsque tu charge la première fois ta page ?
    0
  3. benvii Messages postés 311 Statut Membre 137
     
    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
  4. imencity Messages postés 228 Statut Membre 43
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. benvii Messages postés 311 Statut Membre 137
     
    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
  7. imencity Messages postés 228 Statut Membre 43
     
    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
  8. imencity Messages postés 228 Statut Membre 43
     
    Benvii +1: je suis tout à fait d'accord avec toi.
    Je répondais en fait à son problème et pas à ton intervention ;-)

    0
    1. benvii Messages postés 311 Statut Membre 137
       
      Ok
      0
  9. yann5 Messages postés 454 Statut Membre 63
     
    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
  10. yann5 Messages postés 454 Statut Membre 63
     
    <?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
  11. benvii Messages postés 311 Statut Membre 137
     
    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
  12. imencity Messages postés 228 Statut Membre 43
     
    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
  13. yann5 Messages postés 454 Statut Membre 63
     
    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
  14. imencity Messages postés 228 Statut Membre 43
     
    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
  15. A.Nonymous
     
    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