OVH Community, votre nouvel espace communautaire.

Problème installation captcha : problème de session ?


Jonat
11/11/2010, 11h31
Oui

Gaston_Phone
11/11/2010, 11h29
Et alors ton problème est-il corrigé ?

Jonat
11/11/2010, 10h58
Hello ;-)

Milles excuses de ne pas avoir répondu

Code:




Gaston_Phone
11/11/2010, 10h16
Et alors Jonat, qu'est-ce que cela a donné ?

Gaston_Phone
12/08/2010, 10h05
Remplacer :
Code PHP:
session_save_path($DOCUMENT_ROOT."/sessions");
session_start();
?>
Par :
Code PHP:
if (!isset($_SESSION))
   {
   
session_save_path($DOCUMENT_ROOT."/sessions");
   
session_start();
   }
?>

Jonat
12/08/2010, 09h50
Merci pour vos réponses

Citation Envoyé par Gaston_Phone
Ce n'est pas une question de header('Location: ...) ou de javascript self.location.replace(), mais de savoir où se trouve ce session_start() et comment inhiber les écritures qui ont précédées dans le buffer de sortie.
Le code en question se trouve un peu plus haut sur cette page

Daniel60
11/08/2010, 11h01
+1

Gaston_Phone
11/08/2010, 10h19
Tu peux aussi mettre : if (!isset($_SESSION)) session_start();

Gaston_Phone
11/08/2010, 10h00
Ce n'est pas une question de header('Location: ...) ou de javascript self.location.replace(), mais de savoir où se trouve ce session_start() et comment inhiber les écritures qui ont précédées dans le buffer de sortie.

Daniel60
11/08/2010, 09h42
En Javascript : self.location.replace()

Jonat
10/08/2010, 21h23
Pendant que j'y suis...

Code:
			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				//echo '

'.$message_envoye.'

'."\n"; header('Location: http://www.domaine.tld/index.php?page=message_envoye'); } else { echo '

'.$message_non_envoye.'

'."\n"; };

Avant ce morceau de code j'ai un session_start() donc je ne peux pas faire de redirection à la place d'echo en PHP (erreur headers already sent by...)

Ma question est la suivante : comment faire cette redirection ?

Merci d'avance

Jonat
10/08/2010, 21h10
Rien à voir avec les sessions semble t-il. J'ai renvoyé le dossier du captcha et maintenant ça marche

Jonat
10/08/2010, 17h15
Bonjour tout le monde

Débutant j'essaye de me créer un petit site web avec un formulaire de contact
J'ai installé le captcha (securimage) mais il ne fonctionne pas. Quand j'entre le bon code ça me retourne le message d'erreur qui me dit que le code n'est pas valide

Après recherche dans la FAQ du captcha, j'ai trouvé ça :
3. If the variable names are the same this may be due to a problem with the PHP session that is used to keep track of the user and what their code is. It is possible that the session was not started or more likely that the session name being used in securimage_show.php differs from the session name used in the script that does the code validation. It is common for other software platforms (forums, content management systems, form processors etc.) to use a session name other than the PHP default. If this is the case, you must determine what session name is used by the software and use the same session name in securimage_show.php and securimage_play.php.

A non-default session name can be passed to Securimage so it can share a session with another software platform with the following code: $img->session_name = 'your_session_name';

Note: Securimage will NEVER destroy a session so it is safe to use with systems that persist user data with sessions; it only changes its own session variables.
Le problème est que je ne sais pas du tout comment corriger le problème

Ma page contact.html :

Ma page de traitement :
Note : j'en suis arrivé à mettre les sessions dans un dossier "sessions", mais après ?

Code:


check($_POST['captcha_code']) == false) {
  // the code was incorrect
  // handle the error accordingly with your other error checking
  // or you can do something really basic like this
  die('');
}

	/*
		********************************************************************************************
		CONFIGURATION
		********************************************************************************************
	*/
	// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
	$destinataire = 'email@domaine.tld';

	// copie ? (envoie une copie au visiteur)
	$copie = 'oui'; // 'oui' ou 'non'

	// Messages de confirmation du mail
	$message_envoye = "Votre message nous est bien parvenu !";
	$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

	// Messages d'erreur du formulaire
	$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire.";
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

	/*
		********************************************************************************************
		FIN DE LA CONFIGURATION
		********************************************************************************************
	*/

	// on teste si le formulaire a été soumis
	if (!isset($_POST['envoi']))
	{
		// formulaire non envoyé
		echo '

'.$message_erreur_formulaire.'

'."\n"; } else { /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = trim($text); // delete white spaces after & before text if (1 === get_magic_quotes_gpc()) { $stripslashes = create_function('$txt', 'return stripslashes($txt);'); } else { $stripslashes = create_function('$txt', 'return $txt;'); } // magic quotes ? $text = $stripslashes($text); $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$"; return (eregi($pattern,$email)) ? true : false; }; // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; // On va vérifier les variables et l'email ... $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré if (($nom != '') && ($email != '') && ($objet != '') && ($message != '')) { // les 4 variables sont remplies, on génère puis envoie le mail $headers = 'From: '.$nom.' <'.$email.'>' . "\r\n"; // envoyer une copie au visiteur ? if ($copie == 'oui') { $cible = $destinataire.','.$email; } else { $cible = $destinataire; }; // Remplacement de certains caractères spéciaux $message = str_replace("'","'",$message); $message = str_replace("’","'",$message); $message = str_replace(""",'"',$message); $message = str_replace('
','',$message); $message = str_replace('
','',$message); $message = str_replace("<","<",$message); $message = str_replace(">",">",$message); $message = str_replace("&","&",$message); // Envoi du mail if (mail($cible, $objet, $message, $headers)) { // echo '

'.$message_envoye.'

'."\n"; header("Location: http://www.domaine.tld/site/index.php?page=message_envoye"); } else { echo '

'.$message_non_envoye.'

'."\n"; }; } else { // une des 3 variables (ou plus) est vide ... echo '

'.$message_formulaire_invalide.' Retour au formulaire

'."\n"; }; }; // fin du if (!isset($_POST['envoi'])) ?>
Je suis vraiment perdu. Si c'est pas un problème de session ce serait sympa de me dire ce qui cloche

Merci d'avance