Wie kan wil mij helpen met het onderstaand script.
Dit script werkt tot zover goed maar ik wil er iets aan toevoegen waar ik totaal geen kaas van heb gegeten. Nu bij naam email etc invullen zou je in principe alles in kunnen vullen en dat zal hij dan ook verzenden. Ik zou graag er iets aan toe willen voegen zodat alles juist wordt ingevult en rare emailadressen, namen het script een foutmelding geeft.



<style type="text/css">
<!--
body,td,th {
	font-family: Tahoma, Geneva, sans-serif;
	font-size: 12px;
	color: #747474;
}
-->
</style>
<hr />
<p>&nbsp;</p>
<p><strong>
  <?php
mysql_connect('','','');
mysql_select_db('');
$query = 'SELECT id FROM paginas WHERE url="'.mysql_escape_string($_SERVER['REQUEST_URI']).'"';
$result = mysql_query($query);


if (mysql_num_rows($result)== 1){ 
$row = mysql_fetch_array($result);
$pagina_id = $row['id'];
} else {
mysql_query('INSERT INTO paginas SET url="'.
$_SERVER['REQUEST_URI'].'";');
$pagina_id = mysql_insert_id();
}
?>
</strong></p>
<p><strong><img src="images/03.png" width="20" height="20" /> Reageer zelf</strong></p>
<p>&nbsp;</p>
<form method="post">
<p>&nbsp;</p>
<p>Naam:
  <input type="text" name="naam"><br>
</p>
<p>&nbsp;</p>
<p>E-mail:
  <input name="email" type="text" value="" />
  *wordt niet getoond
  <br>
</p>
<p>&nbsp;</p>
<p>Reactie:<br>
<textarea cols="45" rows="4" name="reactie"></textarea>
<br>
<input type="submit" value="Versturen">
</p>
</form>
<p>&nbsp;</p>
<br>
<?php

if (isset($_POST['naam'])) { 
if($_POST['naam'] != '' && $_POST['email'] != '' && $_POST['reactie'] != ''){ 
$query = 'INSERT INTO reactie SET pagina="'.$pagina_id.'", naam="'.mysql_real_escape_string($_POST['naam']).'", email="'.mysql_real_escape_string($_POST['email']).'", '.'reactie="'.mysql_real_escape_string($_POST['reactie']).'";';  

$result = mysql_query($query); 


echo '<p>Je bericht is opgeslagen.</p>'; 
}else{ 
 echo 'Reactie niet opgeslagen, vul alles in';
} 
}  


?>
<br>
<p><strong><u>Reacties van anderen</u></strong></p>
<br>
<br>
<?php
$query = 'SELECT * FROM reactie WHERE  pagina="'.$pagina_id.'"';
$result = mysql_query($query);
if (mysql_num_rows($result)== 0){
echo 'Er zijn nog geen reacties.';
 } else {
while ($row = mysql_fetch_array($result)) {
// deze reactie weergeven

echo 
''.$row["datumtijd"].'<br>'.$row['naam'].' zegt: '.'<br>'.'<br>'.
''.$row['reactie'].'<br>'.'<br>'.'<br />';
 
}

}

?>



Wat bedoel je met rare namen
e-mail kan zo gecontroleerd worden:
<?php
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z]{2,4})$",$emailadres)
?>

Deze geeft TRUE als het emailadress bestaat uit vb. [email protected]
Dan zul je de input van je formulieren moeten controleren. Dus voordat je je INSERT query uitvoert, moet je er zeker van zijn dat de waarden in de verschillende $_POST variabelen correct zijn. Je zult onder andere functies als strlen() en preg_match() willen gebruiken.

Zie ook dit voorbeeld.

Een alternatief is het gebruik van PHP filters om de input te valideren. Een voorbeeld daarvan zie je hier.
Hoi jo,
Dit klopt dit zou ik er in willen voegen.
Ik weet alleen niet waar ik dit tussen moet zetten in mijn script.

<?php
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z]{2,4})$",$emailadres)
?>
Eregi is oud, gebruik liever preg_match. Als je daarvoor geen regex kunt vinden, dan is php's filter_var een goede optie, maar de validatie voor een e-mailadres is niet helemaal correct.
Karl Karl op 06/06/2010 21:45:41

Eregi is oud, gebruik liever preg_match. Als je daarvoor geen regex kunt vinden, dan is php's filter_var een goede optie, maar de validatie voor een e-mailadres is niet helemaal correct.


Waarschijnlijk krijg je ook foutmeldingen met [php]eregi[/php]

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
Dus eregi wordt vervangen.

<?php
preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z]{2,4})$",$emailadres)
?>
Bram Boos op 06/06/2010 21:49:37

[quote="Karl Karl op 06/06/2010 21:45:41"]
Eregi is oud, gebruik liever preg_match. Als je daarvoor geen regex kunt vinden, dan is php's filter_var een goede optie, maar de validatie voor een e-mailadres is niet helemaal correct.


Waarschijnlijk krijg je ook foutmeldingen met [php]eregi[/php]

This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
[/quote]

Dat bedoel ik dus.

Frank dak op 06/06/2010 21:53:48

Dus eregi wordt vervangen.

<?php
preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([a-z0-9-]+\.)+([a-z]{2,4})$",$emailadres)
?>


Nee, de regexen zijn meestal niet 'inwisselbaar' met elkaar. Sowieso, nu ik naar die regex kijk, is die nogal onzinnig.
Hoe kan ik dit toepassen in mijn script dat hij het emailadres controleert?
Laats keek ik in mijn database en zag ik allerlei vreemde emailadressen met spam.


<?php

if (isset($_POST['naam'])) {
if($_POST['naam'] != '' && $_POST['email'] != '' && $_POST['reactie'] != ''){
$query = 'INSERT INTO reactie SET pagina="'.$pagina_id.'", naam="'.mysql_real_escape_string($_POST['naam']).'", email="'.mysql_real_escape_string($_POST['email']).'", '.'reactie="'.mysql_real_escape_string($_POST['reactie']).'";';

$result = mysql_query($query);


echo '<p>Je bericht is opgeslagen.</p>';
}else{
echo 'Reactie niet opgeslagen, vul alles in';
}
}


?>
<br>
<p><strong><u>Reacties van anderen</u></strong></p>
<br>
<br>
<?php
Dit is dezelfde vraag als waarmee je dit topic begon? Wat heb je inmiddels met de tussenliggende antwoorden gedaan? Ik zie zo een aantal suggesties waar je nog niets mee gedaan hebt (filter_var, preg_match). Beide zouden een oplossing kunnen zijn voor jouw probleem.
Gebruik ook [php]htmlentities[/php] en misschien zou je ook akismet willen gebruiken.

Reageren