Page 1 sur 1

verif formulaire

Posté : 31 déc. 2012, 14:27
par graffx
salut a tous et meilleurs voeux!

J' ai un souci que je n' arrive pas à déméler.

J' ai un formulaire simple:
<form method="post" action="index.php?p=pl&membre=<?php echo $pseudo; ?>&mdf=0" enctype="multipart/form-data">
                <table width="500" border="0" align="left" cellpadding="0" cellspacing="0">
	            <tr>
	              <td width="127" height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">PSEUDO : </span></td>
    		          <td width="373" height="30" align="left" valign="middle"><?php
			echo '<div style="margin-right:10px;margin-bottom:10px;margin-top:10px;margin-left:10px;">';
			echo ucfirst($mesinfos['pseudo']);
			echo '</div>';
			?></td>
  		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">INSCRIT LE :</span></td>
    		          <td height="30" align="left" valign="middle"><?php echo date('d/m/Y à H\hi', $mesinfos['timestamp']); ?></td>
  		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">OCCUPATION : </span></td>
    		          <td height="30" align="left" valign="middle"><label>
    		            <input type="text" name="occupation" id="occupation" value="<?php echo $mesinfos['occupation']; ?>" style="width:300px; background-color:#FEC5C6;" />
  		            </label></td>
  		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">SITE WEB : </span></td>
    		          <td height="30" align="left" valign="middle">http://<input type="text" name="site" id="site" value="<?php echo $mesinfos['site']; ?>" style="width:260px; background-color:#FEC5C6;" /></td>
  		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">CITATION : </span></td>
    		          <td height="30" align="left" valign="middle"><input type="text" name="citation" id="citation" value="<?php echo $mesinfos['citation']; ?>" style="width:300px; background-color:#FEC5C6;" /></td>
  		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">SIGNATURE : </span></td>
    		          <td height="30" align="left" valign="middle"><input type="text" name="signature" id="signature" value="<?php echo $mesinfos['signature']; ?>" style="width:300px; background-color:#FEC5C6;" /></td>
  		          </tr>
    		        <tr>
    		          <td height="30" colspan="2" align="left" valign="middle">&nbsp;</td>
   		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">AVATAR : </span></td>
    		          <td height="30" align="left" valign="middle"><input type="file" name="photo" id="photo" style="width:300px; background-color:#FEC5C6;" /></td>
  		          </tr>
    		        <tr>
    		          <td height="30" align="left" valign="middle">&nbsp;</td>
    		          <td height="30" align="left" valign="top" style="font-size:12px;">Taille pr&eacute;conis&eacute;e : 200x200</td>
  		          </tr>
    		        <tr>
    		          <td height="30" colspan="2" align="left" valign="middle">&nbsp;</td>
   		          </tr>
    		        <tr>
    		          <td height="30" colspan="2" align="center" valign="middle"><table width="500" border="0" cellspacing="0" cellpadding="0">
    		            <tr>
    		              <td width="189" align="left" valign="middle"><span style="text-align:left; font-size:12px; color:#900; font-weight:bolder;">NOUVEAU MOT DE PASSE :</span></td>
    		              <td width="311" align="left" valign="middle"><input type="password" name="mdp5" id="mdp5" style="width:300px; background-color:#FEC5C6;" /></td>
  		              </tr>
  		            </table></td>
  		          </tr>
    		        <tr>
    		          <td height="50" colspan="2" align="center" valign="middle"><label>
    		            <input type="submit" name="VALIDER" id="VALIDER" value="Envoyer" />
  		            </label></td>
   		          </tr>
  		        </table>
                </form>
La page de vérification ensuite, pas optimisée, pour l' instant je cherche juste a ce qu' elle soit fonctionnelle:
<?php
session_start();

			if(isset($_GET['p']))
			{
				
			if(isset($_POST['occupation']))
			{
			$occupation = $_POST['occupation'];
			}
			else
			{
			$occupation = $mesinfos['occupation'];
			}
			
			if(isset($_POST['site']))
			{
			$site = $_POST['site'];
			}
			else
			{
			$site = $mesinfos['site'];
			}
			
			if(isset($_POST['citation']))
			{
			$citation = $_POST['citation'];
			}
			else
			{
			$citation = $mesinfos['citation'];
			}
			
			if(isset($_POST['signature']))
			{
			$signature = $_POST['signature'];
			}
			else
			{
			$signature = $mesinfos['signature'];
			}
			
			if(isset($_FILES['photo']))
			{
			$photo = $_FILES['photo'];
			
				$dossier = '/home/*****/www/images/profil/';
				$extensions = array('.png', '.gif', '.jpg', '.jpeg');
				$taille_maxi = 50000;
	
				$photo = time()."_".$_FILES['photo']['name'];
				$taille = filesize($_FILES['photo']['tmp_name']);
				$extension = strrchr($_FILES['photo']['name'], '.');
	
	

			if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
			{
   		    $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 5000Ko';
			}
			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...
   		    $photo = strtr($photo, 
            'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
            'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	    $photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo);
			}
  			move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $photo)or die(mysql_error()); //Si la fonction renvoie TRUE, c'est que ça a fonctionné...

	 
			}
			else
			{
			$photo = $mesinfos['photo'];
			}
			
			if(isset($_POST['mdp5']))
			{
			$mdp5 = $_POST['mdp5'];
			}
			else
			{
			$mdp5 = $mesinfos['mdp'];
			}
			
			
			$sqlmdf = mysql_query("UPDATE users SET occupation ='$occupation', site ='$site', citation ='$citation', signature ='$signature', photo ='$photo' WHERE pseudo='$pseudo'");
			echo '<meta http-equiv="refresh" content="0;URL=index.php?p=pl&membre='.$pseudo.'">';
			}
			?>

Sans la partie "renommage de l'image uploadée", tout s'actualise parfaitement tant niveau base de données que sur le site.

Depuis que j' ai ajoutée le traitement de l' image "renommer + upload", plus rien ne fonctionne sauf l' image, bien renommée et bien uploadée, a condition que dnas le formulaire je ne fasse qu' uploader une image et rien de plus.

Maintenant si je modifie un autre champs, j' ai une page blanche comme si il y avait un exit();

Bref si quelqu' un voit le probleme je suis preneur.

Meric d'avance!

Re: verif formulaire

Posté : 31 déc. 2012, 16:17
par graffx
Je vois que tout le monde est en train de préparer le nouvel an, ca va pas être facile pour résoudre mon problême hihihi.

Treve de palisanterie, j' avance à grand pas (evidemment une fosi que j' ai posé mon soucis).

La fonction move_uploaded_file était à mon avis mal placée, la voici dans la condition, ca fonctionne dorénavant à un détail prés.

Tout le formulaire fonctionne trés bien, mais ce que je voudrai c'est que le formulaire ne mette a jour que ce que l' utilisateur à modifié.

voici le schéma:

je fais un SELECT sur tous les points de l' utilisateur de la session dont le pseudo est ****

ensuite je pose mon traitement de formulaire:
if(isset($_FILES['photo'])&&!empty($_FILES['photo']))
			{
			$photo = $_FILES['photo'];
			
				$dossier = '/home/graffx/www/images/profil/';
				$extensions = array('.png', '.gif', '.jpg', '.jpeg');
				$taille_maxi = 50000;
	
				$photo = time()."_".$_FILES['photo']['name'];
				$taille = filesize($_FILES['photo']['tmp_name']);
				$extension = strrchr($_FILES['photo']['name'], '.');
	
	

			if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
			{
   		    $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg...<br><br> Taille de la photo maxi : 5000Ko';
			}
			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...
   		    $photo = strtr($photo, 
            'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
            'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	    $photo = preg_replace('/([^.a-z0-9]+)/i', '-', $photo);
			move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $photo)or die(mysql_error()); //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
			}
  			

	 
			}
			else
			{
			$photo = $mesinfos['photo'];
			}

Donc je récapitule ce que je voudrai:

l' utilisateur change une info de son profil, par exemple son avatar.
quand on valide, si les données des autres champs sont identiques a ceux de la base de données, on ne les modifie pas.

probleme qui arrive, le dernier:

quand je valide un changement, par exemple le site web ou le metier de mon profil, l'avatar est remplacé par la fonction time().

c'est a dire que si j' avais dans la base de données la photo 65465465465_test.jpg, elle sera remplace par 68746354654_

Hé oui, donc voila, je suis définitivement bloqué sachant que j' ai testé comme vous pouvez le voir la fonction empty ou isset sur $_FILES['photo']

Merci d'avance :s

Re: verif formulaire

Posté : 31 déc. 2012, 17:17
par graffx
Bon ben j' ai simplifié etant pressé, j' ai fait deux formulaires pour deux pages de traitement, un fomulaire pour l' avatar tout seul. Moche mais ca marche. Meilleurs voeux a tous!