Include qui include que dalle

DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 - 29 mai 2006 à 09:19
MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 - 30 mai 2006 à 16:36
Yaoh !

J'essaye de faire sur une page une liste dont le contenu vient d'une bdd mysql. Moi, feignasse de nature, je me suis dis que j'allais pas répéter sur chaque page la connexion, alors hop, g pensé à un include. G mis la connexion dans un fichier .php à part :

<?
    $dbhost = "localhost";
    $user = "root";
    $password = "";
    $usebdd = "signanet";
    $connexion = mysql_connect($dbhost,$user,$password);
    if (!$connexion)
    {
        echo "Impossible d'effectuer la connexion";
    }
    $db = mysql_select_db($usebdd, $connexion);
    if (!$db)
    {
        echo "Impossible de sélectionner cette base de données";
    }
?>

Ensuite, je l'appelle (je raccourcis le code, ma liste en elle-même marche, donc je vais pas allourdir ce message) :

<html>
       <head>
              <title>Jeux d'Essai</title>
       </head>
       
              <?
                  $SQL="SELECT * FROM categorie";
                  include "http://localhost/Signanet.fr/Pages/connexion.php" ;
                  $result = mysql_query($SQL,$connexion);
                  $nb = mysql_num_rows($result);
                  echo $nb;
              ?>
       
</html>

Et voilà ce que sa me dis :

Notice: Undefined variable: connexion in c:\program files\easyphp1-8\www\tests\listes.php on line 9


Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in c:\program files\easyphp1-8\www\tests\listes.php on line 9


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\tests\listes.php on line 10

Pour info, g déjà essayer de remplacer le include par un require, nada. Enfin, g remplacer le include par carrément tout le code de connexion.php, et là sa marche.
Pitié ! Ne me dites pas que je devrais oublié le include et remettre tout le code de connexion.php !!!!!!!!!

12 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
29 mai 2006 à 09:26
include "http://localhost/Signanet.fr/Pages/connexion.php" ;

pas http !!!!!!!!!

include ("connexion.php");
ou
include ("Pages/connexion.php");

selon que la page appelée est dans le même repertoire ou non
0
DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 1
29 mai 2006 à 10:19
dsl mais c'est pire qu'avant, maintenant il m'affiche carrément une partie du code php sans l'interpréter, comme si c'était du texte tout simple (et allez pas me dire qu'il fo ke je vérifie l'extension, toutes mes feuilles son en .php)
0
DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 1
29 mai 2006 à 10:20
De plus, je vois pas ce qui cloche avec http, je l'utilise pour les href et sa marche impec
0
steb359842 Messages postés 69 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 24 janvier 2008
29 mai 2006 à 10:42
il faut effectivement utiliser des chemin relatifs soit ../connexion.php par ex...
et pour que ton code soit interprété met les balises d'ouverture et de fermeture du php dans la page inclue.

Bonne chance...

*°*°*°*°*°*°*°*°*°*°*°*
Marmotte Joyeuse
0

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

Posez votre question
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
29 mai 2006 à 10:43
Salut!
Que contient connexion.php?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 1
29 mai 2006 à 11:59
g mis le contenu de connexion.php dans le premier message, c'est le premier code.
Le chemin relatif marche mais il y a un truc que je pige pas trop :
je lance mon site depuis la page d'accueil de EasyPHP. Il execute bien mes requêtes dans des pages où g mis include("./connexion.php");
connexion.php est dans le même repertoire. Mais si pour là page que g mis plus haut, elle aussi dans le meme repertoire, je met le même include et que je la lance en "freestyle" (en clair, juste ouvrir comme ça dans un browser), là sa marche plus alors que si les deux pages ne sont pas o même endroit, sa marche avec le chemin relatif.
Mystère non
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
29 mai 2006 à 13:43
moi je mettrais ça dans connexion.php

<?php
    $dbhost = "localhost";
    $user = "root";
    $password = "";
    $usebdd = "signanet";
?>
et ça dans ta 2eme page
<?php
    include("./connexion.php"); 
    $connexion = mysql_connect($dbhost,$user,$password);
    if (!$connexion)
    { echo "Impossible d'effectuer la connexion"; }
    $db = mysql_select_db($usebdd, $connexion);
    if (!$db)
    {echo "Impossible de sélectionner cette base de données";}
...
?>
0
MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 2
29 mai 2006 à 14:33
sidf -> si tu mets ça, ya un gros prob de sécurité sur ton serveur...

car si un mec arrive a faire executer un code php dasn ton site, rien
ne l'empeche d'utiliser les variables $dbhost, $user et $password...

et tu te retrouve avec une base de donnée trafiquée...

donc au mieux, faire un require("./mapageprivée");

et dans le require, une réplique des fonctions de mysql. je m'explique :


function requeteSQL($requete) {

    $dbhost = "localhost";

    $user = "root";

    $password = "";

    $usebdd = "signanet";

    $connexion = mysql_connect($dbhost,$user,$password);

    if (!$connexion)

    {

        return "Impossible d'effectuer la connexion";

    }

    $db = mysql_select_db($usebdd, $connexion);

    if (!$db)

    {

        return "Impossible de sélectionner cette base de données";

    }

    valid_requete($requete); // fonction qui va bannir
certainnes requetes contenant des mots clés potentiellement dangereux
et qui ne sont pas utilisés dans le site. c'est un plus qui peut etre
utile...

    $return = mysql_query($requete,$connexion);


    et surtout fermer la connexion apres chaque requete

    mysql_close($connexion);

}


et dans le code, on fait $result = requeteSQL("SELECT * FROM categorie");


le truc de bien est deja le fait de fermer la connexion à chaque fois, car c'est mieux pour la rapidité du serveur...

sinon à chaque fois que le serveur php execute du code sasn utiliser mysql, le serveur sql est bloqué

la deuxieme chose de bien c'est que les mots de passe et login sont
effacés apres l'appel de la fonction. il suffit de placer cette page
contenant les fonctions importantes dans un repertoire du ftp qui est
protegé(depuis internet ou des autres utilisateur du ftp(ca peut
arriver qu'il y ai un co-webmaster mais qui ne doit surtout pas
connaitre les infos importantes de la base de donnée.)


c'est en gros les premiers pas vers une classe de gestion de mysql...

@+
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
29 mai 2006 à 14:38
MrdJack --> merci pour l'info
(même si je n'ai pas tout compris)
je copie je colle
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
29 mai 2006 à 14:44
Salut!
" le truc de bien est deja le fait de fermer la connexion à chaque fois, car c'est mieux pour la rapidité du serveur..." >> Heu, ca dépend! Suivant combien tu fais de requêtes dans ta page (une page arrive vite à 5 requêtes) c'est pas super malin non plus de connecter et déco à chaque fois...

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
DarkCid Messages postés 195 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 26 octobre 2009 1
30 mai 2006 à 12:34
MrdJack, merci pour ton code très intéressant, mais valid_requete n'est pas reconnu.
De plus, si j'utilise ta syntaxe, je ne peux pas utiliser les fonctions mysql comme mysql_num_rows ou mysql_result.

Alors que faire de ta fonction ?
0
MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 2
30 mai 2006 à 16:36
valid_requete est une fonction  maison, je l'ai codée moi meme
afin de vérifier le contenu des requete sql avant de les envoyer au
serveur sql. c'est un filtrage par expression reguliere que je metterai
peut-etre en source sur phpcs qui sait.

sinon je viens de voir une grosse boullette sur mon post... j'ai fait ca à la va vite et j'ai pas revérifié.

voici donc ce que j'utilise réellement :

 function requete_mysql($requete) {

  $sql_hote = "localhost";

  $sql_user = "root";

  $sql_pass = "02440244";

  $sql_base = "testdb";
  if(valid_requete($requete)) {
  $connexion=mysql_connect($sql_hote,$sql_user,$sql_pass) or write_log("connect to $sql_hote $sql_user@$sql_pass\r\n");

  if(!mysql_error()) {

   $db=mysql_select_db($sql_base) or write_log("select_db : $sql_base\r\n");

   if(!mysql_error()) {

     $result=mysql_query($requete) or write_log("requete : $requete\r\n");

     if(mysql_error()) $result = false;

   }else $result = false;

  }else $result = false;

  mysql_close();
  } else $return = false;
  return $result;

 }

 

 function write_log($message){

  $f = fopen("error_log.txt","a+");

  fwrite($f,$message);

  fclose($f);

  return true;

 }


pour l'utiliser, c'est simple :

$result = requete_mysql("SELECT * FROM table");

 if($result) {

  $truc = mysql_fetch_array($result);

   ..........

 } else {

    //gestion d'erreur.

}

j'ai intégré un fichier log enregistrant les
erreurs dedans. la partie en rouge est superflu, c'est une fonction
perso qui vérifie le contenu de la requete avec des expressions
regulieres recherchant des mots clés qui ne devrait pas etre utilisés
dasn les requetes du site. c'est pas le plus important. donc je n'ai
pas mis le code de cette fonction.


voilà...


@+
0
Rejoignez-nous