Formulier verstuurt toch..

  • Onderwerp starter Onderwerp starter Gregg
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Gregg

Gebruiker
Lid geworden
8 okt 2008
Berichten
68
Hallo iedereen,
ik zit met een probleem met mijn formulier... het verstuurt toch zelfs al zeg ik dat het niet mag versturen als 'onderwerp' en 'content' leeg zijn...
weet er iemand waar mijn fout zit?
alvast bedankt

PHP:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
					$submit = $_POST['Submit'];
						if($submit == 'Verzend Nieuwsbrief'){
							include('../connect.php');
							$bericht = Stripslashes($_POST['content']);
							$onderwerp = Stripslashes($_POST['onderwerp']);
							$content = $_POST['content'];
							$tekst = "
							<html>
							<head>
							</head>
							<body>
							$bericht
							</body>
							</html>" ;
							if($onderwerp != '' AND $content != ''){
							$query = "SELECT DISTINCT email FROM `nieuwsbrief`";
							$result = mysql_query($query);
							while($row = mysql_fetch_array($result)){
							$headers = "From: 'info@blabla.bla\n;";
							$headers .= "MIME-Version: 1.0\r\n";
							$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
							mail($row['email'], $onderwerp, $tekst, $headers); 
							};
							echo '<br><br><br><br><br><br><br><br><br><div class="phpsuccess"><center>Uw nieuwsbrief is verzonden!</center></div>';
							}else{
										echo '<br><br><br><br><br><br><br><br><br><div class="phperror"><center>Gelieve alle gegevens correct in te vullen!</center></div>';
							}
						}elseif($submit == 'Preview'){  // sturen van een preview
							$bericht = Stripslashes($_POST['content']);
							$onderwerp = Stripslashes($_POST['onderwerp']);
							$content = $_POST['content'];
							$tekst = "
							<html>
							<head>
							</head>
							<body>
							$bericht
							</body>
							</html>" ;
							if($onderwerp != '' AND $content != ''){
							$query = "SELECT email FROM `nieuwsbrief` WHERE email= 'test@blabla.bla";
							$result = mysql_query($query);
							while($row = mysql_fetch_array($result)){
							$headers = "From: 'info@blabla.bla\n;";
							$headers .= "MIME-Version: 1.0\r\n";
							$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
							mail($row['email'], $onderwerp, $tekst, $headers); 
							};
							echo '<br><br><br><br><br><br><br><br><br><div class="phpsuccess"><center>Uw nieuwsbrief is verzonden!</center></div>';
							}else{
										echo '<br><br><br><br><br><br><br><br><br><div class="phperror"><center>Gelieve alle gegevens correct in te vullen!</center></div>';
							}
					}
  		}
  }
}
?>
 
Laatst bewerkt:
niemand die mij kan helpen?
probleem is vervelend.. als men per ongeluk op submit drukt als de nieuwsbrief nog niet af is, krijgen de abbonees lege emails..
echt proffessioneel is dit niet.. :confused:
 
Probeer de variabelen $onderwerp en $content eens te dumpen (vlak voor het if-statement):

PHP:
echo ' $onderwerp:'; var_dump($onderwerp); echo '<br />$content:'; var_dump($content);

Dan zie je welke waarde ze hebben waardoor hij wel verstuurd wordt. Ik kan anders zo ook geen oorzaak bedenken.
 
Laatst bewerkt:
Probeer de variabelen $onderwerp en $content eens te dumpen (vlak voor het if-statement):

PHP:
echo ' $onderwerp:'; var_dump($onderwerp) echo '<br />$content:'; var_dump($content);

Dan zie je welke waarde ze hebben waardoor hij wel verstuurd wordt. Ik kan anders zo ook geen oorzaak bedenken.



Parse error: syntax error, unexpected T_ECHO

dit geeft ie nu
 
Ik had een typfout gemaakt het moet de volgende code zijn:

PHP:
echo ' $onderwerp:'; var_dump($onderwerp); echo '<br />$content:'; var_dump($content);
 
$onderwerp:string(4) "TEST"
$content:
Notice: Undefined variable: content in



dit krijg ik nu
 
heb de variabele aangepast... content moest bericht zijn.. en heb ook de regel van de voorwaarde aangepast... (vorige regel was van test)

PHP:
if($onderwerp != '' AND $bericht != ''){
								echo ' $onderwerp:'; var_dump($onderwerp); echo '<br />$bericht:'; var_dump($bericht);



nu geeft hij

$onderwerp:string(6) "dfgfdg"
$bericht:string(4) "
"
 
nou nu blijkt dus dat $onderwerp niet leeg is en $bericht bevat een lege tekenreeks (of een linebreak?) bevat. Dus daarom wordt de mail verstuurd.
 
ja idd..

het probleem is .. ik zie nergens waar er in bericht iets inzit van 4 karakters als het leeg zou moeten zijn...
 
Als je nu eens:

PHP:
 if(trim($onderwerp) != '' AND trim($content) != ''){

doet i.p.v.

PHP:
 if($onderwerp != '' AND $content != ''){
 
Als je nu eens:

PHP:
 if(trim($onderwerp) != '' AND trim($content) != ''){

doet i.p.v.

PHP:
 if($onderwerp != '' AND $content != ''){

nope..zelfde resultaat.. hij blijft versturen.
ik weet echt niet waar hij die 4 karakters vandaan haalt..
 
Euhm,

Misschien is het handig om er even dit van te maken:

PHP:
 if(trim($onderwerp) != '' && trim($content) != ''){

&& is de 'en' operator in PHP.
 
Trouwens,

Alle functies in PHP worden met kleine letters geschreven, dat betekent dat:

PHP:
$bericht = Stripslashes($_POST['content']);
$onderwerp = Stripslashes($_POST['onderwerp']);

moet worden:

PHP:
$bericht = stripslashes($_POST['content']);
$onderwerp = stripslashes($_POST['onderwerp']);

Oh ja, en het was dus $bericht en niet $content, dus je if-statement wordt:

PHP:
if(trim($onderwerp) != '' && trim($bericht) != ''){
 
Alleen native functies zijn met kleine letters, maar opzich is PHP om een of andere bijzondere reden hoofdletter ongevoelig voor functies, maar wel hoofdletter gevoelig voor variabelen :/
 
stripslashes() op variabelen uit $_POST is sowieso onzin, tenzij magic quotes aanstaat, maar dat moet je dan zo snel mogelijk uitschakelen.
 
Hoe ziet het formulier eruit? Daar komen die karakters vandaan immers.

de content (die in de variabele bericht gestoken wordt) is afkomstig van een WYSIWYG-editor.
Wat blijkt nu.. als je die editor in HTML gebruikt zie je niets op uw 'werkblad'. Als je dan overschakelt naar Tekst (is een optie in de editor) komt er standaard <br> te staan in het 'werkblad'.

deze <br> komt dus overeen met die 4 karakters die hij blijkt mee te sturen (als ik het werkblad leeg laat in HTML-mode)

Dus de oorzaak heb ik al kunnen achterhalen.. alleen weet ik niet vanwaar hij die <br> meekrijgt.

Heb al in de verschillende scripts gekeken van deWYSIWIG-editor maar vind het niet direct
:confused:
 
Trouwens,

Alle functies in PHP worden met kleine letters geschreven, dat betekent dat:

PHP:
$bericht = Stripslashes($_POST['content']);
$onderwerp = Stripslashes($_POST['onderwerp']);

moet worden:

PHP:
$bericht = stripslashes($_POST['content']);
$onderwerp = stripslashes($_POST['onderwerp']);

Oh ja, en het was dus $bericht en niet $content, dus je if-statement wordt:

PHP:
if(trim($onderwerp) != '' && trim($bericht) != ''){


bij het aanpassen van Stripslashes naar stripslashes is de kleur idd verandert van zwart naar blauw (erkend dus door PHP).
Maar helaas heeft dit ook geen oplossing geboden.
 
Het is misschien niet de mooiste oplossing, maar als je editor automatisch een '<br>' neerzet, zou je natuurlijk dit kunnen doen:

PHP:
if(trim($onderwerp) != '' && trim($bericht) != '' && $bericht != '<br>'){
 
Het is misschien niet de mooiste oplossing, maar als je editor automatisch een '<br>' neerzet, zou je natuurlijk dit kunnen doen:

PHP:
if(trim($onderwerp) != '' && trim($bericht) != '' && $bericht != '<br>'){


Dit is de oplossing..

bedankt :thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan