8791 sujets

Développement web côté serveur, CMS

Bonjour,

voilà, je souhaiterais mettre en ligne un site en .php et lorsque je fais le transfert des fichiers vers le serveur, ma page "index.php" ne s'affiche pas correctement. À sa place un message d'erreur apparaît : upload/28971-Image8.png

Il semble que ces erreurs soient aux lignes 7, 12 et 18 du code de la page "index.php" (voir la copie d'écran avec le début du code, des lignes 1 à 23) :
upload/28971-Image7.png

Mon problème est que je ne parviens pas à comprendre, ni même à voir les erreurs qui sont aux lignes 7, 12 et 18 du code ! Pourtant, j'aurais besoin de mettre en ligne le site et sa page d'accueil, mais pour l'instant je suis coincée. Si quelqu'un pouvait m'aider à débloquer mon problème, je lui en serais reconnaissante, merci d'avance.
Salut,

Je te signale, au passage, que tu disposes des balises BBCode [ code=php ] et [ /code ] (sans les espaces) pour poster du code PHP. Smiley cligne

Connaîtrais-tu, par hasard, la fonction isset () ? Smiley rolleyes

D'ailleurs, ton code peut être simplifié comme suit :
error_reporting (E_ALL);
ini_set ('display_errors', 0); // En principe 1 ou 0, et non true ou false
// et il est préférable d'éviter les @ (si ton hébergeur ne reconnaît pas ini_set (), mets la ligne en commentaire)

session_start ();

if (isset ($_GET['page']))
{
  $_SESSION['balises_pages'] = $_GET['page'];
  $page = $_GET['page'];
}
else $page = 1;

$spage = (isset ($_GET['spage']))? $_GET['spage']: 1;

En outre, je vérifierais la valeur récupérée par $_GET['page'] et $_GET['spage'] (imagine que j'envoie comme paramètre page ou spage une URL pointant vers une page ou un script nuisible Smiley cligne ).
Modifié par Victor BRITO (27 Jul 2010 - 09:05)
Bonjour Victor et merci beaucoup pour ton aide Smiley smile .

J'ai remplacé l'ancien code par celui que tu m'as envoyé et cela va déjà mieux : Il me reste 3 lignes d'anomalies (au lieu de 6). J'ai ensuite ajouté une @ devant "ini_set ('display_errors', 0);", du coup, il ne me reste plus qu'une seule ligne d'erreur irréductible :

Impossible de sélectionner la base de données : Access denied for user '2655dfad3c4a93a7'@'10.103.0.%' to database 'namaste'

Cette ligne indique que l'utilisateur '2655dfad3c4a93a7'@'10.103.0.%' n'aie plus accès à la base 'namaste', et effectivement le site a du être changé d'hébergeur. Mais, comment faire pour accéder à nouveau à cette base de donnée 'namaste' ? Y a t-il quelque chose à changer dans le code ? Smiley rolleyes


Par ailleurs, tu m'indiques de manière avisée que je devrais vérifier "la valeur récupérée par $_GET['page'] et $_GET['spage']", cependant je n'ai pas bien compris, la valeur est-elle un chiffre qu'il faut ajouter dans la ligne de code suivante :
$spage = (isset ($_GET['spage']))? $_GET['spage']: 1;

Comment procède-t-on pour vérifier la valeur récupérée ?

J'espère que tu pourras m'aider une nouvelle fois et je te remercie encore pour ton aide et tes conseils précieux.
alex100dra a écrit :
il ne me reste plus qu'une seule ligne d'erreur irréductible :

Impossible de sélectionner la base de données : Access denied for user '2655dfad3c4a93a7'@'10.103.0.%' to database 'namaste'

Il faut que tu vérifies les paramètres de connexion à la base de données (adresse du serveur, identifiant et mot de passe). Mais, auparavant, vérifie que la base de données en question existe toujours.
alex100dra a écrit :
Par ailleurs, tu m'indiques de manière avisée que je devrais vérifier "la valeur récupérée par $_GET['page'] et $_GET['spage']", cependant je n'ai pas bien compris, la valeur est-elle un chiffre qu'il faut ajouter dans la ligne de code suivante :
$spage = (isset ($_GET['spage']))? $_GET['spage']: 1;

Comment procède-t-on pour vérifier la valeur récupérée ?

Il faut savoir que lorsque tu tapes une URL de type exemple.com/?page=contact, $_GET['page'] aura pour valeur contact. Jusqu'ici, ça va. Mais, admettons que je suis un pirate de l'informatique à la quête incessante de failles de sécurité. À partir de la forme de l'URL suivante, je peux tenter de taper une URL comme exemple.com/?page=http://site-a-spams.com/script-nuisible.php ; dans ce cas, $_GET['page'] aura pour valeur -http://site-a-spams.com/script-nuisible.php (le tiret avant le http est ajouté pour éviter la génération automatique d'un lien). Est-ce que cette dernière valeur fait partie des valeurs auxquelles tu t'attends ? Je parie que non.

Pour éviter ce genre de mésaventure, ainsi que de mauvaises surprises en cas d'utilisation de cette faille, il est judicieux de définir quelles sont les valeurs attendues pour ce paramètre d'URL et vérifier si la valeur envoyée correspond à ce à quoi l'on s'attend. Ainsi, je reprends une partie du code PHP que j'ai indiqué pour l'améliorer comme suit :
// On définit un tableau des valeurs attendues pour $_GET['page']
// Ce tableau sera constitué des valeurs autorisées
$valeurs_page = array (
  'contact',
  'mentions-legales',
  'presentation'
);

// On vérifie si, d'une part, $_GET['page'] est définie et si, d'autre part, sa valeur est une des valeurs autorisées
if (isset ($_GET['page']) && in_array ($_GET['page'], $valeurs_page)) 
{
  // Si c'est le cas, on exécute les deux instructions suivantes 
  $_SESSION['balises_pages'] = $_GET['page']; 
  $page = $_GET['page']; 
}
// Sinon, la variable $page est définie à 1
else $page = 1;
Bonjour Victor,

je te remercie pour tes renseignements et conseils précieux.

Après renseignements pris, le problème se complexifie...

En effet, j'ai bien vérifié les informations de connexion au serveur (adresse du serveur, identifiant et mot de passe), de même pour la base de donnée, j'ai son nom exact. Toutefois, comme le site a changé d'hébergeur, il faudrait que je puisse modifier le code de la page "index.php" (ou peut-être d'autres pages encore) pour indiquer le nouvel accès à la base de données, ainsi que son nom de manière à ce que le site s'affiche correctement.

Le problème est que je ne sais pas du tout où ces informations doivent être modifiées dans le code de la page "index.php". Pourrais-tu m'aider à les repérer dans le code ?

Voici l'intégralité du code de la page "index.php" :

<?php
error_reporting(E_ALL);
@ini_set('display_errors',0);

session_start();

if (isset ($_GET['page'])) 
{
	$_SESSION['balises_pages'] = $_GET['page'];
	$page = $_GET['page'];
}


else $page = 1;


$spage = (isset ($_GET['spage']))? $_GET['spage']: 1;






/*if(!$_SESSION['balises_pages']){
	$_SESSION['balises_pages']="1";
}*/

require_once("./inc/dbConnect.php");
require_once("balises.php");


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title><?php echo $title; ?></title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<meta name="description" content="<?php echo $description; ?>" />

<meta name="keywords" content="<?php echo $keywords; ?>" />

<script type="text/javascript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}
//-->
</script>

<script type="text/javascript">
<!--
function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors='- Adresse email invalide! .\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors = '- Merci de remplir tous les champs obligatoires.\n'; }
    } if (errors) alert('Une erreur est survenue : \n'+errors);
    document.MM_returnValue = (errors == '');
}

if(!errors){
	document.forms['form1'].submit();
}

 }
//-->
</script>

<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
-->
</style>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>

<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<script type="text/javascript">
function MM_CheckFlashVersion(reqVerStr,msg){
  with(navigator){
    var isIE  = (appVersion.indexOf("MSIE") != -1 && userAgent.indexOf("Opera") == -1);
    var isWin = (appVersion.toLowerCase().indexOf("win") != -1);
    if (!isIE || !isWin){  
      var flashVer = -1;
      if (plugins && plugins.length > 0){
        var desc = plugins["Shockwave Flash"] ? plugins["Shockwave Flash"].description : "";
        desc = plugins["Shockwave Flash 2.0"] ? plugins["Shockwave Flash 2.0"].description : desc;
        if (desc == "") flashVer = -1;
        else{
          var descArr = desc.split(" ");
          var tempArrMajor = descArr[2].split(".");
          var verMajor = tempArrMajor[0];
          var tempArrMinor = (descArr[3] != "") ? descArr[3].split("r") : descArr[4].split("r");
          var verMinor = (tempArrMinor[1] > 0) ? tempArrMinor[1] : 0;
          flashVer =  parseFloat(verMajor + "." + verMinor);
        }
      }
      // WebTV has Flash Player 4 or lower -- too low for video
      else if (userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 4.0;

      var verArr = reqVerStr.split(",");
      var reqVer = parseFloat(verArr[0] + "." + verArr[2]);
  
      if (flashVer < reqVer){
        if (confirm(msg))
          window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";
      }
    }
  } 
}
</script>


<body onLoad="MM_preloadImages('img/btn_off_1.gif','img/btn_on_1.gif','img/btn_on_2.gif','img/btn_on_3.gif','img/btn_on_4.gif','img/btn_on_5.gif','img/btn_on_6.gif','img/btn_on_7.gif','img/btn_on_8.gif','img/btn_on_9.gif','img/btn_on_10.gif','img/btn_on_11.gif')">

<div align='center'>
	<?php
	
	require_once("bandeau.php");
	
	?>

  <table width="900" border="0" cellspacing="0" cellpadding="0">

    <tr>
      <td colspan="2" align="left" valign="top" bgcolor="#4f4e4e" style=''>
      
      <?php
	  
	  require_once('sessions.php');
	  
	  ?>
      
      </td>
    </tr>
    <tr>
      <td colspan="2" bgcolor="#FFFFFF" style='padding:30px;padding-top:0px;'>
      
      <?php
	  
	  if(!$_GET['page']){
	  	$page=1;
	  }else{
	  	$page=$_GET['page'];
	  }
	  
	  require_once("page_".$page.".php");
	  
	  ?>
      
      </td>
    </tr>
    <tr>
      <td colspan="2" align="left" bgcolor="#b9b9b9"> </td>
    </tr>
    <tr>
      <td width="15%" align="left" class="footer"><a href="http://www.asdepique.com" target="_blank">création asdepique © 2008</a></td>
      <td width="85%" align="right" class="footer"><a href="formation-management_les-10-competences-cle-management.html">Formation en management</a> | <a href="formation-management_formation-management-paris-lyon.html">Paris-Lyon</a> | <a href="formation-management_modules-formation-management.html">Modules de fomation</a> | <a href="formation-management_accueil.html">Centre formation en management</a> | <a href="formation-management_plan-du-site.html">Plan du site</a> | <a href="formation-management_mentions-legales.html">Mentions légales</a></td>
    </tr>
  </table>
</div>

</body>
</html>




Je sais que ma demande est lourde et j'en suis désolée, mais je ne sais pas du tout comment faire et j'aurais vraiment besoin de mettre ce site en ligne.

Je te remercie encore de ton aide si tu peux.


[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
Je pense que le code que tu a copié est la source obtenue de index.php (clic droit -> voir source), non ?

Ce n'est pas ce code qu'il te faut, mais le code php, que tu pourra trouver sur ton serveur, en mode FTP. C'est dans ce code (executé avant d'etre retourné au navigateur) que tu trouvera les codes que tu a besoin de modifier.

Utilise tu un cms ou un framework particulier pour ce site (Wordpress, Joomla, etc) ou bien est-ce un site fait maison ?
Bonjour,

Merci de ta réponse. Je travaille avec dreamweaver, j'ai donc récupéré le code directement dans le fichier de la page intitulée" "index.php" (sans faire de clic droit).

En fait, il s'agit d'un site en php qui vient de changer d'hébergeur. J'ai récupéré tous les fichiers et dossiers du site qui étaient sur l'ancien serveur pour les transférer vers le nouveau serveur FTP à l'aide de Cyberduck. C'est lorsque je vais consulter le site en ligne qu'un message d'erreur apparaît au sujet de l'accès à la base de données apparaît ("Impossible de sélectionner la base de données : Access denied for user '2655dfad3c4a93a7'@'10.103.0.%' to database 'namaste'"), et que les ennuis commencent...

Tu dis :
Tymlis a écrit :

Ce n'est pas ce code qu'il te faut, mais le code php, que tu pourra trouver sur ton serveur, en mode FTP. C'est dans ce code (executé avant d'etre retourné au navigateur) que tu trouvera les codes que tu a besoin de modifier.

Mais justement, le code de la page "index.php" que j'ai récupéré ne provient pas d'un navigateur, mais bien du fichier d'origine "index.php" qui se trouve directement sur le serveur FTP. Alors que faire ?

Sur le serveur FTP, est-ce-que le code doit être modifié dans d'autres fichiers du site ou bien seulement sur le fichier "index.php" ?

Je te remercie par avance de ta réponse.
Le code de index.php que tu a collé dans ton précédent message ne contient pas de php (balises <?php et ?>), ce qui me faisait dire que ce n'était pas le bon fichier.

Maintenant, ne connaissant pas ton site je peux difficilement t'indiquer avec précision où chercher.

Tu peux faire une receherche sur le mot 'namaste' dans tes fichiers pour trouver ceux qui y font référence, tu devrais normalement trouver la définition de la base de donnée et du mot de passe pas loin.
Bonjour Tymlis,

Tymlis a écrit :
Le code de index.php que tu a collé dans ton précédent message ne contient pas de php (balises <?php et ?>), ce qui me faisait dire que ce n'était pas le bon fichier.


J'ai trouvé le bon fichier (me semble-t-il) intitulé "dbConnect.php" Smiley smile . À priori, c'est dans ce fichier qu'il faut modifier les paramètres d'accès à la base de données du site en php Smiley cligne .

Voici le fichier "dbConnect.php" d'origine :

<?php

$link = mysql_connect('localhost','xxx','xxx');
//$link = mysql_connect('localhost','root','');

if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}

$db_selected = mysql_select_db('xxxxxx', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
?>

J'ai essayé de modifier le code (j'ai renseigné l'adresse du serveur FTP, le nom utilisateur, le mot de passe, ainsi que le nom de la base de données), cela donne :

<?php
$host = 'xxx; 
$user = 'xxx'; 
$pass = 'xxx'; 
$database = 'xxx'; 
$link = mysql_connect('localhost_xxx','user_xxx','pass_xxx');
//$link = mysql_connect('localhost','root','');

if (!$link) {
   die('Impossible de se connecter : ' . mysql_error());
}

$db_selected = mysql_select_db('xxx', $link);
if (!$db_selected) {
   die ('Impossible de sélectionner la base de données : ' . mysql_error());
}
?>

Cependant, la page d'accueil du site ne s'affiche toujours pas correctement Smiley decu . Il doit certainement y avoir des erreurs dans mon code de la page "dbConnect.php", mais je ne sais pas quoi exactement Smiley confus . Il y a peut-être d'autre fichiers à modifier également pour permettre à la page d'accueil de s'afficher, mais là non + je ne sait pas où chercher Smiley confus .

Pourrais-tu me dire si la syntaxe du code que j'ai modifié est bonne, ou sinon, ce qu'il faudrait que je modifie ? J'ai vraiment besoin de mettre ce site en ligne et je coince toujours Smiley bawling
Modifié par Heyoan (06 Aug 2010 - 11:59)
Salut,

j'ai édité ton message car ce n'est vraiment pas une bonne idée de donner tous ses identifiants sur un forum.

Sinon tu sembles n'avoir qu'une très vague idée de ce que tu fais. Smiley rolleyes

Tu modifies les valeurs des variables $host, $user, $pass et $database mais tu ne t'en sers pas plus loin dans le mysql_connect et tu remets des valeurs en dur... qui ne sont pas les mêmes !

Personnellement je me sers de cela :
$NomServeur = $_SERVER['SERVER_NAME'] ; 

$local=((substr($NomServeur,0,7)=="192.168") || ($NomServeur=="localhost") || ($NomServeur=="127.0.0.1"));

$host = ($local) ? "localhost" : "xxx"; 
$user = ($local) ? "root" : "xxx"; 
$passwd = ($local) ? "" : "xxx"; 
$database = ($local) ? "test" : "xxx"; 

$link = mysql_connect($host, $user, $passwd); 
if (!$link) { 
   die('Impossible de se connecter : ' . mysql_error()); 
} 
 
$db_selected = mysql_select_db($database, $link); 
if (!$db_selected) { 
   die ('Impossible de sélectionner la base de données : ' . mysql_error()); 
}
Cela me permet d'avoir le même code en local et en ligne (les xxx étant remplacés par les bons identifiants).

Quoi qu'il en soit je t'invite fortement à apprendre les bases de PHP et MYSQL en lisant des tutoriaux (il en existe une foultitude sur le Web). Smiley cligne