Archief - PHP: Regex validation

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KoenDK

Legacy Member
Alvast mijn excuses voor deze domme nOOb vraag,
maar een kei in php zal ik nooooit zijn :doh:

Ik ben een formulier aan het maken en een paar velden moeten gevalidate worden

PHP:
<?php

if( $_POST['send_request'] ) 
{

        $regex['username'] = "^."; #require atleast one character
        $regex['email'] = "^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,3})$*"; #must be valid email

        $form_errors['username'] = "* U dient uw gebruikersnaam op te geven";
        $form_errors['email'] = "* Het opgegeven e-mailadres niet geldig";

bij het formulier dan, heb ik staan :

PHP:
<label for="naam">gebruikersnaam</label>
<input type="text" id="username" name="username" class="invulveld" />
<br />

hoe kan ik nu, hierachter, die $form_errors['username'] plaatsen, via een <?php if
(moet dus enkel verschijnen indien fout)


via google regex mail php validation vind ik echt geen voorbeeld :help:

Radiance

Legacy Member
PHP:
if (!preg_match($regex['username'], $_POST['username']))
{
  echo($form_errors['username']);
}

Iets in die stijl.
En als je gewoon willen checken of er wel iets ingevuld is dan gebruik je eigenlijk beter strlen();

KoenDK

Legacy Member
direct eens testen zé :niceone:


*edit : nope, ik laat het veld van username leeg, en toch krijg ik direct de boodschap
'uw bericht werd verstuurd'

hij gaat er dus gewoon 'over'



PHP:
<fieldset>
<legend>Informatieaanvraag</legend>
<form id="form" method="post" name="form" action="" onSubmit="return check();">

<label for="naam">gebruikersnaam</label>
<input type="text" id="username" name="username" class="invulveld" />

<?php if (!preg_match($regex['username'], $_POST['username']))
{
  echo($form_errors['username']);
}
?>
<br  />

orez

Legacy Member
redelijk logisch dat hij erover gaat nee?
Je moet hem ook nog altijd zeggen dat hij het verzenden niet mag uitvoeren indien het niet ingevuld is hé. Nu zeg je gewoon dat hij een echo moet doen, die hoogst waarschijnlijk verloren gaat uiteindelijk.

KoenDK

Legacy Member
nochtans

PHP:
<?php

if( $_POST['send_request'] ) 
{

        $regex['username'] = "^."; #require atleast one character
        $regex['email'] = "^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,3})$*"; #must be valid email

        $form_errors['username'] = "* U dient uw gebruikersnaam op te geven";
        $form_errors['email'] = "* Het opgegeven e-mailadres niet geldig";


blablabla


	mail( $send_to, $send_subject, $mesg,
        "From: ".$send_from."\r\n"
        ."Reply-To: ".$send_from."\r\n"
        ."X-Mailer: PHP/" . phpversion());

        $thank_you = 1;
}


	$labels['thankyou'] = "Bedankt voor uw bericht. U krijgt spoedig antwoord.";
?>
<?php if( ! $thank_you) { ?>

<fieldset>
<legend>Informatieaanvraag</legend>
<form id="form" method="post" name="form" action="" onSubmit="return check();">

<label for="naam">gebruikersnaam</label>
<input type="text" id="username" name="username" class="invulveld" />

<?php if (!preg_match($regex['username'], $_POST['username']))
{
  echo($form_errors['username']);
}
?>
<br  />

<label for="email">E-mail</label>
<input type="text" id="email" name="email" class="invulveld" />
<br />

<input type="submit" class="knop" value="Verzenden"><input name="send_request" type="hidden" id="send_request" value="1">
</form>
</fieldset>

<?php } else { ?> 
<p><?= $labels['thankyou'] ?></p>
<?php } ?>

Radiance

Legacy Member
En je kreeg te zien "Bedankt voor uw bericht. U krijgt spoedig antwoord." ?

Da's nogal evident.
Je controleert of er gepost is, wat altijd waar zal zijn als je op verzenden drukt in uw formulier, en als dat zo is ga je meteen uw mail sturen zonder te controleren hoe die waardes eruit zien.

Moet nog eens goed nadenken over uw logica :)

KoenDK

Legacy Member
hmm
ok
I get the picture :p

maar het lukt mij niet hoor, nu krijg ik na validatie 2 formulieren te zien :crazy:

euhm, kan er mij iemand aub helpen :help:

KoenDK

Legacy Member
via Radiance (thx dude) kwam ik tot dit, maar helaas werkt het toch nog niet perfect

hij blijft de foutmelding constant geven, ook wanneer je bij een tweede poging alles correct doet ...


PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Informatieaanvraag</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body{
font-size:16px;
}

html{
scrollbar-arrow-color: #707070;
scrollbar-track-color: #e2e2e2;
scrollbar-face-color: #e2e2e2;
scrollbar-shadow-color: #b5b5b5;
}

fieldset{
width:800px;
height:350px;
}

legend{
padding: 5px;
}

label {
width: 180px;
float: left;
text-align: left;
margin: 0 10px 10px 10px;
clear: both;
}

.invulveld {
margin-bottom: 10px;
width:200px;
background: #e2e2e2;
border: #b5b5b5 solid 1px;
color:#585858;
}

#combo{
margin-bottom: 10px;
width:204px;
background: #e2e2e2;
border: #b5b5b5 solid 1px;
color:#585858;
}

#textarea1{
margin-bottom: 10px;
width:350px;
background: #e2e2e2;
border: #b5b5b5 solid 1px;
color:#585858;
}

.knop {
margin-left:160px;
clear: both;
background: #e0e0e0;
border: 1px #CCF outset;
}
</style>
</head>
<body onload="document.getElementById('username').focus();">

<?php 

if(isset($_POST['send_request'])) 
{ 
	$regex['username'] = "^."; #require atleast one character 
	$regex['email'] = "^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,3})$*"; #must be valid email 
    	$form_errors['username'] = "* U dient uw gebruikersnaam op te geven"; 
    	$form_errors['email'] = "* Het opgegeven e-mailadres niet geldig"; 

	$send_to = "[email protected]";
	$send_subject = "Subject : " .$_POST['username']." / ".$_POST['selectThis']." ";
	$send_from = $_POST['email'];
	$mesg  = "Vraag : " .$_POST['textarea1']."\n\n";
	$mesg .= "Telefoon : ".$_POST['telefoon']."\n";


foreach($_POST as $key => $val) // Doorloop alle post waarden 
    { 
        if(isset($regex[$key])) // Moet deze $_POST waarde gecontroleerd worden? 
        { 
            if(!preg_match($regex[$key], $_POST[$key])) 
            { 
                $form_errors_found[$key] = true; 
            } 
        } 
    } 
     
    if(!isset($form_errors_found)) 
    { 
        mail( $send_to, $send_subject, $mesg, 
              "From: ".$send_from."\r\n" 
            . "Reply-To: ".$send_from."\r\n" 
            . "X-Mailer: PHP/" . phpversion());         
    } 
} 


    $labels['thankyou'] = "Bedankt voor uw bericht. U krijgt spoedig antwoord."; 

if(!isset($_POST['send_request']) || isset($form_errors_found)) 
{ 
?> 

<fieldset> 
<legend>Informatieaanvraag</legend> 

<form id="form" method="post" name="form" action="" onSubmit="return check();"> 

<label for="naam">gebruikersnaam</label> 
<input type="text" id="username" name="username" class="invulveld" /> 
<?php if (isset($form_errors_found['username'])) 
{ 
  echo($form_errors['username']); 
} 
?> 
<br  /> 

<label for="email">E-mail</label> 
<input type="text" id="email" name="email" class="invulveld" /> 
<?php if (isset($form_errors_found['email'])) 
{ 
  echo($form_errors['email']); 
} 
?> 
<br /> 

<label for="telefoon">Telefoon</label>
<input type="text" id="telefoon" class="invulveld" /><br />

<label for="Problemtype">Probleem Type</label>
<select name="selectThis" size="1" id="combo">
	<option>1</option>
	<option>2</option>
	<option>3</option>
	<option>4</option>
	<option>5</option>
	<option>6</option>
	<option>7</option>
	<option>8</option>
	<option>9</option>
	<option>10</option>
</select>
<br />
<label for="vraag">Vraag / Opmerking</label>
<textarea name="tekstvak" rows="4" id="textarea1" onfocus="if (this.value == 'Plaats hier uw vraag / opmerking') {this.value = '';}">Plaats hier uw vraag / opmerking</textarea>

<br /><br />

<input type="submit" class="knop" value="Verzenden"><input name="send_request" type="hidden" id="send_request" value="1"> 
</form> 
</fieldset> 

<?php 
} 
else 
{   
    echo('<p>' . $labels['thankyou']); 
} 

?>  
</body>
</html>

KoenDK

Legacy Member
blijkbaar was de regel

$regex['username'] = "^."; #require atleast one character

onzin (kreeg ik te horen via ander forum)



en ik heb deze check opgelost via volgende code :


PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Informatieaanvraag</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body{
font-size:16px;
}

html{
scrollbar-arrow-color: #707070;
scrollbar-track-color: #e2e2e2;
scrollbar-face-color: #e2e2e2;
scrollbar-shadow-color: #b5b5b5;
}

fieldset{
width:800px;
height:350px;
}

legend{
padding: 5px;
}

label {
width: 180px;
float: left;
text-align: left;
margin: 0 10px 10px 10px;
clear: both;
}

.invulveld {
margin-bottom: 10px;
width:200px;
background: #e2e2e2;
border: #b5b5b5 solid 1px;
color:#585858;
}

#combo{
margin-bottom: 10px;
width:204px;
background: #e2e2e2;
border: #b5b5b5 solid 1px;
color:#585858;
}

#textarea1{
margin-bottom: 10px;
width:350px;
background: #e2e2e2;
border: #b5b5b5 solid 1px;
color:#585858;
}

.knop {
margin-left:160px;
clear: both;
background: #e0e0e0;
border: 1px #CCF outset;
}
</style>
</head>
<body onload="document.getElementById('username').focus();">

<?php 

// initialisatie

    	$regex['email'] = "^[_a-zA-Z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,3})$*"; #must be valid email 

    	$form_errors['username'] = "* U dient uw gebruikersnaam op te geven (3)"; 
    	$form_errors['email'] = "* Het opgegeven e-mailadres niet geldig (3)";
	$labels['thankyou'] = "Bedankt voor uw bericht. U krijgt spoedig antwoord."; 
	
	$error_user = 0;
	$error_email = 0;
	$thank_you = 0;


if( $_POST['send_request'] ) { 

	if(isset($_POST['username']) and trim($_POST['username']) == '')
	{
		$error_user = 1;
	} 
	if (!preg_match($regex['email'], $_POST['email']) ) { 
		$error_email = 1;
	} 

	if ( (!$error_user) && (!$error_email) ) {

		$send_to = "[email protected]";
		$send_subject = "Subject : " .$_POST['username']." / ".$_POST['selectThis'];
		$send_from = $_POST['email'];
		$mesg  = "Vraag : " .$_POST['textarea1']."\n\n";
		$mesg .= "Telefoon : ".$_POST['telefoon']."\n";
		mail( $send_to, $send_subject, $mesg, 
	        "From: ".$send_from."\r\n" 
	        ."Reply-To: ".$send_from."\r\n" 
	        ."X-Mailer: PHP/" . phpversion()); 
		$thank_you = 1;
	}
}	// einde check bij verzenden


if ($thank_you) {
	echo("<p>".$labels['thankyou']."</p>");
}
else { ?> 


<fieldset> 
<legend>Informatieaanvraag</legend> 

<form id="form" method="post" name="form" action="" onSubmit="return check();"> 

<label for="naam">gebruikersnaam</label> 
<input type="text" id="username" name="username" class="invulveld" />
<? if ($error_user) { echo($form_errors['username']); } ?>
<br  /> 

<label for="email">E-mail</label> 
<input type="text" id="email" name="email" class="invulveld" /> 
<? if ($error_email) { echo($form_errors['email']); } ?>
<br /> 

<label for="telefoon">Telefoon</label>
<input type="text" id="telefoon" class="invulveld" /><br />

<label for="Problemtype">Probleem Type</label>
<select name="selectThis" size="1" id="combo">
	<option>1</option>
	<option>2</option>
	<option>3</option>
	<option>4</option>
	<option>5</option>
	<option>6</option>
	<option>7</option>
	<option>8</option>
	<option>9</option>
	<option>10</option>
</select>
<br />
<label for="vraag">Vraag / Opmerking</label>
<textarea name="tekstvak" rows="4" id="textarea1" onfocus="if (this.value == 'Plaats hier uw vraag / opmerking') {this.value = '';}">Plaats hier uw vraag / opmerking</textarea>

<br /><br />

<input type="submit" class="knop" value="Verzenden"><input name="send_request" type="hidden" id="send_request" value="1"> 
</form> 
</fieldset> 

<? } ?> 
</body>
</html>



nu moet ik enkel nog de email validatie goedkrijgen in dit script


iemand? :sop:

KoenDK

Legacy Member
if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST['email']))
{
$error_email = 1;
}



werkt :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan