problème avec la function getimagesize!

Eléphanteau du PHP | 28 Messages

06 juil. 2011, 19:25

Bonjour,

J'ai un problème avec la fonction getimagesize qui m'affiche cette erreur quand je upload une image voici mon code :
<?php

require_once('include/mysql.php');

if (isset($_SESSION['login']))
{

$login = htmlentities($_SESSION['login']);

	$verification_droit_admin = $bdd->prepare("SELECT `droit` FROM membres WHERE login = :login ");
	if($verification_droit_admin->execute(array(':login' => $login)) && $row = $verification_droit_admin->fetch())
	{	
		$droit = $row['droit'];
	}

	if($droit == '2')
	{
?>
	<legend><h2><font color="black">Ajouter Top Match</font></h2></legend>
<center>
<?php

if (isset($_POST['submit_top_match']))
{
	if(isset($_POST['name_adversaire'], $_POST['name_games'], $_POST['jours_top_match'], $_POST['mois_top_match'], $_POST['annees_top_match'], $_POST['heures_du_match'], $_POST['minutes_du_match'], $_POST['ladder_du_match'], $_FILES['logo_adversaire']))
	{
			$name_adversaire = trim(addslashes($_POST['name_adversaire']));
			$name_games = trim(addslashes($_POST['name_games']));
			$jours_top_match = trim(addslashes($_POST['jours_top_match']));
			$mois_top_match = trim(addslashes($_POST['mois_top_match']));
			$annees_top_match = trim(addslashes($_POST['annees_top_match']));
			$heures_du_match = trim(addslashes($_POST['heures_du_match']));
			$minutes_du_match = trim(addslashes($_POST['minutes_du_match']));
			$ladder_du_match = trim(addslashes($_POST['ladder_du_match']));
			
			$taille_maxi_image = '300000';
			$dossier_image = 'img/base/';
			$extensions_image = array('.png');
			$taille_image = filesize($_FILES['logo_adversaire']['tmp_name']);
			$extension_image = strrchr($_FILES['logo_adversaire']['name'], '.');
			$logo_adversaire = basename($_FILES['logo_adversaire']['name']);
			
		
		if(empty($name_adversaire))
		{
			echo '<h3><font color="#ff0000"><b>Le champs du nom de l\'équipe adversaire est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		} 
		else if(empty($name_games))
		{
			echo '<h3><font color="#ff0000"><b>Le champ pour le nom du jeux est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		} 
		else if(empty($jours_top_match))
		{
			echo '<h3><font color="#ff0000"><b>Le jour du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($mois_top_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ moi du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($annees_top_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ année du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		} 
		else if(empty($heures_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ heure du top match est vide</b></h3></font>';	
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($minutes_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ minute du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($ladder_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ ladder du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($ladder_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le logo du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else
		{
		
			list($width, $height, $type, $attr) = getimagesize($logo_adversaire);
			if ($width == '100' && $height == '100')
			{
			
				$logo_adversaire = preg_replace('/([^.a-z0-9]+)/i', '-', $logo_adversaire);
				$logo_adversaire = str_replace($logo_adversaire,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
			
				// je vérifie que l'images n'existe déjà pas.
				if (file_exists($dossier_image. $logo_adversaire))
				{
					echo '<h3><font color="#ff0000"><b>le fichier '.htmlentities($logo_adversaire).' existe déjà</b></h3></font>';
					header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
				}
				else
				{
					if(!in_array($extension_image, $extensions_image))
					{	
						echo '<h3><font color="#ff0000"><b>Merci de upload une image en format png</b></h3></font>';
						header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
					}
					else
					{
						if($taille_image > $taille_maxi_image)
						{
							echo 'l\'image à une taille trop grosse';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}
						if(move_uploaded_file($_FILES['logo_adversaire']['tmp_name'], $dossier_image . $logo_adversaire)) 
						{
							echo 'Le logo de la team adversaire à bien été upload';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}
						else
						{
							echo '<h3><font color="#ff0000"><b>Echec : Le logo à pas été upload</b></h3></font>';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}	
				
							$insertion_top_match = $bdd->prepare('INSERT INTO `top_match` (`name_adversaire`, `name_games`, `jours_top_match`, `mois_top_match`, `annees_top_match`, `heures_du_match`, `minutes_du_match`, `ladder_du_match`, `logo_adversaire`)
													VALUES(:name_adversaire, :name_games, :jours_top_match, :mois_top_match, :annees_top_match, :heures_du_match, :minutes_du_match, :ladder_du_match, :logo_adversaire)');
							$insertion_top_match->bindValue(':name_adversaire', $name_adversaire, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':name_games', $name_games, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':jours_top_match', $jours_top_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':mois_top_match', $mois_top_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':annees_top_match', $annees_top_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':heures_du_match', $heures_du_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':minutes_du_match', $minutes_du_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':ladder_du_match', $ladder_du_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':logo_adversaire', $logo_adversaire, PDO::PARAM_STR);
							
							$insertion_top_match->execute();
					
							$insertion_top_match->closeCursor();
							
						if($insertion_top_match)
						{
							echo '<br />Le top match à bien été ajouter';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}
						else
						{
							echo '<h3><font color="#ff0000"><b>Le top match à pas plus être ajouter</b></h3></font>';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}	
					}
				}
			}
			else
			{
				echo '<h3><font color="#ff0000"><b>l\'image à une taille trop grande,l\'image doit faire une taille de 100x100 merci</b></h3></font>';
				header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
			}
		}
	}
}
?>
et l'érreur que je reçois :

Warning: getimagesize(logo1.gif) [function.getimagesize]: failed to open stream: No such file or directory in /home/teamsogames/www/admin/add_top.php on line 93

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 juil. 2011, 00:27

salut,

le message d'erreur est clair : le fichier n'existe pas. ce qui est vrai vu que tu ne réalise pas l'upload du fichier completement.
le nom du fichier dans $_FILES est a titre indication, lorsque le fichier "arrive" sur le serveur il est dans un dossier temporaire de php et n'est déplacé que si tu le demande sinon a la fin du script il est effacé !

la doc pour finir ton upload http://fr2.php.net/manual/fr/features.f ... method.php

si tu souhaite "vérifier" l'image avant upload utilise le nom temporaire (tmp_name) !


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 28 Messages

10 juil. 2011, 01:15

ah ok merci bien ^^

j'ai une autre erreur maintenant :

Code : Tout sélectionner

Warning: move_uploaded_file(ArrayAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/teamsogames/www/admin/add_top.php on line 120 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phppcYgUH' to 'ArrayAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy' in /home/teamsogames/www/admin/add_top.php on line
et mon code refait :
<fieldset id="fieldset_center">
<?php

require_once('include/mysql.php');

if (isset($_SESSION['login']))
{

$login = htmlentities($_SESSION['login']);

	$verification_droit_admin = $bdd->prepare("SELECT `droit` FROM membres WHERE login = :login ");
	if($verification_droit_admin->execute(array(':login' => $login)) && $row = $verification_droit_admin->fetch())
	{	
		$droit = $row['droit'];
	}

	if($droit == '2')
	{
?>
	<legend><h2><font color="black">Ajouter Top Match</font></h2></legend>
<center>
<?php

if (isset($_POST['submit_top_match']))
{
	if(isset($_POST['name_adversaire'], $_POST['name_games'], $_POST['jours_top_match'], $_POST['mois_top_match'], $_POST['annees_top_match'], $_POST['heures_du_match'], $_POST['minutes_du_match'], $_POST['ladder_du_match'], $_FILES['logo_adversaire']))
	{
			$name_adversaire = trim(addslashes($_POST['name_adversaire']));
			$name_games = trim(addslashes($_POST['name_games']));
			$jours_top_match = trim(addslashes($_POST['jours_top_match']));
			$mois_top_match = trim(addslashes($_POST['mois_top_match']));
			$annees_top_match = trim(addslashes($_POST['annees_top_match']));
			$heures_du_match = trim(addslashes($_POST['heures_du_match']));
			$minutes_du_match = trim(addslashes($_POST['minutes_du_match']));
			$ladder_du_match = trim(addslashes($_POST['ladder_du_match']));
			
			$taille_maxi_image = '300000';
			$dossier_image = '/img/base/';
			$extensions_image = array('.png');
			$taille_image = filesize($_FILES['logo_adversaire']['tmp_name']);
			$extension_image = strrchr($_FILES['logo_adversaire']['name'], '.');
			$logo_adversaire = basename($_FILES['logo_adversaire']['name']);
			
		
		if(empty($name_adversaire))
		{
			echo '<h3><font color="#ff0000"><b>Le champs du nom de l\'équipe adversaire est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		} 
		else if(empty($name_games))
		{
			echo '<h3><font color="#ff0000"><b>Le champ pour le nom du jeux est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		} 
		else if(empty($jours_top_match))
		{
			echo '<h3><font color="#ff0000"><b>Le jour du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($mois_top_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ moi du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($annees_top_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ année du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		} 
		else if(empty($heures_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ heure du top match est vide</b></h3></font>';	
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($minutes_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ minute du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($ladder_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le champ ladder du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else if(empty($ladder_du_match))
		{
			echo '<h3><font color="#ff0000"><b>le logo du top match est vide</b></h3></font>';
			header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
		}
		else
		{
		
			$logo_adversaire = preg_replace('/([^.a-z0-9]+)/i', '-', $logo_adversaire);
			$logo_adversaire = str_replace($logo_adversaire,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
		
			list($width, $height, $type, $attr) = getimagesize($_FILES['logo_adversaire']['tmp_name'], $dossier_image);
			if ($width == '100' && $height == '100')
			{
			
				// je vérifie que l'images n'existe déjà pas.
				if (file_exists($dossier_image. $logo_adversaire))
				{
					echo '<h3><font color="#ff0000"><b>le fichier '.htmlentities($logo_adversaire).' existe déjà</b></h3></font>';
					header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
				}
				else
				{
					if(!in_array($extension_image, $extensions_image))
					{	
						echo '<h3><font color="#ff0000"><b>Merci de upload une image en format png</b></h3></font>';
						header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
					}
					else
					{
						if($taille_image > $taille_maxi_image)
						{
							echo 'l\'image à une taille trop grosse';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}
						if(move_uploaded_file($_FILES['logo_adversaire']['tmp_name'], $dossier_image . $logo_adversaire)) 
						{
							echo 'Le logo de la team adversaire à bien été upload';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}
						else
						{
							echo '<h3><font color="#ff0000"><b>Echec : Le logo à pas été upload</b></h3></font>';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}	
				
							$insertion_top_match = $bdd->prepare('INSERT INTO `top_match` (`name_adversaire`, `name_games`, `jours_top_match`, `mois_top_match`, `annees_top_match`, `heures_du_match`, `minutes_du_match`, `ladder_du_match`, `logo_adversaire`)
													VALUES(:name_adversaire, :name_games, :jours_top_match, :mois_top_match, :annees_top_match, :heures_du_match, :minutes_du_match, :ladder_du_match, :logo_adversaire)');
							$insertion_top_match->bindValue(':name_adversaire', $name_adversaire, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':name_games', $name_games, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':jours_top_match', $jours_top_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':mois_top_match', $mois_top_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':annees_top_match', $annees_top_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':heures_du_match', $heures_du_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':minutes_du_match', $minutes_du_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':ladder_du_match', $ladder_du_match, PDO::PARAM_STR);
							$insertion_top_match->bindValue(':logo_adversaire', $logo_adversaire, PDO::PARAM_STR);
							
							$insertion_top_match->execute();
					
							$insertion_top_match->closeCursor();
							
						if($insertion_top_match)
						{
							echo '<br />Le top match à bien été ajouter';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}
						else
						{
							echo '<h3><font color="#ff0000"><b>Le top match à pas plus être ajouter</b></h3></font>';
							header('Refresh: 2;url=ajouter_un_top_match.html#fieldset_center');
						}	
					}
				}
			}
			else
			{
				echo '<h3><font color="#ff0000"><b>l\'image à une taille trop grande,l\'image doit faire une taille de 100x100 merci</b></h3></font>';
			}
		}
	}
}
echo realpath($dossier_image.$logo_adversaire);
?>
</center>
<form action="ajouter_un_top_match.html#fieldset_center" method="post" enctype="multipart/form-data">	
	<table  width="480px">
		<tr>
			<td>
				<label><b>Nom de l'équipe adversaire :</b></label><br />
				<input type="text" name="name_adversaire" size="25" value="" /> 
			</td>
                
                
                <td>	<label><b>Jeux du match </b></label><br />
				<select name="name_games">
					<optgroup label="Jeux du match"></optgroup>
						<option value="Counter Strike:Source">Counter Strike:Source</option>
						<option value="Day Of Defeat:Source">Day Of Defeat:Source</option>
						<option value="Counter-Strike">Counter-Strike</option>
						<option value="Battlefield 3">Battlefield 3</option>
						<option value="Crysis 2">Crysis 2</option>
				</select></td>
                <td><label><b>Jour du match :</b></label><br />
						<select name="jours_top_match">
							<optgroup label="Jour du match"></optgroup>
								<option value="1">1</option>
								<option value="2">2</option>
								<option value="3">3</option>
								<option value="4">4</option>
								<option value="5">5</option>
								<option value="6">6</option>
								<option value="7">7</option>
								<option value="8">8</option>
								<option value="9">9</option>
								<option value="10">10</option>
								<option value="11">11</option>
								<option value="12">12</option>
								<option value="13">13</option>
								<option value="14">14</option>
								<option value="15">15</option>
								<option value="16">16</option>
								<option value="17">17</option>
								<option value="18">18</option>
								<option value="19">19</option>
								<option value="20">20</option>
								<option value="21">21</option>
								<option value="22">22</option>
								<option value="23">23</option>
								<option value="24">24</option>
								<option value="25">25</option>
								<option value="26">26</option>
								<option value="27">27</option>
								<option value="28">28</option>
								<option value="29">29</option>
								<option value="30">30</option>
								<option value="31">31</option>
					</select></td></tr>
<tr><td><label><b>Mois du match :</b></label><br />
							<select name="mois_top_match">
								<optgroup label="Mois du match"></optgroup>
									<option value="1">1</option>
									<option value="2">2</option>
									<option value="3">3</option>
									<option value="4">4</option>
									<option value="5">5</option>
									<option value="6">6</option>
									<option value="7">7</option>
									<option value="8">8</option>
									<option value="9">9</option>
									<option value="10">10</option>
									<option value="11">11</option>
									<option value="12">12</option>
							</select></td>
                            
                            <td>	<label><b>Année du match :</b></label><br />
				<select name="annees_top_match">
					<optgroup label="Année du match"></optgroup>
						<option value="2011">2011</option>
						<option value="2012">2012</option>
						<option value="2013">2013</option>
						<option value="2014">2014</option>
						<option value="2015">2015</option>
				</select></td>
                
                <td><label><b>Heures du match :</b></label><br />
						<select name="heures_du_match">
							<optgroup label="Heures du match"></optgroup>
								<option value="1">1</option>
								<option value="2">2</option>
								<option value="3">3</option>
								<option value="4">4</option>
								<option value="5">5</option>
								<option value="6">6</option>
								<option value="7">7</option>
								<option value="8">8</option>
								<option value="9">9</option>
								<option value="10">10</option>
								<option value="11">11</option>
								<option value="12">12</option>
								<option value="13">13</option>
								<option value="14">14</option>
								<option value="15">15</option>
								<option value="16">16</option>
								<option value="17">17</option>
								<option value="18">18</option>
								<option value="19">19</option>
								<option value="20">20</option>
								<option value="21">21</option>
								<option value="22">22</option>
								<option value="23">23</option>
								<option value="24">24</option>
						</select></td></tr>
                        
                        <tr><td><label><b>Minutes du match :</b></label><br />
			<select name="minutes_du_match">
				<optgroup label="Minutes du match"></optgroup>
					<option value="5">5</option>
					<option value="10">10</option>
					<option value="15">15</option>
					<option value="20">20</option>
					<option value="25">25</option>
					<option value="30">30</option>
					<option value="35">35</option>
					<option value="40">40</option>
					<option value="45">45</option>
					<option value="50">50</option>
					<option value="55">55</option>
					<option value="00">00</option>
			</select></td>
            
            <td><label><b>Ladder top match :</b></label><br />
					<select name="ladder_du_match">
						<optgroup label="Ladder du match"></optgroup>
							<option value="ESL 1on1.eu">ESL 1on1.eu</option>
							<option value="ESL 2on2.eu">ESL 2on2.eu</option>
							<option value="ESL 3on3.eu">ESL 3on3.eu</option>
							<option value="ESL 4on4.eu">ESL 4on4.eu</option>
							<option value="ESL 5on5.eu">ESL 5on5.eu</option>
							<option value="ESL 1on1.fr">ESL 1on1.fr</option>
							<option value="ESL 2on2.fr">ESL 2on2.fr</option>
							<option value="ESL 3on3.fr">ESL 3on3.fr</option>
							<option value="ESL 4on4.fr">ESL 4on4.fr</option>
							<option value="ESL 5on5.fr">ESL 5on5.fr</option>
					</select>	</td></tr>
			</table>
			<center>
                   <br /><label><b>Ajouter le logo de la team adversaire :</b></label><br />
				<input type="hidden" name="MAX_FILE_SIZE" value="100000">
					<input type="file" name="logo_adversaire" />
			</center>
		<br />
	<center>
	<input type="submit" id="bouton_submit_top_match" value="      enregistrer le top match      " name="submit_top_match" />
	</center>
</form>
<?php

	}
	else // je renvoie cette erreur si le membre a pas les droit require pour accéder a la page.
	{
		echo '<center><p><h3><font color="#ff0000">Vous avez pas les droit require pour accéder à la page.</h3></font></p></center>';
	}
}
else // j'envoie cette erreur si la personne est pas connecté.
{
	echo '<center><p><h3><font color="#ff0000">Vous devez être connecté pour voir cette page.</h3></font></p></center>';
}
?>
</fieldset>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 juil. 2011, 13:33

la va falloir debugger un peux.

tu passe un tableau à la fonction et cette fonction n'apprécie pas XD

pour commencer modifie les variables qui porte le même nom que des champs de formulaires (parce qu'avec l'auto déclaration des variables y a des chances que tous cela ce mélange les pinceaux.

donc $logo_adversaire ne doit pas être utiliser car se serait la même variable que $_FILES['logo_adversaire'] ou $_POST['logo_adversaire'] etc .
pour éviter cela on change de nom ;)

affiche le contenu des variables avant et après chaque affectation histoire de comprendre ce qui se passe ;)


@+
Il en faut peu pour être heureux ......