Array_search ou in_array qui ne fonctionne pa

Résolu/Fermé
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 - 26 mars 2008 à 23:26
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 - 26 mars 2008 à 23:28
Bonjour,

Repostage d'un sujet précedent qui à été supprimé à ma demande (Merci Kilian)

Problème cité : Voici mon script qui ne fonctionne pas ... Le script n'arrives pas à trouver la valeur $ip dans le $contenu qui est un array établi d'après le contenu d'un fichier texte.

J'ai beau tourner la tartine dans tous les sens , je ne vois plus ... Help ! thanks :)

Ancien script :


<?

if (!isset($_GET['id']))
{
exit();
} else {
	
	$id=$_GET['id'];
	$ip = $_SERVER['REMOTE_ADDR'];
	
	// Script anti-triche
	
	$fichier = 'log_sites/'.$id.'.txt';
	
	if (is_file($fichier)==TRUE) {
	echo 'fichier existant';
	$contenu = file('log_sites/'.$id.'.txt');
	print_r($contenu);
	$compteur = count($contenu);
	//echo $compteur;
	echo array_search($ip,$contenu);
	
		if (!array_key_exists($ip,$contenu)) {
		
		echo 'comptage out';
		//echo array_search($ip,$contenu);
		//print_r ($contenu);
		
		include 'connect.php';
		mysql_query(" UPDATE sites SET out_c=out_c+1 WHERE id='$id' ");
		mysql_close();
			
						
			for($i=0;$i==$compteur;$i++) {
			$ecriture .= $contenu[$i];
			}
			
		$ecriture = $ip."\n".$ecriture;
			
			$fp = fopen($fichier,"a+");
			fwrite($fp, $ecriture);
			fclose($fp);
		
		}		
		
	
	
	} else {
	echo 'fichier NON existant';
			$fp = fopen($fichier,"a+");
			fwrite($fp, $ip."\n");
			fclose($fp);
	
			include 'connect.php';
			mysql_query(" UPDATE sites SET out_c=out_c+1 WHERE id='$id' ");
			mysql_close();
	
	}

	

}
   
?>

1 réponse

djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
26 mars 2008 à 23:28
Problème résolu grâce à Kilian (thanks !) , en modifiant la requete file :

file('log_sites/'.$id.'.txt');

Par :

file('log_sites/'.$id.'.txt', FILE_IGNORE_NEW_LINES);

Donc nouveau script :

<?

if (!isset($_GET['id'])) {
exit();
} else {
	
	$id=$_GET['id'];
	$ip = $_SERVER['REMOTE_ADDR'];
	
	// Script anti-triche
	
	$fichier = 'log_sites/'.$id.'.txt';
	
	if (is_file($fichier)==TRUE) {
	
	$contenu = file('log_sites/'.$id.'.txt', FILE_IGNORE_NEW_LINES);

	$compteur = count($contenu);
	
		if (!in_array($ip,$contenu)) {
				
		include 'connect.php';
		mysql_query(" UPDATE sites SET out_c=out_c+1 WHERE id='$id' ");
		mysql_close();
			
						
			for($i=0;$i==$compteur;$i++) {
			$ecriture .= $contenu[$i];
			}
			
			$ecriture = $ip."\n".$ecriture;
			
			$fp = fopen($fichier,"a+");
			fwrite($fp, $ecriture);
			fclose($fp);
		
		}		
		
	
	
	} else {
	
			$fp = fopen($fichier,"a+");
			fwrite($fp, $ip."\n");
			fclose($fp);
	
			include 'connect.php';
			mysql_query(" UPDATE sites SET out_c=out_c+1 WHERE id='$id' ");
			mysql_close();
	
	}

}
   
?>
1