Précédent   Forum du club des développeurs et IT Pro > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 17h10   #1
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Par défaut Variables non définies

Bonjour,

Je ne comprends pas pourquoi ce code n'est pas bon sur 3 points (language, article et volume)... et ca me bloque ma page et donc mon site sur cette rubrique...

1.
Citation:
PHP Notice: Undefined variable: language :
Mon code:
Code :
if (!$language) $language = "fr";
2.
Citation:
PHP Notice: Undefined variable: volume
Mon code:
Code :
$q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".urldecode($volume)."'";
3.
Citation:
PHP Notice: Undefined variable: article
Mon code:
Voila... Avant que mon hébergeur fasse une mise a jour de ses serveurs tout ca marchait et a present ce n'est plus le cas et je ne comprends pas pourquoi ! :-(

Merci de votre aide

Biz
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 17h29   #2
ndalaba
Nouveau Membre du Club
 
Homme N'Dalaba Diallo
Développeur Web
Inscription : janvier 2010
Messages : 31
Détails du profil
Informations personnelles :
Nom : Homme N'Dalaba Diallo
Localisation : Guinée

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2010
Messages : 31
Points : 34
Points : 34
Envoyer un message via AIM à ndalaba Envoyer un message via MSN à ndalaba Envoyer un message via Yahoo à ndalaba Envoyer un message via Skype™ à ndalaba
bonjour

Ca te dit que tes variables n'existent pas.
Vérifie par un isset(variable); qui renvoie vrai si la variable existe.
ndalaba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 17h35   #3
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par ndalaba Voir le message
bonjour

Ca te dit que tes variables n'existent pas.
Vérifie par un isset(variable); qui renvoie vrai si la variable existe.
euh... c'est-a-dire ?

j'ai juste a placer isset devant ma ligne ?

ex: isset if (!$language) $language = "fr"; c'est ca ??
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 17h48   #4
armel18
Membre actif
 
Homme armel
Développeur informatique
Inscription : août 2012
Messages : 96
Détails du profil
Informations personnelles :
Nom : Homme armel
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2012
Messages : 96
Points : 174
Points : 174
bonjour,
il me semble que register_globals a été désactivé c-a-d register_globals=off.
En PHP 4.2 et plus la variable $volume envoyée depuis le formulaire n'est plus accessible directement avec $volume. Pour lire le champ volume il faut faire: $_POST['volume'] ou $_GET['volume'] suivant la méthode employée par le formulaire.

Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off, dans le fichier de config php.ini.

sur ton serveur que renvoie:

Code :
1
2
 
echo "register_globals vaut " . ini_get(’register_globals’);
armel18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 17h58   #5
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 103
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 18 103
Points : 64 628
Points : 64 628
Citation:
Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off
Cela pour des raisons de sécurité !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 18h03   #6
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par armel18 Voir le message
bonjour,
il me semble que register_globals a été désactivé c-a-d register_globals=off.
En PHP 4.2 et plus la variable $volume envoyée depuis le formulaire n'est plus accessible directement avec $volume. Pour lire le champ volume il faut faire: $_POST['volume'] ou $_GET['volume'] suivant la méthode employée par le formulaire.

Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off, dans le fichier de config php.ini.

sur ton serveur que renvoie:

Code :
echo "register_globals vaut " . ini_get(’register_globals’);
Bonjour Armel et merci de ton aide...

J'ai bien tente de voir si cela pouvait marcher avec ce que tu m'as prescris mais rien n'y fait... :-(

Je vais coller un peu plus de code peut-etre que la fautese situe ailleurs meme si ca n'en a pas l'air...

Code :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
// Connection au SGBD (mySQL)
$link = @mysql_connect($host,$user,$pass) or die(mysql_error());
 
// Connection à la base de données $base
$db = @mysql_select_db($base,$link) or die(mysql_error());
 
// Définition de la langue par défaut si la variable $lang n'est pas définie en URL
if (!$language) $language = "fr";
 
// Définition de la requête SQL : sélection du volume recherché dans la langue spécifiée
// Note importante : aucun test de validité n'est fait sur $volume : à rajouter !!!
$q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".urldecode($volume)."'";
 
// Récupération du résultat de la requête dans $r_volume
$r_volume = mysql_query($q_volume,$link) or die("Aucun résultat !");
 
// Récupération du nombre de résultat renvoyés dans la variable $c_volume
$c_volume = mysql_num_rows ($r_volume);
 
// Boucle parcourant les différentes lignes du résultat de la requête SQL
// La variable $article contient l'ensemble des lignes du résultat sous forme d'un tableau
// à deux dimensions. Chaque ligne $article[$i] contient un enregistrement d'article complet
// sous la forme d'un tableau associatif (paires de valeurs "nom de la colonne" => "valeur"
// stripslashes() est une fonction supprimant les caractères d'échappemment \ pour affichage.
$i = 0;
while ($i < $c_volume) {
  $article[$i]["id"] = htmlentities(mysql_result($r_volume, $i, "id"));
  $article[$i]["titre"] = htmlentities(mysql_result($r_volume, $i, "titre"));
  $article[$i]["auteur"] = htmlentities(mysql_result($r_volume, $i, "auteur"));
  $article[$i]["pays"] = htmlentities(mysql_result($r_volume, $i, "pays"));
  $article[$i]["abstract"] = htmlentities(mysql_result($r_volume, $i, "abstract"));
  $article[$i]["motscles"] = htmlentities(mysql_result($r_volume, $i, "motscles"));
  $article[$i]["volume"] = htmlentities(mysql_result($r_volume, $i, "volume"));
  $article[$i]["numpage"] = htmlentities(mysql_result($r_volume, $i, "numpage"));
  $article[$i]["etoile"] = htmlentities(mysql_result($r_volume, $i, "etoile"));
  $i++;
}
 
?>
 
<?php
	$titre = 'AFFICHAGE RESUMES';	
	$keywords = 'AFFICHAGE RESUMES';	
	include($_SERVER["DOCUMENT_ROOT"].'/header.php');
	include($_SERVER["DOCUMENT_ROOT"].'/suivianalytics.php'); 
?>
<link rel="shortcut icon" type="image/gif" href="http://www.cimm-icmm.org/images/logocimm.gif" />
<br />
<div align="center">
  <p><a name="haut"></a>  
  <table width="600" border="0" cellspacing="0" cellpadding="3">
    <tr>
      <td bgcolor="#000099" class="titrefr"><div align="center" class="titrefr">sommaire</div></td>
    </tr>
    <tr>
      <td class="textfr"><div align="justify">
          <?php
$i = 0;
while ($i < $c_volume) 
{ ?>
          <a href="#<?php echo "article".$i; ?>"><?php echo utf8_encode($article[$i]["titre"]); ?></a><br>
          <?php
  $i++;
}
 
?>
       </div></td>
    </tr>
    <tr>
      <td bgcolor="#000099">&nbsp;</td>
    </tr>
  </table>
  <hr size="1" noshade color="#000099">
  <p class="auteurfr"><font size="1" face="Arial">
    <?php
 
// Boucle parcourant l'ensemble des résultats de la requête pour les afficher les uns
// après les autres dans un tableau HTML
$i = 0;
while($article[$i]) {
Y a t-il des éléments qui permettent de cibler plus precisément le problème pour enfin le résoudre ?

Merci de votre aide

Biz
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 18h22   #7
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par armel18 Voir le message
Depuis PHP 4.2 la valeur par défaut du paramètre register_globals est à off, dans le fichier de config php.ini.

sur ton serveur que renvoie:

Code :
1
2
 
echo "register_globals vaut " . ini_get(’register_globals’);
Petite question (surement idiote) : mais... le fichier "config php.ini" c'est pareil que le fichier "config.inc.php" ??

Car je ne trouve pas le fichier "config php.ini" dans mon arborescence... :-(
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 18h51   #8
armel18
Membre actif
 
Homme armel
Développeur informatique
Inscription : août 2012
Messages : 96
Détails du profil
Informations personnelles :
Nom : Homme armel
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2012
Messages : 96
Points : 174
Points : 174
en fait le fichier de configuration php.ini sur un serveur unix se trouve dans/etc/php5/apache2/.

Essaies de nous confirmer si la directive register_globals est à Off:
Code :
1
2
 
echo phpinfo(); //cf.la ligne register_globals
armel18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h01   #9
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 304
Points : 21 304
Ta ligne 9 devient :
Code :
$language = isset($_GET['language']) ?  $_GET['language'] : "fr";
Ta ligne 13 :
Code :
$q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".mysql_real_escapte_string(urldecode($_GET['volume']))."'";
Comme le rappelle Bovino, il ne faut pas chercher a remettre l'ancienne configuration, elle est néfaste.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/01/2013, 10h06   #10
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par armel18 Voir le message
en fait le fichier de configuration php.ini sur un serveur unix se trouve dans/etc/php5/apache2/.

Essaies de nous confirmer si la directive register_globals est à Off:
Code :
1
2
 
echo phpinfo(); //cf.la ligne register_globals
Ok merci Armel... je vais rechercher ce fichier et je te dirais ce qu'il en est...
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h07   #11
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par sabotage Voir le message
Ta ligne 9 devient :
Code :
$language = isset($_GET['language']) ?  $_GET['language'] : "fr";
Ta ligne 13 :
Code :
$q_volume = "SELECT * FROM ".$language."_nep WHERE volume = '".mysql_real_escapte_string(urldecode($_GET['volume']))."'";
Comme le rappelle Bovino, il ne faut pas chercher a remettre l'ancienne configuration, elle est néfaste.
Merci beaucoup.... je vais tester cela tout de suite et je reviens vers vous...
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h12   #12
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Echec... voici le message que le terminal me transmet... :-(

Citation:
PHP Fatal error: Call to undefined function mysql_real_escapte_string()
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h21   #13
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par armel18 Voir le message
en fait le fichier de configuration php.ini sur un serveur unix se trouve dans/etc/php5/apache2/.

Essaies de nous confirmer si la directive register_globals est à Off:
Code :
1
2
 
echo phpinfo(); //cf.la ligne register_globals
Je deviens fou !!

Je n'arrive pas a mettre la main sur ce fichu fichier ! :-(
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h21   #14
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 103
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 18 103
Points : 64 628
Points : 64 628
Vérifie la syntaxe au lieu de copier coller aveuglément...

T'aider est une chose, mais c'est à toi de comprendre ce que tu fais, de t'informer sur les méthodes conseillées et de vérifier que le code donné ne contient pas de faute de frappe.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h22   #15
armel18
Membre actif
 
Homme armel
Développeur informatique
Inscription : août 2012
Messages : 96
Détails du profil
Informations personnelles :
Nom : Homme armel
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2012
Messages : 96
Points : 174
Points : 174
Citation:
PHP Fatal error: Call to undefined function mysql_real_escapte_string()
il y a une coquille qui s'est glissée c'est mysql_real_escape_string() et non
Citation:
mysql_real_escapte_string()
. Cette fonction protège les variables en les échappant mais n'est pas la cause de ton problème.
armel18 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/01/2013, 10h30   #16
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par Bovino Voir le message
Vérifie la syntaxe au lieu de copier coller aveuglément...

T'aider est une chose, mais c'est à toi de comprendre ce que tu fais, de t'informer sur les méthodes conseillées et de vérifier que le code donné ne contient pas de faute de frappe.
Oui et d'ailleurs je vous en remercie... mais j'essaie d'apprendre et d'assimiler au plus vite (car les employeurs ne sont pas tres patients malheureusement) je suis sur le net et dans les livres pour comprendre et resoudre mon probleme qui risque de me couter cher si je ne trouve pas la solution
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h41   #17
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par armel18 Voir le message
il y a une coquille qui s'est glissée c'est mysql_real_escape_string() et non . Cette fonction protège les variables en les échappant mais n'est pas la cause de ton problème.
Merci !! ca n'a pas resolu completement le probleme mais ca l'a fait avance...

J'ai enfin des donnees de ma base de donnees qui s'affiche ! mais pas tout (pour l'instant)

Code :
<?php echo utf8_encode($article[$i]["abstract"]); echo utf8_encode(nl2br($abstract)); ?>
pour ce code il m'affiche: PHP Notice: Undefined variable: abstract

Je cherche et tente de le résoudre...
AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 10h56   #18
armel18
Membre actif
 
Homme armel
Développeur informatique
Inscription : août 2012
Messages : 96
Détails du profil
Informations personnelles :
Nom : Homme armel
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2012
Messages : 96
Points : 174
Points : 174
ton problème est celui de la récupération des variables globales($_POST,$_GET,$_SESSION...).
essaies de mettre extract dans toutes les pages où sont récupérées les variables globales:

Code :
1
2
3
4
 
extract($_REQUEST);
 
extract($_SESSION);
armel18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 11h13   #19
AgenceNEP
Invité de passage
 
Homme
Communication
Inscription : mars 2012
Messages : 92
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Communication
Secteur : Communication - Médias

Informations forums :
Inscription : mars 2012
Messages : 92
Points : 4
Points : 4
Citation:
Envoyé par armel18 Voir le message
ton problème est celui de la récupération des variables globales($_POST,$_GET,$_SESSION...).
essaies de mettre extract dans toutes les pages où sont récupérées les variables globales:

Code :
1
2
3
4
 
extract($_REQUEST);
 
extract($_SESSION);
Alors malheureusement ca n'a pas eu l'effet escompté... et il me dit toujours que c'est cette ligne de code qui n'est pas bonne

AgenceNEP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 11h19   #20
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 103
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 18 103
Points : 64 628
Points : 64 628
Ta variable $article est déclarée quelque part au moins ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h41.


 
 
 
 
Partenaires

Hébergement Web