Scoutnet vzw

We connect scouts!
Het is momenteel 04 Mei 2024 13:51

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 14 berichten ] 
Auteur Bericht
 Titel: captcha
BerichtGeplaatst: 09 Okt 2006 15:33 
Offline
 
 

Geregistreerd: 17 Mei 2003 23:00
Berichten: 142
Hoi iedereen,

Ik probeer de "captcha" werkende te krijgen op onze scoutswebsite om alle dagelijkse spam tegen te houden maar het wil maar niet lukken, ik krijg bij het openen van het formulier allemaal vreemde tekens waar de afbeelding van "captcha" moet komen te staan.

Ik heb de code captcha.php ingevoegd in mijn verzendformulier .
Een pagina captcha.html aangemaakt en op de server gezet.
En een pagina write.php op de server gezet.

maar het werkt niet.
Kan iemand me helpen?

http://www.scoutsdonk.be/mailform.php

Ik heb de volgende code's:

captcha.php

Code:
<?php

session_start();

header("Content-Type: image/png");

$im = imagecreate(62, 35);
$randomfrontcolor = imagecolorallocate($im, rand(255,255), rand(255,255), rand(255,255));
$randombackcolor = imagecolorallocate($im, rand(0,0), rand(0,0), rand(0,0));
$left = rand(8, 8);
$top = rand(8, 8);

$veristring = substr(md5(rand(0,9999)), 17, 5);
$_SESSION['verificationcode'] = $veristring;

imagefill($im, 0, 0, $randombackcolor);
imagestring($im, 15, $left, $top, $veristring, $randomfrontcolor);
imagepng($im);
imagedestroy($im);
?>


write.php:
Code:
<?php
session_start();

$redirect= $_POST['referer'];
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])


echo "Goedzo - U heeft de juiste code ingevuld";
else
echo "U heeft een onjuiste code ingevuld";
?>


captcha.html:
Code:
<html>
<head>
<title>captcha</title>
</head>
<body>
<form method="post" action="write.php">
<input class="input" type="text" name="norobot">
<img src="captcha.php"><input type="submit" value="Toevoegen">
</form>
</body>
</html>



Mailform.php:

Code:
<table width="100%" ><tr>
      <td height="413" valign="top"><p align="left">&nbsp;</p>       
        <form name='form1' method='post' action='index.php?page=mailformsend'>
          <table width='300' border='0' align="left">
      <tr bgcolor="#E0DFE3">
        <td colspan='2'><p align='left' class="style1"><b><font size='2'>Contact</font></b></p></td>
      </tr>
       <tr bgcolor="#E0DFE3">
        <td width='100%' bgcolor="#E0DFE3" class="style1"><p class="style1">Naam </p></td>
        <td width='100%'><input name='naam' type='text' size='45'>
        </td>
      </tr>
     <tr bgcolor="#E0DFE3">
        <td width='30%' bgcolor="#E0DFE3" class="style1"><p class="style1">Email </p></td>
        <td width='70%'><input name='email' type='text' size='45'>
        </td>
      </tr>
     <tr bgcolor="#E0DFE3">
        <td width='30%' bgcolor="#E0DFE3" class="style1"><p class="style1">Onderwerp </p></td>
        <td width='70%'><input name='onderwerp' type='text' size='45'>
        </td>
      </tr>
      <tr bgcolor="#E0DFE3">
        <td width='30%' bgcolor="#E0DFE3" class="style1"><p class="style1">Bericht </p></td>
        <td width='70%'><span class="style1">
          <textarea rows='9' name='bericht' cols='35'></textarea>
        </span></td>
      </tr>
      <tr bgcolor="#E0DFE3">
        <td colspan='2'>

<?php

session_start();

header("Content-Type: image/png");

$im = imagecreate(62, 35);
$randomfrontcolor = imagecolorallocate($im, rand(255,255), rand(255,255), rand(255,255));
$randombackcolor = imagecolorallocate($im, rand(0,0), rand(0,0), rand(0,0));
$left = rand(8, 8);
$top = rand(8, 8);

$veristring = substr(md5(rand(0,9999)), 17, 5);
$_SESSION['verificationcode'] = $veristring;

imagefill($im, 0, 0, $randombackcolor);
imagestring($im, 15, $left, $top, $veristring, $randomfrontcolor);
imagepng($im);
imagedestroy($im);
?>

</td>
      </tr>
      <tr bgcolor="#E0DFE3">
        <td colspan='2'><input type='submit' name='submit' value='Verstuur'>
        </td>
      </tr>
    </table>
          <div align="left"></div>
                 </form>         
  </table>



Hartelijk dank.


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 09 Okt 2006 16:16 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
Er staan 2 fouten in mailform.php:
> Een session_start(); moét altijd boveaan in je PHP-code staan: er mag dus nog niks van output naar de browser gestuurd zijn (ook geen HTML-code).
> Het is de bedoeling dat je in mailform.php de captcha.php oproept als afbeelding.

Verander dus je code van mailform.php naar iets als het volgende (ik heb er meteen nog een aantal HTML-fouten uit gehaald):
Code:
<?php

session_start();

?>

<table width="100%" >
  <tr>
    <td height="413" valign="top">
      <form name="form1" method="post" action="index.php?page=mailformsend">
        <table width="300" border="0" align="left">
          <tr bgcolor="#E0DFE3">
            <td colspan="2"><p align="left" class="style1"><strong><font size="2">Contact</font></strong></p></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="100%" bgcolor="#E0DFE3" class="style1"><p class="style1">Naam</p></td>
            <td width="100%"><input name="naam" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%" bgcolor="#E0DFE3" class="style1"><p class="style1">Email</p></td>
            <td width="70%"><input name="email" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%" bgcolor="#E0DFE3" class="style1"><p class="style1">Onderwerp</p></td>
            <td width="70%"><input name="onderwerp" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%" bgcolor="#E0DFE3" class="style1"><p class="style1">Bericht </p></td>
            <td width="70%"><span class="style1"><textarea rows="9" name="bericht" cols="35"></textarea></span></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td colspan="2"><img src="captcha.php" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td colspan="2"><input type="submit" name="submit" value="Verstuur" /></td>
          </tr>
        </table>
      </form>
    </td>
  </tr>
</table>


To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 09 Okt 2006 17:01 
Offline
 
 

Geregistreerd: 17 Mei 2003 23:00
Berichten: 142
Hoi To,

Ziet er schitterend uit, ik ontbreek nu wel de knop om de code in te voeren , kan dat zijn?

Alvast al hartelijk dank voor al je moeite !

http://www.scoutsdonk.be/mailform.php


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 09 Okt 2006 18:39 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
lainke schreef:
Hoi To,

Ziet er schitterend uit, ik ontbreek nu wel de knop om de code in te voeren , kan dat zijn?

Inderdaad. Ziehier een versie mét invoerveld voor de captcha:

Code:
<?php

session_start();

?>

<table width="100%">
  <tr>
    <td height="413" valign="top">
      <form name="form1" method="post" action="index.php?page=mailformsend">
        <table width="300" border="0" align="left">
          <tr bgcolor="#E0DFE3">
            <td colspan="2"><p align="left" class="style1"><strong><font size="2">Contact</font></strong></p></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="100%" bgcolor="#E0DFE3" class="style1"><p class="style1">Naam</p></td>
            <td width="100%"><input name="naam" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%" bgcolor="#E0DFE3" class="style1"><p class="style1">Email</p></td>
            <td width="70%"><input name="email" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%" bgcolor="#E0DFE3" class="style1"><p class="style1">Onderwerp</p></td>
            <td width="70%"><input name="onderwerp" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%" bgcolor="#E0DFE3" class="style1"><p class="style1">Bericht </p></td>
            <td width="70%"><span class="style1"><textarea rows="9" name="bericht" cols="35"></textarea></span></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td width="30%"><img src="captcha.php" /></td>
            <td width="70%"><input name="norobot" type="text" size="45" /></td>
          </tr>
          <tr bgcolor="#E0DFE3">
            <td colspan="2"><input type="submit" name="submit" value="Verstuur" /></td>
          </tr>
        </table>
      </form>
    </td>
  </tr>
</table>


To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 09 Okt 2006 22:13 
Offline
 
 

Geregistreerd: 17 Mei 2003 23:00
Berichten: 142
TO,

Heb nu ook het invoerveld.

Maar is het normaal dat men een bericht kan versturen zonder de code in te geven, is deed een test en hij verstuurt zonder de code te hebben ingevuld ?

Bedankt


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 09 Okt 2006 23:29 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
De controle gebeurt van je ingevoerde waarden gebeurt in "index.php?page=mailformsend" (in jouw geval dus "mailformsend.php"). In die PHP-code moet het stukje komen van write.php:

Code:
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])


echo "Goedzo - U heeft de juiste code ingevuld";
else
echo "U heeft een onjuiste code ingevuld";

Begrijp je?

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 15:44 
Offline
 
 

Geregistreerd: 17 Mei 2003 23:00
Berichten: 142
Hoi To,

Blijkbaar doe ik nog iets verkeerd, want na het invullen van gegevens in het formulier en dan op verzenden klik geeft hij een melding dat ik een verkeerde code heb ingevuld.
Ofwel zit ik ergens met dubbele codes in mijn script ?

bedankt alvast !

Code:
<?php
session_start();
?>
<table width="100%" >
  <tr>
    <td height="10" valign="top"bgcolor="#E0DFE3" class="style1"><div align="left"><strong>Contact</strong> </div>
</table>
<table width="100%" >
  <tr>
    <td width="28%" height="196" valign="top"><p align="left"><br><img name="archief" src="images/35.jpg" width="260" height="195" alt="Scouts Donk">   
    <td width="72%" align="center" valign="top"> <div align="left"><br>
    <?php
echo("
<p>
");
//Als 1 van de velden WEL leeg is
if($_POST[naam] == "" OR $_POST[email] == "" OR $_POST[onderwerp] == "" OR $_POST[bericht] == ""){
echo("
<font face='Arial' size='2' color='#21536A'><br>Bericht niet verzonden!</font>
<font face='Arial' size='2' color='#ff0000'><br><br><b>U moet alle velden invullen!</b></font>
");
}
else {
//Als de velden niet leeg zijn!//
$joumail = "lainke@skynet.be";
$jounaam = "Lainke";
$ow = "Een berichtje van de website!";
mail("$jounaam <$joumail>","$ow","Beste $jounaam,
Je hebt een bericht ontvangen van ".$_POST['naam']."

GEGEVENS:
Naam: ".$_POST['naam']."
Email: ".$_POST['email']."
Onderwerp: ".$_POST['onderwerp']."
IP: ".$_SERVER['REMOTE_ADDR']."
Tijdstip: ".date("d-m-Y H:i")."
Bericht: ".$_POST['bericht']."

","From: ".$_POST['naam']." <".$_POST['email'].">");
echo("
<font face='Arial' size='2' color='#21536A'><b>BEDANKT !</b><br>
</font> <br>
<font face='Arial' size='2' color='#21536A'>We hebben je bericht goed ontvangen!</font> <br>
<font face='Arial' size='2' color='#21536A'>Indien nodig nemen we contact me je op.</font>
<p>

");
}
echo("
</font>
<p>
");
?>

<?php
$redirect= $_POST['referer'];
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])
echo "Goedzo - U heeft de juiste code ingevuld";
else
echo "U heeft een onjuiste code ingevuld";
?>
    </font></div>
</table>
<table width="100%"  border="0" cellpadding="0">
  <tr>
    <td bgcolor="#E0DFE3"><?     
$bestand="teller/tellermailformsend.txt";   
$fopen=fopen($bestand,"r");   
$tel=fread($fopen,4096);   
fclose($fopen);   
$tel=$tel+1;   
$fopen=fopen($bestand,"w+");   
fwrite($fopen,$tel);   
fclose($fopen);   
echo "<span style='color: #21536A;'>Deze pagina werd $tel maal bekeken sinds 20 juni 2005</span>";
?>
    <div align="right"></div></td>
  </tr>
</table>


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 16:29 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
in je eerste post zet je dit in de session:

Code:
$_SESSION['verificationcode']


en in je laatste post probeer je dit er af te halen:
Code:
$_SESSION['randomnr2']


kijk eens na of hetgeen dat je er op zit ook hetgeen is dat je er af wil halen


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 17:23 
Offline
 
 

Geregistreerd: 17 Mei 2003 23:00
Berichten: 142
Hoi Natrium,

Zoals je nu een antwoord geeft kan ik er echt niet aan uit, TO gaf me meteen de oplossing en daar leer ik ook iets uit, toch bedankt voor je reactie maar ik ben nu geen stap verder hoor.


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 18:32 
Offline
 
 

Geregistreerd: 17 Mei 2003 23:00
Berichten: 142
Is het nu de bedoeling dat ik ergens een stukje code wegneem of er juist eentje moet bijzetten ?

bedankt alvast


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 19:03 
Offline
Site Admin
Site Admin
Gebruikers-avatar

Geregistreerd: 17 Jul 2002 23:00
Berichten: 1522
Woonplaats: Wetteren
Ik *denk* dat het met de volgende code moet lukken (niet zelf uitgetest):
Code:
<?php

session_start();

?>
<table width="100%">
  <tr>
    <td height="10" valign="top"bgcolor="#E0DFE3" class="style1"><div align="left"><strong>Contact</strong> </div></td>
  </tr>
</table>
<table width="100%">
  <tr>
    <td width="28%" height="196" valign="top"><p align="left"><br /><img name="archief" src="images/35.jpg" width="260" height="195" alt="Scouts Donk" /></td>
    <td width="72%" align="center" valign="top">
      <br />
      <?php
      echo("<p>");
      //Als 1 van de velden WEL leeg is
      if($_POST[naam] == "" OR $_POST[email] == "" OR $_POST[onderwerp] == "" OR $_POST[bericht] == ""){
        echo("\n  <br /><font face="Arial" size="2" color="#21536A">Bericht niet verzonden!</font>");
        echo("\n  <br />");
        echo("\n  <br /><font face="Arial" size="2" color="#ff0000"><strong>U moet alle velden invullen!</strong></font>");
      } elseif(md5($_POST["norobot"]) == $_SESSION["verificationcode"]) {
        echo("\n  <br /><font face="Arial" size="2" color="#21536A">Bericht niet verzonden!</font>");
        echo("\n  <br />");
        echo("\n  <br /><font face="Arial" size="2" color="#ff0000"><strong>U heeft een onjuiste code ingevuld!</strong></font>");
      } else {
        //Als de velden niet leeg zijn!
        $joumail = "lainke@skynet.be";
        $jounaam = "Lainke";
        $ow = "Een berichtje van de website!";
       
        $bericht = "Beste $jounaam,";
        $bericht .= "\nJe hebt een bericht ontvangen van " . $_POST["naam"] . ".";
        $bericht .= "\n";
        $bericht .= "\nGEGEVENS:";
        $bericht .= "\nNaam: " . $_POST["naam"];
        $bericht .= "\nEmail: " . $_POST["email"];
        $bericht .= "\nOnderwerp: " . $_POST["onderwerp"];
        $bericht .= "\nIP: " . $_SERVER["REMOTE_ADDR"];
        $bericht .= "\nTijdstip: " . date("d-m-Y H:i");
        $bericht .= "\nBericht: " . $_POST["bericht"];
       
        mail("$jounaam <$joumail>","$ow",,"From: ".$_POST["naam"]." <".$_POST["email"].">");
       
        echo("\n  <br /><font face="Arial" size="2" color="#21536A"><strong>BEDANKT !</strong></font>");
        echo("\n  <br />");
        echo("\n  <br /><font face="Arial" size="2" color="#21536A">We hebben je bericht goed ontvangen!</font>");
        echo("\n  <br /><font face="Arial" size="2" color="#21536A">Indien nodig nemen we contact me je op.</font>");
      }
      echo("\n<p>");
      ?>
    </td>
  </tr>
</table>
<table width="100%"  border="0" cellpadding="0">
  <tr>
    <td bgcolor="#E0DFE3">
      <?php
  $bestand="teller/tellermailformsend.txt";
  $fopen=fopen($bestand,"r");
  $tel=fread($fopen,4096);
  fclose($fopen);
  $tel=$tel+1;
  $fopen=fopen($bestand,"w+");
  fwrite($fopen,$tel);
  fclose($fopen);
  echo "<span style="color: #21536A;">Deze pagina werd $tel maal bekeken sinds 20 juni 2005</span>";
       ?>
    </td>
  </tr>
</table>


lainke schreef:
Hoi Natrium,

Zoals je nu een antwoord geeft kan ik er echt niet aan uit, TO gaf me meteen de oplossing en daar leer ik ook iets uit, toch bedankt voor je reactie maar ik ben nu geen stap verder hoor.

Lainke, je moet begrijpen dat we niet alle problemen in jouw plaats kunnen oplossen. Door zelf te zoeken, leer je des te meer bij. Als ik voor de meer dan 500 scoutsgroepen code moet beginnen schrijven om fouten op te lossen, kom ik met een full-time job nog niet toe.

Probeer stap voor stap vooruit te gaan. Daarbij kan het volgende zeker helpen:
> Maak werk van duidelijke programmacode, ook in je HTML-documenten. Een fout zoeken in een overzichtelijke code is véél gemakkelijker! Met http://validator.w3.org/ kan je zien of er fouten staan in je HTML-code.
> Wissel HTML niet te veel af met PHP; als je dat wel moet doen, zet je beter alles in PHP (en geef je HTML-code weer met het echo();-commando). Zo zal je code zeker overzichtelijker zijn. Gebruik ook \n (new line) om in HTML-regels die in PHP staan, toch in de HTML-versie op meerdere lijnen weer te geven.
> Op http://be.php.net vind je alle info over PHP-statements. En ook met Google geraak je al ver. En als je er toch nog niet aan uitkan, dan helpen we je hier graag verder, natuurlijk :wink:.

To


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 19:07 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
lainke schreef:
Hoi Natrium,

Zoals je nu een antwoord geeft kan ik er echt niet aan uit, TO gaf me meteen de oplossing en daar leer ik ook iets uit, toch bedankt voor je reactie maar ik ben nu geen stap verder hoor.


naar mijn mening leer je het niet door hapklare code over te nemen, maar door in het probleem te duiken.

Anyway:

In je eerste post staat dat je iets op de session gaat zetten:
(captcha.php)
Code:
$veristring = substr(md5(rand(0,9999)), 17, 5);
$_SESSION['verificationcode'] = $veristring;


in je laatste post met code staat dit:
Code:
if (md5($_POST['norobot']) == $_SESSION['randomnr2'])


Wat je volgens mij moet doen, is ofwel in captcha.php dit aanpassen:
Code:
$veristring = substr(md5(rand(0,9999)), 17, 5);
$_SESSION['randomnr2'] = $veristring;


ofwel dit aanpassen:
Code:
if (md5($_POST['norobot']) == $_SESSION['verificationcode'])



je probeert namelijk (voor zover ik kan zien) namelijk iets op de session met de ene key (verificationcode) en het er terug af te halen met de andere (randomnr2). Je zal dus niet van session halen wat je graag zou willen hebben.[/code]


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 10 Okt 2006 19:42 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
To schreef:
Probeer stap voor stap vooruit te gaan. Daarbij kan het volgende zeker helpen:
> Maak werk van duidelijke programmacode, ook in je HTML-documenten. Een fout zoeken in een overzichtelijke code is véél gemakkelijker! Met http://validator.w3.org/ kan je zien of er fouten staan in je HTML-code.
> Wissel HTML niet te veel af met PHP; als je dat wel moet doen, zet je beter alles in PHP (en geef je HTML-code weer met het echo();-commando). Zo zal je code zeker overzichtelijker zijn. Gebruik ook \n (new line) om in HTML-regels die in PHP staan, toch in de HTML-versie op meerdere lijnen weer te geven.
> Op http://be.php.net vind je alle info over PHP-statements. En ook met Google geraak je al ver. En als je er toch nog niet aan uitkan, dan helpen we je hier graag verder, natuurlijk Wink.


Ook handig:
- http://www.phphulp.nl
- http://www.phpfreakz.nl


Omhoog
 Profiel  
 
 Titel:
BerichtGeplaatst: 11 Okt 2006 7:12 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
hier nog een leuke verbetering (in captcha.php)

Code:
$verschillende_kleur = false;
while( ! $verschillende_kleur)
{
   $randomfrontcolor = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
   $randombackcolor = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));
   if ($randomfrontcolor == $randombackcolor)
   {
      $verschillende_kleur = false;
   }
   else
   {
      $verschillende_kleur = true;
   }
}


zorgt voor een echte randomkleur voor de tekst en de achtergrond.
Met een controle dat de tekstkleur en de achtergrondkleur niet hetzelfde zijn.


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 14 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 3 gasten


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.