Gastenboek probleem

Status
Niet open voor verdere reacties.
dat komt omdat je geen check doet of $name en $bericht leeg zijn....empty()
Voor je htmlentities() doet moet je de $_POST ontdoen van eventuele whitespaces...trim()
De trim moet je ook gedaan hebben voor je de empty() controle doet.

Sorry, dit begrijp ik niet helemaal.
 
dat komt omdat je geen check doet of $name en $bericht leeg zijn....empty()
Voor je htmlentities() doet moet je de $_POST ontdoen van eventuele whitespaces...trim()
De trim moet je ook gedaan hebben voor je de empty() controle doet.

Dit is toch de check:
PHP:
if(!empty($bericht) && !empty($name) == 0){
		echo '<script>alert("Je hebt niet alles ingevuld");</script>';
		die();
	}
 
nee, empty($name) returns true als de string leeg is en false als de string dus niet leeg is.
Je mag/moet ==0 weglaten.
 
okey, had ff niet goed gekeken. ik kijk ondertussen ook tv.
if(empty($bericht) || empty($name) == 0){
echo '<script>alert("Je hebt niet alles ingevuld");</script>';
die();
}

je moet kijken of $bericht of(||) $name leeg is.
 
okey, had ff niet goed gekeken. ik kijk ondertussen ook tv.
if(empty($bericht) || empty($name) == 0){
echo '<script>alert("Je hebt niet alles ingevuld");</script>';
die();
}

je moet kijken of $bericht of(||) $name leeg is.

ok, nu geeft ie idd een alertbox, maar de pagina wordt wel wit
 
Ja, dat klopt want je enige output is <script>alert("Je hebt niet alles ingevuld");</script>
Kijk maar een naar je pagina bron.
je zou
header('Refresh: 3; url=gastenboek.php');
voor je echo kunnen zetten
en na de echo zou je nog een pagina laten includen waar je een boodschap geeft aan de gebruiker.

De header zal namelijk na 3seconden de pagina verwijzen naar de url.
en al de code die erna staat zal dan nog uitgevoerd worden.
 
Ja, dat klopt want je enige output is <script>alert("Je hebt niet alles ingevuld");</script>
Kijk maar een naar je pagina bron.
je zou
header('Refresh: 3; url=gastenboek.php');
voor je echo kunnen zetten
en na de echo zou je nog een pagina laten includen waar je een boodschap geeft aan de gebruiker.

De header zal namelijk na 3seconden de pagina verwijzen naar de url.
en al de code die erna staat zal dan nog uitgevoerd worden.

Ok, dit is leuk... als ik een bericht type nu, zegt ie alsnog dat er niets is ingevuld :D
 
post je script wat je nu gebruikt eens. Ergens maak je dat de string leeg.
 
post je script wat je nu gebruikt eens. Ergens maak je dat de string leeg.

PHP:
<?php
    $name = $_POST['voornaam'] . ' ' . $_POST['achternaam'];
    $bericht = $_POST['bericht'];
	$voornaam = $_POST['voornaam'];
	$achternaam = $_POST['achternaam'];
    
    $data = 'reacties.txt';
    $file = fopen($data, "a");
    $tijd = time();
    $datum = strftime("%d-%m-%y %H:%M", $tijd);
	
	$bericht = htmlentities($_POST['bericht']);
	$voornaam = htmlentities($_POST['voornaam']);
	$achternaam = htmlentities($_POST['achternaam']);
	
    if(empty($bericht) || empty($name)== 0){
		header('Refresh: 1; url=Gastenboek.php');
		echo '<script>alert("Je hebt niet alles ingevuld");</script>';
		die();
	}
	fputs($file, "<h4>Geschreven door:</h4>$name<br><br><h4>Tijd:</h4>$datum<br><br>
          <h4>Bericht:</h4>$bericht<br><br><hr>");
    fclose($file);
	header('Location: Gastenboek.php');
	die();
?>

<?php include("Gastenboek.php");?>

mist er niet een else na de if?
 
ik geloof dat de fout hier door kwam empty($name)== 0

PHP:
<?php
    // Remove whitespaces from strings
    $name = trim($_POST['voornaam']) . ' ' . trim($_POST['achternaam']);
    $bericht = trim($_POST['bericht']);

    // overbodig, dit bruik je niet in je code
    //$voornaam = $_POST['voornaam'];
    //$achternaam = $_POST['achternaam'];

    $bericht = htmlentities($_POST['bericht']);
    $name = htmlentities($_POST['voornaam']);
    
    if(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 hebt niet alle ingevuld</h1><hr /></center>";
        echo '<script>alert("Je hebt niet alles ingevuld");</script>';
        exit();
    } else {
    $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 = "<h4>Geschreven door:</h4>$name<br><br><h4>Tijd:</h4>$datum<br><br>
          <h4>Bericht:</h4>$bericht<br><br><hr>\n\l";
    // Write input to file
    fputs($file, $input);
    // Close file
    fclose($file);
    // redirect header
    header('Location: Gastenboek.php');
    exit();
}
?>
 
ik geloof dat de fout hier door kwam empty($name)== 0

PHP:
<?php
    // Remove whitespaces from strings
    $name = trim($_POST['voornaam']) . ' ' . trim($_POST['achternaam']);
    $bericht = trim($_POST['bericht']);

    // overbodig, dit bruik je niet in je code
    //$voornaam = $_POST['voornaam'];
    //$achternaam = $_POST['achternaam'];

    $bericht = htmlentities($_POST['bericht']);
    $name = htmlentities($_POST['voornaam']);
    
    if(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 hebt niet alle ingevuld</h1><hr /></center>";
        echo '<script>alert("Je hebt niet alles ingevuld");</script>';
        exit();
    } else {
    $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 = "<h4>Geschreven door:</h4>$name<br><br><h4>Tijd:</h4>$datum<br><br>
          <h4>Bericht:</h4>$bericht<br><br><hr>\n\l";
    // Write input to file
    fputs($file, $input);
    // Close file
    fclose($file);
    // redirect header
    header('Location: Gastenboek.php');
    exit();
}
?>

Je bent my hero!!!! Hij doet het!!!!
overigens werkt de trim niet. als ik spatie doe kan ik 'm nog verzenden.
Kunnen trouwens spambots het formiel nog invullen?
 
Laatst bewerkt:
100% zeker weten van yes.
Of je moet een captcha gaan gebruiken...zo'n afbeelding met een text/cijfers die je dan moet invullen.
Of je checkt of en geen tags in je bericht staat en ook geen http:// gebruikt wordt.
Nadeel van het laatste is wel dat gebruikers geen websites kunnen doorgeven via je gastenboek, maar daar zou je een extra inputveld voor kunnen maken.
 
100% zeker weten van yes.
Of je moet een captcha gaan gebruiken...zo'n afbeelding met een text/cijfers die je dan moet invullen.
Of je checkt of en geen tags in je bericht staat en ook geen http:// gebruikt wordt.
Nadeel van het laatste is wel dat gebruikers geen websites kunnen doorgeven via je gastenboek, maar daar zou je een extra inputveld voor kunnen maken.

Die trim mag morgen ook wel hoor, ga nu eerst slapen. Moet morgen weer vroeg (6:45 uur :( ).
Ik wil je ongelooflijk super bedanken voor je hulp. Zonder jou had ik het niet gered!!!
 
Nou slaap lekker dan nog. Ik heb ff wat in elkaar gedraaid.
Het is niet de beste en netste manier.
Maar het houd wel een groot deel van de bots buiten je gastenboek.
Er kunnen nu geen <> en http: gebruikt worden in het bericht.

PHP:
<?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 hebt niet alle ingevuld</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 = "<h4>Geschreven door:</h4>$name<br><br><h4>Tijd:</h4>$datum<br><br>
          <h4>Bericht:</h4>$bericht<br><br><hr>\n\l";
    // Write input to file
    fputs($file, $input);
    // Close file
    fclose($file);
    // redirect header
    header('Location: Gastenboek.php');
    exit();
}
?>
 
Nou slaap lekker dan nog. Ik heb ff wat in elkaar gedraaid.
Het is niet de beste en netste manier.
Maar het houd wel een groot deel van de bots buiten je gastenboek.
Er kunnen nu geen <> en http: gebruikt worden in het bericht.

PHP:
<?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 hebt niet alle ingevuld</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 = "<h4>Geschreven door:</h4>$name<br><br><h4>Tijd:</h4>$datum<br><br>
          <h4>Bericht:</h4>$bericht<br><br><hr>\n\l";
    // Write input to file
    fputs($file, $input);
    // Close file
    fclose($file);
    // redirect header
    header('Location: Gastenboek.php');
    exit();
}
?>

Goede morgen,

Ik heb je code gepaste, krijg nu een error:
Parse error: syntax error, unexpected '{' on line 11, maar zie 'm niet.
 
Er staat een haakje teveel aan het begin van die regel, zo zou hij moeten werken:
PHP:
if(strlen($bericht) != strlen(strip_tags($bericht)) || preg_match('/http:/', $bericht) || empty($bericht) || empty($name) ){
 
Er staat een haakje teveel aan het begin van die regel, zo zou hij moeten werken:
PHP:
if(strlen($bericht) != strlen(strip_tags($bericht)) || preg_match('/http:/', $bericht) || empty($bericht) || empty($name) ){

Ja hij doet het! Dank je wel, ik zag 'm echt over het hoofd. Is een captcha moeilijk om bij te voegen?
 
@Supersnail Thnx voor het tellen. Ik had het vanmorgen ook al gezien. Maar nog geen tijd gehad om het te verbeteren.

Captcha invoegen valt wel mee, kijk anders ff op you tube. Daar staan tal van tuts ook over captcha.
 
@Supersnail Thnx voor het tellen. Ik had het vanmorgen ook al gezien. Maar nog geen tijd gehad om het te verbeteren.

Captcha invoegen valt wel mee, kijk anders ff op you tube. Daar staan tal van tuts ook over captcha.

Ik wil je bij deze nog een keer ontzettend bedanken, voor je hulp en (vooral) geduld!!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan