8791 sujets

Développement web côté serveur, CMS

Bonjours a tous je galère avec un script tout bidon qui me permettrai de uploader un fichier image grâce à un formulaire puis de stocker son adresse.nom dans ma base
mais j'ais toujours une erreur sur ma fonction copy de php je suis aller voir sur le réferenciel php et j'ais tout essayé rien ne marche il me plante toujours la même erreur donc si quelqu’un pouvait m'aider et me dire pourquoi ça plante ce serais vraiment kool kool Smiley smile
Voici mon bout de code :
<?php include('../connexion.php');
 
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');

if(isset($_POST["Valider"]))
{
	$fichier= $_FILES['maPhoto'];
	$fichiernom= $fichier['name'];
    $codeErreur = $_FILES['maPhoto']['error'];
	
	//Vérification du formulaire
	if ($codeErreur != UPLOAD_ERR_OK){
		$alert = '<div class="erreur"><a name="ok"></a>Le fichier a merder.</div>';
	}
	else
	{ 
	if ($codeErreur == UPLOAD_ERR_OK){
		
		echo "<b>Nom du fichier client: </b> ".$fichier['name']."<br/>";
		echo "<b>Nom du fichier serveur: </b> ".$fichier['tmp_name']."<br/>";
		echo "<b>Taille du fichier: </b> ".$fichier['size']."<br/>";
		echo "<b>Type de fichier: </b> ".$fichier['type']."<br/>";
		
		}
  // on enregistre les données
			$result = mysql_query("INSERT INTO CONTENU VALUES ( '','".mysql_real_escape_string($fichiernom)."' ) ");
			
			
		$emplacementFinal= "/PHOTOS/";
		$nomfichier =  $fichier['tmp_name'];
			if(!copy($nomfichier,$emplacementFinal)){
			echo " la copie a merder";
			}
		//Si il y a une erreur....
		if (!$result) {
			die('Requête invalide : ' . mysql_error());
		}
		else{
			//Si tout est ok....
			$message_ok = '<div class="erreur"><a name="ok"></a><b>image enregistrée avec succés</b></div>';
			
			//header("Location:  index.php");
		}
		//On ferme else
	}
	//On ferme if(isset($_POST["Valider"]))
}
// petit test on est jamais trop prudent	
?>
<?php 
if(isset($message_ok))
{
echo $message_ok;
}


//....................je balance mon formulaire.....................
?>
<form enctype="multipart/form-data" action="#ok" method="post">
<?php
 if(isset($alerte))
{
echo $alerte;
}
?>
<p>La petite photo pour la présentation</p>
<p>Choisissez le fichier :<br/>
<input type="hidden" name="max_file_size" value="2000000"/>
<input type="file" size="40" name="maPhoto"/>
<p>
<input name="Valider" value="Valider" type="submit"/>
<input name="Effacer" value="Effacer" type="reset"/>
</p>
</form>



j'ai entendu parler d'une histoire de chmod 777 mais comme je suis en local avec wamp normalement il ne devrais pas y avoir de problème
voici la capture de l’erreur :
http://webcoloris.fr/visuel/error.png
help............
salut..

Même en local les droits sur le dossier ne sont pas en 777

Donc il va falloir que tu le mette Smiley smile

va dans les propriétés du répertoire et passe le en 777 (en clair si ce sont des cases à cocher il faut tout cocher )
Salut la copie d'écran n'indique pas du tout un problème de permission.
Sinon tu aurais "access denied" au lieu de "failed to open stream"
bon bien je commence a m'arracher les cheveux Smiley sweatdrop Smiley biggol je comprend toujours pas ou est l'erreur help svp
/PHOTOS/

et avant

C:\wamp\tmp\phpFFB1.tmp

ça n'est pas la même façon d'adresser les fichiers ça.

visiblement tu es sur windows.

-soit tu essais de designer ton dossier à la maniere linux ( ce qui risque pas de marcher),
-soit tu tentes d'utiliser une url (mais sans précisez le protocole. comme dans http://monsite.com/PHOTOS/ , attention selon les protocoles la doc php dit que ça ne marchera pas toujours)

pourquoi ne pas utiliser un bon vieux chemin windows sur ton serveur? genre c:/wamp/www/PHOTOS/ ?

que tu utilises un copy me parait bizarre. pourquoi ne pas utiliser move_uploaded_file plutôt?
(tu veux conserver l'image dans le repertoire temporaire? de toute façon un tmp se vide tout seul quand le système estime qu'il veut de la place).

ensuite j'ai vu que tu avais une erreur SQL juste derriere. apparemment ta table contenu doit avoir plus que 2 champs et tu essais un insert sans avoir précisez les champs cibles.
Bonjour,
J'arrives un peut tard, mais tu devrais lire et tester un des cours ou topo sur l'upload !
Rappelles toi surtout que
$_FILES['maPhoto']['name']
Permet de connaitre le nom et donc son extention par exemple .jpg
Mais ne permets pas de voir aucune caractéristique de l'objet qui est encore non uploadé,
seul $_FILES['maPhoto']['tmp_name'] le permet !
Pour la taille, le poid ET la nature !
Si je t'envoie un php renommé en .jpg tu ne le verra pas car le nom sera xxxx.jpg
alors que $_FILES['maPhoto']['tmp_name'] te donnera le type/mine !

Donc si tu copy ton upload c'est vers
$ici="PHOTO/".$_FILES['maPhoto']['name'];
surtout pas de "/" devant PHOTO !