Archief - PHP: formulier werkt niet correct

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
op een pagina gebruik ik volgend formulier :

PHP:
<?php

if( $_POST['send_request'] ) 
{

        $regex['first_name'] = "^."; #require atleast one charecter
        $regex['last_name'] = "^."; #require atleast one charecter
        $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['first_name'] = "Gelieve een voornaam op te geven";
        $form_errors['last_name'] = "Gelieve een naam op te geven";
        $form_errors['email'] = "Gelieve een correct e-mailadres op te geven";

        foreach( $regex as $k => $v ) 
        {
              if( ! ereg( $v , $_POST[$k] ) )
              {
                     $errors[$k] = $form_errors[$k];
              }
        }


        if( ! isset( $errors ) ) {

	$send_to = "[email protected]";
	$send_subject = "Info request NL";
	$send_from = "Info request form";
	$mesg  = "The following person has submitted an info request form:\n\n";
	$mesg .= "First Name   : ".$_POST['first_name']."\n";
	$mesg .= "Last Name    : ".$_POST['last_name']."\n";
	$mesg .= "Organization : ".$_POST['company']."\n";
	$mesg .= "Phone        : ".$_POST['phone']."\n";
	$mesg .= "Email        : ".$_POST['email']."\n";
	$mesg .= "Inquiry      :\n\n".$_POST['inquiry']."";
	
	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['first_name'] = "Voornaam";
	$labels['last_name'] = "Familienaam";
	$labels['email'] = "E-mail";
	$labels['phone'] = "Telefoon";
	$labels['company'] = "Bedrijf";
	$labels['inquiry'] = "Uw vraag/opmerking";
	$labels['thankyou'] = "Bedankt voor uw vraag/opmerking. U krijg zo spoedig mogelijk antwoord.";
	
?>
<?php if(!  $thank_you ) { ?>
<form name="form1" method="post" action="">
	<table width="0%"  border="0" cellspacing="0" cellpadding="2">
   	<tr>
   		<td class="input"><?= $labels['first_name'] ?>:</td>
   		<td>
                <?php if( isset($errors['first_name'] ) ) { ?>
                <font size = "1" color="red"><?= $errors['first_name'] ?></font><br />
                <?php } ?>
                <input class="inputbox2" name="first_name" type="text" size="30" id="first_name" value="<?= $_POST['first_name'] ?>"></td>
  		</tr>
   	<tr>
   		<td class="input"><?= $labels['last_name'] ?>: </td>
   		<td>
                <?php if( isset( $errors['last_name'] ) ) { ?>
                <font size = "1" color="red"><?= $errors['last_name'] ?></font><br />
                <?php } ?>
                <input class="inputbox2" name="last_name" type="text" id="last_name" size="30" value="<?= $_POST['last_name'] ?>"></td>
  		</tr>
   	<tr>
   		<td class="input"><?= $labels['company'] ?>: </td>
   		<td><input class="inputbox2" name="company" type="text" id="company" size="30" value="<?= $_POST['company'] ?>"></td>
  		</tr>
   	<tr>
   		<td class="input"><?= $labels['email'] ?>: </td>
   		<td>
                <?php if( isset( $errors['email'] ) ) { ?>
                <font size = "1" color="red"><?= $errors['email'] ?></font><br />
                <?php } ?>
                <input class="inputbox2" name="email" type="text" id="email" size="30" value="<?= $_POST['email'] ?>"></td>
  		</tr>
   	<tr>
   		<td class="input"><?= $labels['phone'] ?>:</td>
   		<td><input class="inputbox2" name="phone" type="text" id="phone" size="30" value="<?= $_POST['phone'] ?>"></td>
  		</tr>
   	<tr>
   		<td valign="top" class="input"><?= $labels['inquiry'] ?>: </td>
		<td><textarea class="box3" name="inquiry" cols="30" rows="7" id="inquiry"><?= $_POST['inquiry']?></textarea>
		</div></td>
  		</tr>
   	<tr>
   		<td valign="top">&nbsp;</td>
   		<td><div align="left"><br><bR>
   			<input type="submit" name="Submit" value="Verzenden">
   		   <input name="send_request" type="hidden" id="send_request" value="1">
   		</div></td>
  		</tr>
   	</table>
</form>
<?php } else { ?> 
<p><font color="green"><b><?= $labels['thankyou'] ?></b></font></p>
<?php } ?>

ziet er iemand de fout? :wtf:
bij het openen van de pagina zie ik onmiddellijk de error messages :

Gelieve een voornaam op te geven
Gelieve een naam op te geven
Gelieve een correct e-mail adres op te geven

killgore

Legacy Member
if( isset($_POST['send_request'] ) )

edit: en n/o, maar laat dit script hermaken door iemand die wel php kan. Ik denk dat er geen regel zonder fout is.

KoenDK

Legacy Member
het werkt nog steeds niet
ok, de error messages komen niet meer tevoorschijn bij het laden van de pagina, maar ze komen ook niet tevoorschijn als men de naam niet invult :)

en euhm, wat is er dan zoal allemaal mis? :eek: hulp zou leuk zijn
dan heb ik eens en voor altijd een formulier dat werkt, met alles erop en eraan :$

KoenDK

Legacy Member
ik denk trouwens dat veel te maken heeft met de php versie
op een server met PHP4 werkt dit dus perfect, maar helaas moet ik werken met PHP5, en daar krijg ik dus geen enkele error message indien men bv niets invult

dJeez

Legacy Member
KoenDK zei:
op een server met PHP4 werkt dit dus perfect, maar helaas moet ik werken met PHP5, en daar krijg ik dus geen enkele error message indien men bv niets invult
Ooit al gehoord van de error_reporting functie in PHP?

En wat je code betreft : het zou misschien wel eens kunnen helpen dat je de $errors array ook op voorhand als array definieert alvorens je er waardes in gaat steken, en vervolgens werkt met empty ipv isset om te testen of er foutmeldingen gezet zijn (als je op die manier wil blijven werken).

killgore

Legacy Member
-je gebrukt variabelen zonder dat ze geïntiailiseerd zijn
-Je gebruikt bestaanscontrole met if($var) ipv if(isset($var))
-Je gebruikt de te vermijden <?= tag

Maar ik had blijkbaar overdreven daarstraks.

Ook raad ik ereg af ten voordele van preg_match.

en zoals djeez zegt: error_reporting(E_ALL), a debugger's best friend.

KoenDK

Legacy Member
ik heb het idd door iemand anders kunnen laten doen, alles werkt eigenlijk nu
de check wordt gedaan via een js

er klopt echter iets niet met mijn php syntax want de mail wordt niet verstuurd :eek:

PHP:
<?php
if(isset( $_POST['submit'] )) 
{
	$send_to = "[email protected]";
	$sendto = "test contact";
	$send_subject = "subject";
	$send_from = $_POST['email'] . "<" . $_POST['email'] . ">";
	$mesg  = "Bla :\n\n";
	$mesg .= "Email : ".$_POST['email']."\n";
	
	mail( $send_to, $send_subject, $mesg,
        	"From: ".$send_from."\r\n"
        	."Reply-To: ".$send_from."\r\n"
        	."X-Mailer: PHP/" . phpversion());
?>

	<p><font color="green"><b>Vriendelijk bedankt voor uw bericht.</p>

<?php
}
else
{
?>
<form>
blablabla
<input type="submit" name="submit" value="Verzenden" />
</form>
<?
}
?>



iemand enig idee?

KoenDK

Legacy Member
:help:


ps : ik heb error_reporting(E_ALL); toegevoegd aan mijn formulier, maar ik krijg niets te zien



*edit : ik denk dat ik het weet, die 'name' is denk ik niet correct als ID,
ik ga het eens proberen met een iets specifiekere naam...
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