Page 1 sur 1

header() et setCookie() ne marche pas sur un compte free

Posté : 16 sept. 2005, 09:59
par skin
bonjour,
sur mon site free, lorsque j'essaie d'utiliser un cookie, il me renvoie l'erreur suivante:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/free.fr/e/3/skin787/cookie.php:7) in /var/www/free.fr/e/3/skin787/cookie.php on line 36
pourtant en local ca marche nikel et comme code ya pas plus simple.
Je ne comprend pas. Voila le code:
<html>
<head>
<title>formulaire</title>
</head>
<body>

<?php

function  checkEmail($email)
{
 if (!preg_match("/^[a-zA-Z0-9]+[a-zA-Z0-9._-]*@[a-zA-Z0-9_-]+[.][a-zA-Z0-9][a-zA-Z0-9]$/" , $email)) {
  return false;
 }
 return true;
}

if($_COOKIE['nom']!='' && $_COOKIE['prenom']!='' && $_COOKIE['email']!='')
{
	echo 'vous etes: <font color="#ff0000">'.$_COOKIE['nom'].' '.$_COOKIE['prenom'].'</font> avec l\'adresse mail: <font color="#ff0000">'.$_COOKIE['email'].'</font><br/>';
}
else
{
	if($_POST['nom']!='' && $_POST['prenom']!='' && checkEmail($_POST['email']) && 
		$_POST['login']!='' && $_POST['pass']!='')
	{
		echo 'votre nom: '.$_POST['nom'].'<br/>';
		echo 'votre prenom: '.$_POST['prenom'].'<br/>';
		echo 'votre email: '.$_POST['email'].'<br/>';
		echo 'votre login: '.$_POST['login'].'<br/>';
		echo 'votre pass: '.$_POST['pass'].'<br/>';
		
		//dans le cas ou les infos sont bonnes, on inscrit des cookies
		$expire = 365*24*3600;
		if($_COOKIE['nom']=='' && $_COOKIE['prenom']=='' && $_COOKIE['email']=='')
		{
			setcookie('nom',$_POST['nom'],time()+$expire);
			setcookie('prenom',$_POST['prenom'],time()+$expire);
			setcookie('email',$_POST['email'],time()+$expire);
		}
	}
	else
	{
		echo '<font color="#ff0000">';
		if($_POST['nom']=='') echo 'veuillez entrer votre nom!<br/>';
		if($_POST['prenom']=='') echo 'veuillez entrer votre prenom!<br/>';
		if(!checkEmail($_POST['email'])) echo 'veuillez entrer un email valide!<br/>';
		if($_POST['login']=='') echo 'veuillez entrer votre login!<br/>';
		if($_POST['pass']=='') echo 'veuillez entrer votre pass!<br/>';
		echo '</font>';
?>

<form method="post" action="cookie.php" enctype="multipart/form-data">
	votre nom: <input type="text" name="nom" value=<? echo '"'.$_POST['nom'].'"';?>/><br/>
	votre prenom: <input type="text" name="prenom" value=<? echo '"'.$_POST['prenom'].'"';?>/><br/>
	votre email: <input type="text" name="email" value=<? echo '"'.$_POST['email'].'"';?>/><br/>
	votre login: <input type="text" name="login" value=<? echo '"'.$_POST['login'].'"';?>/><br/>
	votre pass: <input type="password" name="pass" value=<? echo '"'.$_POST['pass'].'"';?>/><br/>
	<input type="submit" value="Go"/>
</form>

<?php
	}
}
?>

</body>
</html>
voila j'espere que qq peut m'aider merci

Posté : 16 sept. 2005, 11:53
par Truc
Salut, ton erreur est de placer du code html et php avant le setcookie
<html>
<head>
<title>formulaire</title>
</head>
<body> 
a placer juste avant d'ouvrir la balise <form>, par exemple.

essai de placer la serie de "echo" apres ce test
if($_COOKIE['nom']=='' && $_COOKIE['prenom']=='' && $_COOKIE['email']=='')
donc apres avoir fait les setcookie

Posté : 16 sept. 2005, 15:55
par skin
merci ca marche nikel
mais c'est qd meme bizarre que le setCookie ne marchait pas chez free et marchait en local