[RESOLU] upload image + sql erreur depuis mise a jour PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] upload image + sql erreur depuis mise a jour PHP

Re: upload image + sql erreur depuis mise a jour PHP

par neomega » 30 janv. 2013, 00:24

en fait en mettant le formulaire dans un form_upload.php et la gestion de celui ci dans un autre upload.php

sa marche sans le moindre probleme

Re: upload image + sql erreur depuis mise a jour PHP

par neomega » 28 janv. 2013, 23:37

re dsl mais je ne c pas du tout comment utiliser ces variable qui apparemment vont être enlever très prochainement http://fr2.php.net/mysql_real_escape_string

pour ce qui est de
oui sauf que c'est $_GET['id'] et pas $_GET['idlocation']
c'est normal :
<input name="id" type="hidden" value="<?php echo $_GET["idlocation"] ;?>"> je récupéré une fois poster :

$id = $_POST["id"] ;

donc bien ma valeur "2" d'ont j'ai moi même mis dans l'url

avec var dump

array(1) { ["id"]=> string(1) "2" } array(0) { }

j'ai meme essayer de mettre a la main
<input name="id" type="hidden" value="2">
--------------------------------------
puis de mettre :
if(isset($_POST['send'])){
$id  = '2' ;
et toujours la même erreur


le pire c'est que sa fonctionner il y a moins de 15 jours

encore merci de votre aide et votre patience

Re: upload image + sql erreur depuis mise a jour PHP

par moogli » 28 janv. 2013, 22:15

oui sauf que c'est $_GET['id'] et pas $_GET['idlocation'] ;)

Suis mes conseils sur les tests de variables et les traitements qui vont bien dans ce sens ;)



@+

Re: upload image + sql erreur depuis mise a jour PHP

par neomega » 28 janv. 2013, 21:52

voici ce qui apparait en plus du message d'erreur :
avec var dump :
donc d'après ce que j'en deduit l'id est bien correctement envoyer

array(0) { } array(3) { ["id"]=> string(1) "2" ["MAX_FILE_SIZE"]=> string(7) "1000000" ["send"]=> string(18) "Envoyer le fichier" }

Re: upload image + sql erreur depuis mise a jour PHP

par moogli » 28 janv. 2013, 12:45

salut,
a priori $_GET['idlocation'] est vide.

- il ne faut jamais présumer de l'existance d’information fournit pas l'utilisateur (get, post, cookie etc) pour éviter cela utilise isset ou empty
- Il ne faut jamais utiliser une infos fournit par l'utilisateur directement dans une requête SQL (demande à google : injection SQL). => mysql_real_escape_string.

pour t'en convaincre ajoute un var_dump($_GET,$_POST); en 1ère ligne de ton script, tu pourras voir ce qui est fournit par le navigateur. (et le poster ici si besoin d'aider a l'interpréter).


@+

Re: upload image + sql erreur depuis mise a jour PHP

par neomega » 28 janv. 2013, 08:35

je viens d'essayer votre solution mais toujours la même erreur
merci déjà pour cette correction

Re: upload image + sql erreur depuis mise a jour PHP

par popallo » 27 janv. 2013, 20:34

Salut,

Ligne 21 de ton script :
$sql = 'SELECT * FROM location WHERE id = ' . $_GET['idlocation'] . '';

J'aurai plutôt écrit comme suit :
$sql = 'SELECT * FROM location WHERE id = ' . $_GET['idlocation'];

upload image + sql erreur depuis mise a jour PHP

par neomega » 27 janv. 2013, 20:26

bonjour voici mon script pour Upload d'image avec envoi du nom sur bdd
celui ci fonctionnait tres bien jusqu’à mise a jour de php
voici l'erreur qui apparait quant je clique sur " envoyer le fichier "
Erreur SQL !
SELECT * FROM location WHERE id =
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
pourtant $_GET['idlocation'] me retourne bien la valeur
<?php require('../include.php'); 
protect();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="fr" />
<meta name="robots" content="noindex" />
<link href="<?php echo $css ?>style.css"	title="Défaut" rel="stylesheet" type="text/css" media="screen" />
<link href="<?php echo $css ?>menu.css"	title="Défaut" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<?php include "../menu.php" ?> 

        <div class="news"><!-- News -->

<?php
// lancement de la requete
$sql = 'SELECT * FROM location WHERE id = ' . $_GET['idlocation'] . '';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);

// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();
?>
<center>
l'image actuelle est :<br />
<?php
if (!empty ($data['url_img'] )){
echo '<img src=" ../../boutique/' .$data['url_img']. '"width="100px"> ';
} 

 else { echo 'AUCUNE IMAGE ' ;
 }
?>


</center>




<?php

  
if(isset($_POST['send'])){
$id  = $_POST["id"]  ;
$dossier = '../../boutique/';
$fichier = basename($_FILES['avatar']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['avatar']['tmp_name']);
$extensions = array('.png', '.jpg');
$extension = strrchr($_FILES['avatar']['name'], '.'); 
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png ou jpg ';
}
if($taille>$taille_maxi)
{
     $erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo '
		  <center><br><br><font color="#000000" size="4"> voici l\'image uploader :<br><br><br> <img src="' . $dossier . '' . $fichier.  '"> </font></center>' ;
		 		  
		

 //creation requette sql SQL:
   
  $sql = "UPDATE location SET 
		url_img = '" . $fichier . "'
		WHERE id = ".$id ;	

  //exécution de la requéte SQL:
  $requete = mysql_query($sql) or die( mysql_error() ) ;
 
 
  //affichage des résultats, pour savoir si la modification a marchée:
  if($requete)
  {
    echo("La modification à été correctement effectuée") ;
	//redirect('../emplacement.php');
  }
  else
  {
    echo("<div class=\"succes\">La modification à échouée</div>") ;
  }


		  
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}
else
{
     echo $erreur;
}

} else {
echo '
<center>
<br><br>
<br>
pour uploader votre logo personnel respecter ces regles d\'upload 
<br><br>
- format de l\'image : .jpg et .png<br>
- dimmention --> largeur: __ px  hauteur: __ px
<br><br>
<form method="POST" action="form_upload.php" enctype="multipart/form-data">
	<input name="id" type="hidden" value="'. $_GET["idlocation"] .'">
     <!-- On limite le fichier à 1000Ko -->
     <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
     Fichier : <input type="file" name="avatar">
     <input type="submit" name="send" value="Envoyer le fichier">
</form>
<br><br>
<br><br>
<br><br>
</center>
';
}

?>

		</div>
				  
		</div>
		<!--  CADRE COULEUR -->
		
<?php include "../bas.php" ?>
</body>
</html>

encore merci de votre aide