Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
@Supersnail Thnx voor het tellen.
Graag gedaan, is hier toch helpmij.nl
een php is heel leuk, maar kost gewoon veel tijd om te leren.
theorie:
in je form komt een xtra input bv name="captcha".
Ook komt er een image <img src="NaarCaptchaPhp" alt="Captcha Image" />.
NaarCaptchaPhp dit script genereert een string van cijfers en letters.
Die string wordt in bv $_SESSION['captcha'] geplaatst.
En het script maakt een maakt een image die hij retour stuurt aan je <img src="" />
Op pagina waar je de $_POST gegevens verwerkt, daar kijk je of $_POST['captcha'] hetzelfde is als wat in $_SESSION['captcha'] is opgeslagen.
Komen die 2 niet overeen, dan is het of een invoerfout van de gebruiker of een spambot.
<h2><i>Plaats een reactie:</i></h2>
<form name="gastenboek" method="post" action="verwerk.php">
<label for="voornaam">Voornaam:</label>
<input type="text" id="voornaam" name="voornaam" /><br />
<label for="achternaam">Achternaam:</label>
<input type="text" id="achternaam" name="achternaam" /><br />
[COLOR="magenta"]<label for="code">Typ de code:</label>
<input name="code" type="text" /><img src="captcha.php" alt="Typ de code." />[/COLOR]<br />
<label for="bericht">Bericht:</label><br />
<textarea id="bericht" name="bericht" rows="10" cols="30"></textarea><br /><br />
<input type="submit" value="Verzenden" name="submit" />
</form><br />
<hr>
<?php include('reacties.txt');?>
<?php
// Remove whitespaces from strings
$Vname = trim(strip_tags($_POST['voornaam']));
$Aname = trim(strip_tags($_POST['achternaam']));
$name = $Vname.$Aname;// create string to use in if statement
$bericht = trim($_POST['bericht']);
// Check if strings are empty
// or tags are used
// or a url has been added to the message
if(strlen($bericht) != strlen(strip_tags($bericht)) || preg_match('/http:/', $bericht) || empty($bericht) || empty($name) ){
// refresh header in 3 seconds
header('Refresh: 1; url=Gastenboek.php');
// output to screen untill header refresh
// Hier zou je een pagina kunnen includen om een error te melden.
echo "<center><h1>Je wordt automatisch teruggestuurd.</h1><hr /></center>";
echo '<script>alert("Je hebt niet alles ingevuld");</script>';
exit();
} else {
// Create and clean up strings to use
$name = trim(htmlentities($Vname.' '.$Aname));
$bericht = htmlentities($bericht);
$data = 'reacties.txt';
$file = fopen($data, "a");
// Set message date
$datum = strftime("%d-%m-%y %H:%M", time());
// Prepare data to wrote to file
$input = "<b>Geschreven door:</b> <i>$name</i> <b>Tijd:</b> <i>$datum</i><br><br>
<b>Bericht:</b><br>$bericht<br><br><hr>\n";
// Write input to file
fputs($file, $input);
// Close file
fclose($file);
// redirect header
header('Location: Gastenboek.php');
exit();
}
?>
<?php
ob_start();
session_start();
if(!$_POST['submit']){
echo "<form method=\"post\" action=\"captcha.php\">\n";
echo "<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n";
echo "<tr><td>Type The Letters You See Below Into the Box</td></tr>\n";
echo "<tr><td align=\"center\"><img src=\"image.php\"></td></tr>\n";
echo "<tr><td align=\"right\"><input type=\"text\" name=\"image\"></td></tr>\n";
echo "<tr><td align=\"right\"><input type=\"submit\" name=\"submit\" value=\"Check CAPTCHA\"></td></tr>\n";
echo "</table></form>\n";
}else {
$image = $_POST['image'];
if($image == $_SESSION['string']){
echo "<b>Great success!</b>\n";
}else {
echo "<em>Failure!</em>\n";
}
}
ob_end_flush();
?>
<?php
session_start();
$img = imagecreatetruecolor(80,30);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$grey = imagecolorallocate($img,150,150,150);
$red = imagecolorallocate($img, 255, 0, 0);
$pink = imagecolorallocate($img, 200, 0, 150);
function randomString($length){
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$str = "";
$i = 0;
while($i <= $length){
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$str = $str . $tmp;
$i++;
}
return $str;
}
for($i=1;$i<=rand(1,5);$i++){
$color = (rand(1,2) == 1) ? $pink : $red;
imageline($img,rand(5,70),rand(5,20), rand(5,70)+5,rand(5,20)+5, $color);
}
imagefill($img, 0, 0, $white);
$string = randomString(rand(7,10));
$_SESSION['string'] = $string;
imagettftext($img, 11, 0, 10, 20, $black, "calibri.ttf", $string);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
<h2><i>Plaats een reactie:</i></h2>
<form name="gastenboek" method="post" action="verwerk.php">
<label for="voornaam">Voornaam:</label>
<input type="text" id="voornaam" name="voornaam" /><br />
<label for="achternaam">Achternaam:</label>
<input type="text" id="achternaam" name="achternaam" /><br />
<label for="code">Typ de code:</label>
<input name="code" type="text" />
<img src="captcha.php" alt="Captcha image" /><br />
<label for="bericht">Bericht:</label><br />
<textarea id="bericht" name="bericht" rows="10" cols="30"></textarea><br /><br />
<input type="submit" value="Verzenden" name="submit" />
</form><br />
<hr>
<?php include('reacties.txt');?>
<?php
session_start();
// Remove whitespaces from strings
$Vname = trim(strip_tags($_POST['voornaam']));
$Aname = trim(strip_tags($_POST['achternaam']));
$name = $Vname.$Aname;// create string to use in if statement
$bericht = trim($_POST['bericht']);
// Captcha check
if($_POST['code'] == $_SESSION['capCode']) {
// This code will run when the captcha is okey
// Check if strings are empty
// or tags are used
// or a url has been added to the message
if(strlen($bericht) != strlen(strip_tags($bericht)) || preg_match('/http:/', $bericht) || empty($bericht) || empty($name) ){
// refresh header in 3 seconds
header('Refresh: 1; url=Gastenboek.php');
// output to screen untill header refresh
// Hier zou je een pagina kunnen includen om een error te melden.
echo "<center><h1>Je wordt automatisch teruggestuurd.</h1><hr /></center>";
echo '<script>alert("Je hebt niet alles ingevuld");</script>';
exit();
} else {
// Create and clean up strings to use
$name = trim(htmlentities($Vname.' '.$Aname));
$bericht = htmlentities($bericht);
$data = 'reacties.txt';
$file = fopen($data, "a");
// Set message date
$datum = strftime("%d-%m-%y %H:%M", time());
// Prepare data to wrote to file
$input = "<b>Geschreven door:</b> <i>$name</i> <b>Tijd:</b> <i>$datum</i><br><br>
<b>Bericht:</b><br>$bericht<br><br><hr>\n";
// Write input to file
fputs($file, $input);
// Close file
fclose($file);
// redirect header
header('Location: Gastenboek.php');
exit();
}
} else {
// This code will run when the captcha has faild!!!!!
// refresh header in 3 seconds
header('Refresh: 1; url=Gastenboek.php');
// output to screen untill header refresh
// Hier zou je een pagina kunnen includen om een error te melden.
echo "<center><h1>Je wordt automatisch teruggestuurd.</h1><hr /></center>";
echo '<script>alert("Je hebt de code niet juist over getypt");</script>';
exit();
}
?>
<?php
session_start();
// Hier kun je de grootte van je image aanpassen.
// Let wel, dit vergroot alleen je image, niet de letter grote
$x = 80;
$y = 30;
// Hier kun je de grootte van je letters bepalen
$fontSize = 11;
$img = imagecreatetruecolor($x,$y);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$grey = imagecolorallocate($img,150,150,150);
$red = imagecolorallocate($img, 255, 0, 0);
$pink = imagecolorallocate($img, 200, 0, 150);
function randomString($length){
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$str = "";
$i = 0;
while($i <= $length){
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$str = $str . $tmp;
$i++;
}
return $str;
}
for($i=1;$i<=rand(1,5);$i++){
$color = (rand(1,2) == 1) ? $pink : $red;
imageline($img,rand(5,($x-10),rand(5,($y-10)), rand(5,($x-10))+5,rand(5,($y-10))+5, $color);
}
imagefill($img, 0, 0, $white);
$string = randomString(rand(7,10));
$_SESSION['capCode'] = $string;
imagettftext($img, $fontSize, 0, 10, 20, $black, "calibri.ttf", $string);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
Je had het bijna werken goed werken, je moest alleen de check nog doen ik je
verwerking script.
Ik heb het niet getest, maar ik denk dat het zo wel aardig moet werken.
Ik heb links en rechts nog wat info toegevoegd om te zien wat ik gedaan heb.
Gastenboek.php
PHP:<h2><i>Plaats een reactie:</i></h2> <form name="gastenboek" method="post" action="verwerk.php"> <label for="voornaam">Voornaam:</label> <input type="text" id="voornaam" name="voornaam" /><br /> <label for="achternaam">Achternaam:</label> <input type="text" id="achternaam" name="achternaam" /><br /> <label for="code">Typ de code:</label> <input name="code" type="text" /> <img src="captcha.php" alt="Captcha image" /><br /> <label for="bericht">Bericht:</label><br /> <textarea id="bericht" name="bericht" rows="10" cols="30"></textarea><br /><br /> <input type="submit" value="Verzenden" name="submit" /> </form><br /> <hr> <?php include('reacties.txt');?>
verwerk.php
PHP:<?php session_start(); // Remove whitespaces from strings $Vname = trim(strip_tags($_POST['voornaam'])); $Aname = trim(strip_tags($_POST['achternaam'])); $name = $Vname.$Aname;// create string to use in if statement $bericht = trim($_POST['bericht']); // Captcha check if($_POST['code'] == $_SESSION['capCode']) { // This code will run when the captcha is okey // Check if strings are empty // or tags are used // or a url has been added to the message if(strlen($bericht) != strlen(strip_tags($bericht)) || preg_match('/http:/', $bericht) || empty($bericht) || empty($name) ){ // refresh header in 3 seconds header('Refresh: 1; url=Gastenboek.php'); // output to screen untill header refresh // Hier zou je een pagina kunnen includen om een error te melden. echo "<center><h1>Je wordt automatisch teruggestuurd.</h1><hr /></center>"; echo '<script>alert("Je hebt niet alles ingevuld");</script>'; exit(); } else { // Create and clean up strings to use $name = trim(htmlentities($Vname.' '.$Aname)); $bericht = htmlentities($bericht); $data = 'reacties.txt'; $file = fopen($data, "a"); // Set message date $datum = strftime("%d-%m-%y %H:%M", time()); // Prepare data to wrote to file $input = "<b>Geschreven door:</b> <i>$name</i> <b>Tijd:</b> <i>$datum</i><br><br> <b>Bericht:</b><br>$bericht<br><br><hr>\n"; // Write input to file fputs($file, $input); // Close file fclose($file); // redirect header header('Location: Gastenboek.php'); exit(); } } else { // This code will run when the captcha has faild!!!!! // refresh header in 3 seconds header('Refresh: 1; url=Gastenboek.php'); // output to screen untill header refresh // Hier zou je een pagina kunnen includen om een error te melden. echo "<center><h1>Je wordt automatisch teruggestuurd.</h1><hr /></center>"; echo '<script>alert("Je hebt de code niet juist over getypt");</script>'; exit(); } ?>
image.php
PHP:<?php session_start(); // Hier kun je de grootte van je image aanpassen. // Let wel, dit vergroot alleen je image, niet de letter grote $x = 80; $y = 30; // Hier kun je de grootte van je letters bepalen $fontSize = 11; $img = imagecreatetruecolor($x,$y); $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); $grey = imagecolorallocate($img,150,150,150); $red = imagecolorallocate($img, 255, 0, 0); $pink = imagecolorallocate($img, 200, 0, 150); function randomString($length){ $chars = "abcdefghijkmnopqrstuvwxyz023456789"; srand((double)microtime()*1000000); $str = ""; $i = 0; while($i <= $length){ $num = rand() % 33; $tmp = substr($chars, $num, 1); $str = $str . $tmp; $i++; } return $str; } for($i=1;$i<=rand(1,5);$i++){ $color = (rand(1,2) == 1) ? $pink : $red; imageline($img,rand(5,($x-10),rand(5,($y-10)), rand(5,($x-10))+5,rand(5,($y-10))+5, $color); } imagefill($img, 0, 0, $white); $string = randomString(rand(7,10)); $_SESSION['capCode'] = $string; imagettftext($img, $fontSize, 0, 10, 20, $black, "calibri.ttf", $string); header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>
<img src="captcha.php" alt="Captcha image" /><br /> file fout
<img src="image.php" alt="Captcha image" /><br />
of je rename je image.php naar captcha.php beide los het op.
ga eens via je url naar de captcha.php. kijken os dat script uberhaupt werkt.
Als het werkt, dan zie je een afbeelding.
<?php
session_start();
// Hier kun je de grootte van je image aanpassen.
// Let wel, dit vergroot alleen je image, niet de letter grote
$x = 80;
$y = 30;
// Hier kun je de grootte van je letters bepalen
$fontSize = 11;
$img = imagecreatetruecolor($x,$y);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$grey = imagecolorallocate($img,150,150,150);
$red = imagecolorallocate($img, 255, 0, 0);
$pink = imagecolorallocate($img, 200, 0, 150);
function randomString($length){
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$str = "";
$i = 0;
while($i <= $length){
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$str = $str . $tmp;
$i++;
}
return $str;
}
for($i=1;$i<=rand(1,5);$i++){
$color = (rand(1,2) == 1) ? $pink : $red;
imageline($img,rand(5,($x-10)),rand(5,($y-10)), rand(5,($x-10))+5,rand(5,($y-10))+5, $color);
}
imagefill($img, 0, 0, $white);
$string = randomString(rand(7,10));
$_SESSION['capCode'] = $string;
imagettftext($img, $fontSize, 0, 10, 20, $black, "arial.ttf", $string);
//header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
Heb captcha.php ff in Netbeans geopend.
Blijkt dat ik een ) vergeten was op regel 36
En je moet nog een font file in de folder zetten.
Het script gebruikt arial.ttf
Die kun je copy & past uit C:\Windows\Fonts
Het is een standaart font geleverd bij windows.
Dus als je de font in de map hebt staan dan zou het onder staande moeten werken!
PHP:<?php session_start(); // Hier kun je de grootte van je image aanpassen. // Let wel, dit vergroot alleen je image, niet de letter grote $x = 80; $y = 30; // Hier kun je de grootte van je letters bepalen $fontSize = 11; $img = imagecreatetruecolor($x,$y); $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); $grey = imagecolorallocate($img,150,150,150); $red = imagecolorallocate($img, 255, 0, 0); $pink = imagecolorallocate($img, 200, 0, 150); function randomString($length){ $chars = "abcdefghijkmnopqrstuvwxyz023456789"; srand((double)microtime()*1000000); $str = ""; $i = 0; while($i <= $length){ $num = rand() % 33; $tmp = substr($chars, $num, 1); $str = $str . $tmp; $i++; } return $str; } for($i=1;$i<=rand(1,5);$i++){ $color = (rand(1,2) == 1) ? $pink : $red; imageline($img,rand(5,($x-10)),rand(5,($y-10)), rand(5,($x-10))+5,rand(5,($y-10))+5, $color); } imagefill($img, 0, 0, $white); $string = randomString(rand(7,10)); $_SESSION['capCode'] = $string; imagettftext($img, $fontSize, 0, 10, 20, $black, "arial.ttf", $string); //header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>
<?php
session_start();
// Hier kun je de grootte van je image aanpassen.
// Let wel, dit vergroot alleen je image, niet de letter grote
$x = 80;
$y = 30;
// Hier kun je de grootte van je letters bepalen
$fontSize = 11;
$img = imagecreatetruecolor($x,$y);
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
$grey = imagecolorallocate($img,150,150,150);
$red = imagecolorallocate($img, 255, 0, 0);
$pink = imagecolorallocate($img, 200, 0, 150);
function randomString($length){
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$str = "";
$i = 0;
while($i <= $length){
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$str = $str . $tmp;
$i++;
}
return $str;
}
for($i=1;$i<=rand(1,5);$i++){
$color = (rand(1,2) == 1) ? $pink : $red;
imageline($img,rand(5,($x-10)),rand(5,($y-10)), rand(5,($x-10))+5,rand(5,($y-10))+5, $color);
}
imagefill($img, 0, 0, $white);
$string = randomString(rand(7,10));
$_SESSION['capCode'] = $string;
imagettftext($img, $fontSize, 0, 10, 20, $black, "arial.ttf", $string);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
dit werkt bij mij!
PHP:<?php session_start(); // Hier kun je de grootte van je image aanpassen. // Let wel, dit vergroot alleen je image, niet de letter grote $x = 80; $y = 30; // Hier kun je de grootte van je letters bepalen $fontSize = 11; $img = imagecreatetruecolor($x,$y); $white = imagecolorallocate($img, 255, 255, 255); $black = imagecolorallocate($img, 0, 0, 0); $grey = imagecolorallocate($img,150,150,150); $red = imagecolorallocate($img, 255, 0, 0); $pink = imagecolorallocate($img, 200, 0, 150); function randomString($length){ $chars = "abcdefghijkmnopqrstuvwxyz023456789"; srand((double)microtime()*1000000); $str = ""; $i = 0; while($i <= $length){ $num = rand() % 33; $tmp = substr($chars, $num, 1); $str = $str . $tmp; $i++; } return $str; } for($i=1;$i<=rand(1,5);$i++){ $color = (rand(1,2) == 1) ? $pink : $red; imageline($img,rand(5,($x-10)),rand(5,($y-10)), rand(5,($x-10))+5,rand(5,($y-10))+5, $color); } imagefill($img, 0, 0, $white); $string = randomString(rand(7,10)); $_SESSION['capCode'] = $string; imagettftext($img, $fontSize, 0, 10, 20, $black, "arial.ttf", $string); header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>
Ja, bij mij nu ook. Had het haakje op de verkeerde plaats gezet!
Die stomme haakjes ook altijd :evil:
Zorg dat je een php editor krijg. bv NetBeans Download Site
Scheelt een heel stuk, die geven aan als je iets vergeet en helpen je met coden.
En wat wil je laten zakken? De image in je form? want dan moet je er een <br /> voor de <img.......src="cap..... zetten. Dan zakt de image 1 regel
DAn zou je het in divs moeten verpakken en met css op zijn plaats zetten
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.