Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

captcha (encore ...) ... et long

5 réponses
Avatar
docanski
Bonsoir la foule,

J'en suis toujours à mes tentatives d'installation d'un test anti-robot
et je croyais avoir enfin résolu le problème : ça fonctionnait nickel en
interne sous EasyPHP. J'envoie donc les fichiers sur le serveur et là,
catastrophe ! message d'erreur au niveau de l'ouverture de la session
(semble-t'il, puisque l'erreur signalée correspond à cette ligne de code).

Message d'erreur *en tête* de la page du formulaire qui est néanmoins
active :

[Warning session start() [function.session-start]:
open(/mnt/123/sdc/8/a/mycorance/sessions/sess_a5ge2gerf24df64155sdrg,
O_RDWR) failed : No such file or directory (2) in
/mnt/123/sdc/8/a/mycorance//forum/register.php on line 40

Message d'erreur de la page qui annonce que la demande d'inscription
n'est pas valide (et qui comporte également le message d'erreur précédent) :

Warning Unknown():
open(/mnt/123/sdc/8/a/mycorance/sessions/sess_a5ge2gerf24df64155sdrg,
O_RDWR) failed : No such file or directory (2) in Unknown on line 0
Warning Unknown(): Failed to write session data (files). Please verify
that the current setting of session.save_path is correct
(/mnt/123/sdc/8/a/mycorance/sessions) in Unknown on line 0

Le formulaire s'affiche toutefois et permet le remplissage des champs
mais retourne une réponse "vous n'êtes pas identifié". Il faut savoir
que ce formulaire est destiné aux inscriptions de nouveaux membres.
L'ouverture de la session du fichier register.php se fait par :

[code]
session_start();
$hum_id = session_id();
[/code]

Voici la partie du code register.php relative au traitement :

[code]
<?php

require PUN_ROOT.'footer.php';
}


else if (isset($_POST['form_sent']))
{
//Human validation, first check that the session ID is present in the
session array.....
//This one should catch most "simple" bot programs because the form
requires that step one is loaded. It prevents bots from submitting
variables to register.php directly
if( $hum_id != $_SESSION['hum_sumtest'] ) {
message('Votre demande d\'inscription n\'est pas valide');
} //if( $hum_id != $_SESSION['hum_sumtest'] )
//Now check that the correct human test answer was given, don't do
anything if this fails
if( isset($_POST['human_test']) ) { $hum_answer = $_POST['human_test'];
} else { $hum_answer = Null; }
if( !isset($_SESSION['hum_qna_i']) ) { //Ensure that the Question Index
has been stored in the last step
message('Probleme interne, veuillez contacter le responsable du forum');
} //if( !isset($_SESSION['hum_qna_i']) )
$hum_q_index = $_SESSION['hum_qna_i']; //This is the question index,
used to lookup the question
$hum_answ_correct = False; //Set to True if the answer given is correct
require_once 'QandA.php';
//Now test that the answer is correct, all tests are done in lower case
$hum_answ_cnt = count($hum_qna[$hum_q_index]); //First check how many
possible answers there are
//Now loop through answers to check if the answer given is actually in
the list of correct answers
for( $hum_x=1 ; $hum_x < $hum_answ_cnt ; $hum_x++ ) {
$hum_qna_line = $hum_qna[$hum_q_index][$hum_x];
if( strcasecmp( $hum_answer, $hum_qna_line) == 0 ) {
$hum_answ_correct = True; //The answer is correct, cool
} //if( strcasecmp( $hum_answer, $hum_qna_line) == 0 )
}//for( $hum_x=1 ; $hum_x >= $hum_answ_cnt ; $hum_x++ )
//The loop is over, check if the correct answer was given and issue
error if not
if( $hum_answ_correct == False ) {
message('La reponse est incorrecte, veuillez faire un nouvel essai');
} //if( $hum_answ_correct == False )
//This should be it, the user should be human and not a bot

[/code]

Sachant que les questions sont reprises dans un autre fichier nommé
QandA, voici le code de la partie du formulaire destinée au test :

[code]
<div class="inform">
<fieldset>
<legend>Test de sécurité anti-spam</legend>
<div class="infldset">
Pour éviter des attaques par robot spammeur, veuillez répondre à la
question suivante :<br /><br />
<?PHP
//If the form is not loaded but the values send via POST directly to
register.php then
// $_Session['hum_sumtest'] will be empty at the next step.
$_SESSION['hum_sumtest'] = $hum_id; //Save generated value in session
array
require_once 'QandA.php';
$hum_cnt = count($hum_qna) -1; //Find out how many questions there
are, -1 since the count starts at zero
$hum_qna_i = rand(0, $hum_cnt); //Get random number within question range
$hum_question = $hum_qna[$hum_qna_i][0]; //Get the question and save it
$_SESSION['hum_qna_i'] = $hum_qna_i; //Store the index of the question
?>
Question : <strong><?PHP echo $hum_question; ?></strong><br /><br />
Reponse : <input type="text" size="30" maxlength="100"
name="human_test" value="" />
</div>
</fieldset>
</div>
[/code]

J'ai laissé les commentaires originaux de l'auteur du script, Mirko Kaiser.
Quel est donc le problème ?

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/

5 réponses

Avatar
Olivier Miakinen
Bonjour,

Le 28/11/2008 00:02, docanski a écrit :

[...]

[Warning session start() [function.session-start]:
open(/mnt/123/sdc/8/a/mycorance/sessions/sess_a5ge2gerf24df64155sdrg,
O_RDWR) failed : No such file or directory (2) in
/mnt/123/sdc/8/a/mycorance//forum/register.php on line 40

[...]

Warning Unknown():
open(/mnt/123/sdc/8/a/mycorance/sessions/sess_a5ge2gerf24df64155sdrg,
O_RDWR) failed : No such file or directory (2) in Unknown on line 0
Warning Unknown(): Failed to write session data (files). Please verify
that the current setting of session.save_path is correct
(/mnt/123/sdc/8/a/mycorance/sessions) in Unknown on line 0



Je ne m'y connais pas en sessions. Cela dit,
1) Vérifie que /mnt/123/sdc/8/a/mycorance/sessions existe et est
accessible en écriture.
2) Si oui, pose ta question dans le groupe modéré fr.comp.lang.php
qui fourmille d'experts.
Avatar
Dominique Ottello
docanski écrivait :

[Warning session start() [function.session-start]:
open(/mnt/123/sdc/8/a/mycorance/sessions/sess_a5ge2gerf24df64155sdrg,



Il faut créer un dossier nommé "sessions" (En minuscules et avec un s à
la fin) à la racine du site.
--
Un ordinateur résout des problèmes que nous n'aurions pas sans lui
Technique aéronautique : http://aviatechno.free.fr
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Dominique Ottello ecrit ce qui suit en ce 28.11.2008 10:06 :

Il faut créer un dossier nommé "sessions" (En minuscules et avec un s à
la fin) à la racine du site.



Sans aucun fichier dans ce dossier ?
Ce qui me paraît tout de même étrange dans ce comportement, c'est qu'en
interne sous EasyPHP, alors que ce dossier "sessions" n'y existe pas non
plus, il n'y a pas de problème.

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/
Avatar
Dominique Ottello
docanski écrivait :

Sans aucun fichier dans ce dossier ?


Oui, sans aucun fichier.

Ce qui me paraît tout de même étrange dans ce comportement, c'est qu'en
interne sous EasyPHP, alors que ce dossier "sessions" n'y existe pas non
plus, il n'y a pas de problème.



Chez Free, on n'est pas sous EasyPHP.
En local, Wampserver non plus n'a pas besoin de dossier "sessions".

Mais, chez Free, si tu veux que les sessions fonctionnent correctement,
il est impératif de créer ce dossier "sessions".



--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr
Avatar
docanski
Alors que les eleveurs et agriculteurs polluent toujours la Bretagne,
Dominique Ottello ecrit ce qui suit en ce 28.11.2008 17:25 :

Chez Free, on n'est pas sous EasyPHP.
En local, Wampserver non plus n'a pas besoin de dossier "sessions".
Mais, chez Free, si tu veux que les sessions fonctionnent correctement,
il est impératif de créer ce dossier "sessions".



J'ai tout compris ! ;-)

Merci pour ton aide !

Cordialement,
--
docanski

Portail et annuaire du nord-Bretagne : http://armorance.free.fr/
Guide des champignons d'Europe : http://mycorance.free.fr/
La vallée de la Rance maritime : http://valderance.free.fr/
Les côtes du nord de la Bretagne : http://docarmor.free.fr/