8791 sujets

Développement web côté serveur, CMS

Bonjour, premier post dans cette partie du Forum... Smiley confus

Je rencontre un stress, à me tapper la tête au mur.
En effet, je développe un site pour le boulot, que je crée chez moi qui je teste ici, au taff.

Je fais un site avec une BD. Simple test, une table edito et 6 champs: id, resume, photo, titre, chapeau, signature

Chez moi, tout fonctionne nikel, il s'agit d'un formulaire d'insertion de données, avec un upload d'image.

Lorsque je prends tout mon dossier ici au boulot, et que je configure exactement les mêmes paramètres, uniquement ma photo s'insère dans ma bd. Ce qui se trouve dans mes autres champs se perd je ne sais ou...

dans le fichier log de mon programme, je peux voir ce commentaire
[28-Aug-2008 08:27:14] PHP Notice: Undefined variable: resume in /Applications/MAMP/htdocs/sabande/saisie.php on line 45
[28-Aug-2008 08:27:14] PHP Notice: Undefined variable: titre in /Applications/MAMP/htdocs/sabande/saisie.php on line 45
[28-Aug-2008 08:27:14] PHP Notice: Undefined variable: chapeau in /Applications/MAMP/htdocs/sabande/saisie.php on line 45
[28-Aug-2008 08:27:14] PHP Notice: Undefined variable: signature in /Applications/MAMP/htdocs/sabande/saisie.php on line 45


Le code de ma page est le suivant, mais je ne vois pas pourquoi ma variable ne serait pas définie ... Auriez vous une idée? Smiley langue


<?php require_once('Connections/ssabande.php'); ?>
<?php
//	---------------------------------------------
//	Pure PHP Upload version 1.1
//	-------------------------------------------
if (phpversion() > "4.0.6") {
	$HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",300000);
define("DESTINATION_FOLDER", "./img");
define("no_error", "valider.php");
define("yes_error", "erreur.php");
$_accepted_extensions_ = "gif,jpg";
if(strlen($_accepted_extensions_) > 0){
	$_accepted_extensions_ = @explode(",",$_accepted_extensions_);
} else {
	$_accepted_extensions_ = array();
}
/*	modify */
if(!empty($HTTP_POST_FILES['photo'])){
	if(is_uploaded_file($HTTP_POST_FILES['photo']['tmp_name']) && $HTTP_POST_FILES['photo']['error'] == 0){
		$_file_ = $HTTP_POST_FILES['photo'];
		$errStr = "";
		$_name_ = $_file_['name'];
		$_type_ = $_file_['type'];
		$_tmp_name_ = $_file_['tmp_name'];
		$_size_ = $_file_['size'];
		if($_size_ > MAX_SIZE && MAX_SIZE > 0){
			$errStr = "File troppo pesante";
		}
		$_ext_ = explode(".", $_name_);
		$_ext_ = strtolower($_ext_[count($_ext_)-1]);
		if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
			$errStr = "Estensione non valida";
		}
		if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
			$errStr = "Cartella di destinazione non valida";
		}
		if(empty($errStr)){
			if(@move_uploaded_file($_tmp_name_,DESTINATION_FOLDER . "/" . $_name_)) 
{header("Location: " . no_error); 
//enregistrement dans la base de l'édito  
mysql_select_db($database_ssabande, $ssabande); 
$insertEdito = "INSERT INTO edito (resume, photo, titre, chapeau, signature )  
VALUES ('$resume', '$_name_','$titre','$chapeau','$signature')"; 
mysql_query($insertEdito, $ssabande) or die(mysql_error()); 
} else { 
header("Location: " . yes_error); 
} 
} else { 
header("Location: " . yes_error); 
} 
} 
}
?><!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <label>
  <textarea name="resume" id="resume" cols="45" rows="5"></textarea>
  </label>
  <p>
    <label>
    <input type="file" name="photo" id="photo" />
    </label>
  </p>
  <p>
    <label>
    <input type="text" name="titre" id="titre" />
    </label>
  </p>
  <p>
    <label>
    <input type="text" name="chapeau" id="chapeau" />
    </label>
  </p>
  <p>
    <label>
    <input type="text" name="signature" id="signature" />
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="button" id="button" value="Envoyer" />
    </label>
  </p>
</form>
</body>
</html>

Modifié par FranZz (29 Aug 2008 - 19:48)
Salut,

ça veut dire que chez toi la directive register_globals est à ON alors qu'au boulot elle est à OFF (ce qui est une bonne chose).

Concrètement tu ne peux pas utiliser une variable (par exemple $resume) sans l'avoir déclarée (ou avoir déclaré sa provenance) ce qui, dans ton cas, pourrait être réglé en faisant quelque chose comme :
if(!empty($_FILES['photo'])){
    $resume = !empty($_POST['resume']) ? $_POST['resume'] : '';
    ...
En passant $HTTP_POST_FILES est obsolète depuis déjà longtemps et on utilise maintenant $_FILES

A+
Hello et ENORME merci ( limite BIG UP Smiley smile ) pour cette rapide réponse !

Tu as bien visé, quand je mets le register_global à ON ça fonctionne.

Sinon, je remplace mes $HTTP_POST_FILES par $_FILES alors?

En résumé, je remets le register_global sur Off, j'insère $resume = !empty($_POST['resume']) ? $_POST['resume'] : ''; et les autres et mon code ressemble à ceci alors:


<?php require_once('Connections/ssabande.php'); ?>
<?php
//	---------------------------------------------
//	Pure PHP Upload version 1.1
//	-------------------------------------------
if (phpversion() > "4.0.6") {
	$HTTP_POST_FILES = &$_FILES;
}
define("MAX_SIZE",300000);
define("DESTINATION_FOLDER", "./img");
define("no_error", "valider.php");
define("yes_error", "erreur.php");
$_accepted_extensions_ = "gif,jpg";
if(strlen($_accepted_extensions_) > 0){
	$_accepted_extensions_ = @explode(",",$_accepted_extensions_);
} else {
	$_accepted_extensions_ = array();
}
/*	modify */
if(!empty($_FILES['photo'])){
 $resume = !empty($_POST['resume']) ? $_POST['resume'] : '';
 $titre = !empty($_POST['titre']) ? $_POST['titre'] : '';
 $chapeau = !empty($_POST['chapeau']) ? $_POST['chapeau'] : '';
 $signature = !empty($_POST['signature']) ? $_POST['signature'] : '';
 	
if(is_uploaded_file($HTTP_FILES['photo']['tmp_name']) && $_FILES['photo']['error'] == 0){
		$_file_ = $_FILES['photo'];
		$errStr = "";
		$_name_ = $_file_['name'];
		$_type_ = $_file_['type'];
		$_tmp_name_ = $_file_['tmp_name'];
		$_size_ = $_file_['size'];
		if($_size_ > MAX_SIZE && MAX_SIZE > 0){
			$errStr = "File troppo pesante";
		}
		$_ext_ = explode(".", $_name_);
		$_ext_ = strtolower($_ext_[count($_ext_)-1]);
		if(!in_array($_ext_, $_accepted_extensions_) && count($_accepted_extensions_) > 0){
			$errStr = "Estensione non valida";
		}
		if(!is_dir(DESTINATION_FOLDER) && is_writeable(DESTINATION_FOLDER)){
			$errStr = "Cartella di destinazione non valida";
		}
		if(empty($errStr)){
			if(@move_uploaded_file($_tmp_name_,DESTINATION_FOLDER . "/" . $_name_)) 
{header("Location: " . no_error); 
//enregistrement dans la base de l'édito  
mysql_select_db($database_ssabande, $ssabande); 
$insertEdito = "INSERT INTO edito (resume, photo, titre, chapeau, signature )  
VALUES ('$resume', '$_name_','$titre','$chapeau','$signature')"; 
mysql_query($insertEdito, $ssabande) or die(mysql_error()); 
} else { 
header("Location: " . yes_error); 
} 
} else { 
header("Location: " . yes_error); 
} 
} 
}
?>
FranZz a écrit :

Sinon, je remplace mes $HTTP_POST_FILES par $_FILES alors
Oui... mais ce n'est pas obligé vu qu'il y a un test en début de script if (phpversion() > "4.0.6")...

Par contre ne laisse pas $HTTP_FILES[...] ! C'est ou l'un ou l'autre. Smiley cligne