Anti-flood

administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006 - 3 avril 2006 à 11:54
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 4 avril 2006 à 18:35
Bonjour,

J'aimerais mètre un anti-flood sur un formulaire, voici le code

<form name="demande" method="POST" action="../formulaire/verifdemande.php">
<table id="formulaire" border="0">

----, Non:

</td>*,

----

Pr&#233;nom:, *,

----

Tel/GSM, ,

----

E-mail:, *,

----

Annonce:

<textarea name="message" cols=60 rows=4 onKeyDown="limiteur();" onKeyUp="limiteur();"></textarea>,

----

<?php
$rep_images = '../images/';
$nbrchars = 5;
session_start();
if(isset($_POST['verification'])){
if($_SESSION['code'] != $_POST['verification']){
echo 'code incorrect';
}else{
echo 'code correct';
}
}
$dossier = @opendir($rep_images);
while ($fichier = @readdir($dossier)) {
if( !is_dir($fichier) ){
$num[] = $fichier;
}
}
@closedir($dossier);
for($i=0; $i<$nbrchars; $i++){
$rand = rand(0,$nbrimg);
$code .= $rand;
$codeimg[] = $rand;
}
foreach($codeimg as $cle=>$valeur) {
$imagecode .= '';
}
$_SESSION['code'] = $code;
echo $imagecode.'';
?>

</form>
* Champs Obligatoires

</td>
</tr>
</tbody>

Avec la ligne 'session_start();', j'ai une erreur sur cette ligne la, si je la commente, que je tape ou pas le code de vérification, sa passe.

Une idée du problème ?

43 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 avril 2006 à 12:23
hello,

session_start, comme tou ce qui envoie des en-têtes HTTP, ne peut PAS être lancé APRES que des en-têtes aient déjà été envoyés. C'est là ton problème.
La moindre ligne de html empêche un session_start (entre autres choses).
Voir ob_start () et cie.
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
3 avril 2006 à 12:26
et pour que sa fonctionne, je doit faire quoi ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 avril 2006 à 12:35
T'as qu'à utiliser ce code :
http://www.phpcs.com/codes/PROTEGEZ-VOS-BASES-REQUETES-MASSIVES_31860.aspx

ou le décortiquer pour comprendre comment il fonctionne.
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
3 avril 2006 à 13:06
ben ce code est mieux, mais sa fonctionne toujours pas, quand j copie le code dans le fichier, j'ai 2 message d'eeure avec sa ob_start(); session_start();

comment mètre un code comme sa quand on as plisieur chause dans son code et que le formulaire est imbriqué dans un autre tableau ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 avril 2006 à 13:14
quels messages d'erreur as-tu ?
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
3 avril 2006 à 14:28
message d'erreur avec session_start(); comme avec l'autre scripte, si
je la comment j'ai plus le message d'erreur et tous passe sans le code
anti-flood.
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
3 avril 2006 à 22:13
Vraiment personne pour m'aider ?

svp aidé moi....
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 avril 2006 à 22:58
Salut,

faudrait rechercher un peu aussi...

C'est l'erreur qui revient le plus souvent sur le forum (au moins une fois par semaine).

Donc non nous ne te ferons pas un code tout fait...

Headers already sent

a +
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
3 avril 2006 à 23:18
ha oui, ta réponse me fait penser à ...

Développeur PHP rime avec rétention d'information....
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 avril 2006 à 23:21
ma réponse devrait plutôt te faire penser à "comment faire une recherche sur un forum au lieu de demander une réponse toute cuite"...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
3 avril 2006 à 23:23
exacte, comment faire une recherche sur un forum avec ce problème ????
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
3 avril 2006 à 23:27
Tu peux utiliser le forum de recherche en haut en tapant par exemple "headers already sent"... je suis certain que t'auras des réponses...

Ensuite la charte ne fait pas de mal : http://www.phpcs.com/reglement.aspx

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 00:11
Et quand on a plus de message d'erreur et que mème sans code de confirmation anti-flood sa fonctionne pas, on tape quoi dan le moteur de recherche du forum ?!?!
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
4 avril 2006 à 01:25
Bah là dans ce cas on peut se pencher sur ton problème...

Commence par mettre l'error_reporting à E_ALL dans le php.ini afin que des erreurs apparaîssent (ou puissent apparaître).

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 avril 2006 à 07:40
On fait des recherches, on réflêchit, on n'espère pas que la réponse nous tombt tout crue dans le bec, oui...ET on prend un autre ton. Merci.
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 09:32
bon ben j'arrive a atre chause, que je tape le bon code ou pas, j'ai quand mème un code erroné...

Vous connessssez pas un anti-flood pour mon formulaire qui fonctionne ?????
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 avril 2006 à 09:35
L'anti-flood dont je t'a donné l'url (qui est celui d'Anthomicro) fonctionne très bien. Je le sais, je l'ai utilisé! Si un truc foire, ça vient de ton code, et de la façon d'intégrer le code d'anthomicro. Alors montre ton code.
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 09:50
<?php
ob_start();
session_start();
header('content-type:text/html;charset=iso-8859-1');
if(isset($_POST['code']) AND isset($_SESSION['code']))
{
if($_POST['code']===$_SESSION['code'])
{
echo 'Identification rИussie

';
}
else
{
echo 'Identification ИchouИe

';
}
unset($_SESSION['code']);
}
$passe='';
$caracteres = 'abcdefghijklmnspqrstuvwxyz123456789'; //le 0 et o ne sont pas prИsents Ю cause des confusions frИquentes
$cnt=strlen($caracteres)-1;
for($i = 0; $i < 7; $i++)
{
$passe.=$caracteres{mt_rand(0,$cnt)};
}
$_SESSION['code']=$passe;
ob_flush();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>UsedTrucks</title>
<meta name="GENERATOR" content="Quanta Plus" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="UsedTrucks" />
<meta name="KEYWORDS" content="linux, adminlinux, administrateur, os, suse, informatique, pc, internet, libre, logiciel, gratuit, windows" />
<link rel="stylesheet" type="text/css" href="ut.css" /><script type="text/javascript"></script>
<link rel="SHORTCUT ICON" href="img/ut2.gif"/>
</head>
<!--Tableau logo et banner-->

<!--Tableau menu-->
<? include("menuacceuil.php") ?>,

----

,

----

<? include("vitessepages.php") ?>

<!--Titre de la page en cours-->

D&#233;poser une demande

<!--Tableau du centre de la page-->
<script>
function limiteur()
{
maximum = 250;
champ = document.demande.message;
indic = document.demande.indicateur;

if (champ.value.length > maximum)
champ.value = champ.value.substring(0, maximum);
else
indic.value = maximum - champ.value.length;
}
</script>
<form name="demande" method="POST" action="/formulaire/verifdemande.php">
<table id="formulaire" border="0">

----, Non:

</td>*,

----

Pr&#233;nom:, *,

----

Tel/GSM, ,

----

E-mail:, *,

----

Annonce:

<textarea name="message" cols=60 rows=4 onKeyDown="limiteur();" onKeyUp="limiteur();"></textarea>&nbsp;
Il vous reste caract&#232;res.,

----

<label for="code">Code :</label>

</form>
* Champs Obligatoires

</td>
</tr>
</tbody>
</table>

</html>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 avril 2006 à 10:03
Et le code vérifiant le code du picto ?
Tu es en register_globals à Off ou à On ?
0
administrateurlinux Messages postés 34 Date d'inscription jeudi 23 mars 2006 Statut Membre Dernière intervention 4 avril 2006
4 avril 2006 à 10:11
quoi quoi quoi ?!?!?!? le code de vérification du picto !!!! j'ai juste 2 fichiers, un index et un image...

register_globals à off ou à on : je sais pas ou je voie sa....

ps: un grand merci de bien vouloir m'aider....
0
Rejoignez-nous