Avatar billede Asky Forsker
12. januar 2024 - 09:40 Der er 6 kommentarer og
1 løsning

skjult felt

Til ekstra sikring af mine formularer opretter jeg et skjult tekstfelt ,som almindelige brugere ikke ser. men robotter gør.
Ideen er, hvis feltet er udfyldt, så er det en robot, der udfylder formularen, derfor skal mailen fra formularen ikke sendes.

til feltet t7 hører følgende kode:
<?php
function check_indput($t7) {
if (!empty($t7)) {die ("); }
}
?>
Kan det bruges?
Avatar billede ejvindh Ekspert
12. januar 2024 - 10:11 #1
Jeg tror nok jeg er lidt i tvivl om, hvad du er i tvivl om? Vi kan jo kun se, om det du paster ind er gyldig kode, og det tænker jeg umiddelbart det er. Der er en stavefejl i funktionsnavnet, men for så vidt den er konsekvent andre steder i koden, er det jo ikke et problem.

Det springende punkt bliver jo, om du kan få robotterne til at udfylde noget, som mennesker ikke udfylder. Men det foregår vel sagtens andre steder i koden. (og er i øvrigt ikke noget, jeg har erfaring med/viden om...)
Avatar billede Asky Forsker
12. januar 2024 - 12:30 #2
Min kodetjekker mener, der er for mange krøllede parenteser

<?php
function check_input($t7){
if (!empty($t7)) {die () } ;
?>
Avatar billede arne_v Ekspert
12. januar 2024 - 13:45 #3
Skal:

if (!empty($t7)) {die () } ;

ikke være:

if (!empty($t7)) {die (); }

??
Avatar billede ejvindh Ekspert
12. januar 2024 - 14:26 #4
Jo, det er rigtigt. Og så kommer der til at mangle en afsluttende krøllet før sidste linje.
Avatar billede arne_v Ekspert
12. januar 2024 - 14:55 #5
Ja.

En } der matcher for ... {.
Avatar billede Asky Forsker
12. januar 2024 - 19:33 #6
Fint vi fik koden rigtig uden fejl.
Mine rettelser i formularen er følgende:
nedenstående kode:

function check_input($t7){
if (!empty($t7)) {die (); }
}
?> Står øverst i formularkoden sammen med datokode mm.

Der er oprettet et usynligt felt i html-en under alle de andre felter (navn, adresse osv)
<div><input type="hidden" name="t7"  /></div>
Feltet er også defineret i responsen:
$t7 = ($_POST['t7']?? null);

Desuden er der lavet en primitiv php  captcha.php

Nu kan man jo ikke afprøve denne funktion, men hvis spamudfyldningerne (71 på et døgn) af formularen hører op, må det vel virke. ?
Avatar billede Asky Forsker
17. januar 2024 - 11:18 #7
Denne kode virkede så ikke på den placering, den var sat.
Men noget i den retning var det nu alligevel.
Derfor fandt jeg på denne hjemmeside:
https://www.nielsgamborg.dk/index.php?p=php&u=gaestebog_script
En kode, der lignede: Under formularens andre felter skriver man:
  <div style="visibility: hidden">
<label>Undlad at skrive i dette felt</label> <input name="author" value="" size="40" />
<label>Undlad også at skrive i dette felt</label> <textarea name="message" value="" cols="40" rows="4"></textarea></div>
I responsen lige før send:
if (!empty($_POST['author'])) {  header ("Location: blokeret.php");
exit;
}
elseif (!empty($_POST['message'])) {
  header ("Location: blokeret.php");
exit;
}
else
  $mail->send();
Den almindelige bruger ser ikke de to felter, men botter ser kun koden og lokkes derfor til at udfylde disse felterne.

Inspireret af Gamborg har jeg lavet en side med navnet blokeret.php, med en tæller på. Bestem selv, hvad der skal stå på blokeret.php
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester