Ik heb het volgende probleem:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/inventory/index.php:11) in /var/www/inventory/index.php on line 36

Dit komt doordat header niet als eerste verzonden word naar de browser heeft google me al geleerd.

ziehier de code:


<?
include('connect.php');
?>	
<html>
<head>
<link rel="stylesheet" type="text/css" href="basic.css">
</head>
<body>
<h1>Domains</h1>
	<h2>List of the domains</h2>
		<?
		$requete = "SELECT COUNT(DISTINCT zone) FROM dns_records";
		$res = mysql_query($requete);
		$ligne = mysql_fetch_array($res);
		echo '<p>There are ' .$ligne["COUNT(DISTINCT zone)"]. ' domains.</p>';
		?>
		<p>Add a new domain :</p>
		<form action="index.php" method="post">
		<input type="text" name="add_domain">
		<input type="submit" value="Add" name="add_domains" />
		</form>
		<?
		if ($_POST['add_domains'])
	{
		$add_domain=$_POST['add_domain'];
		$req = "SELECT COUNT(DISTINCT zone) FROM dns_records where zone like '$add_domain'";
		$res = mysql_query($req);
		$ligne = mysql_fetch_array($res);
		$zone=$ligne["COUNT(DISTINCT zone)"];
		if ($zone != 0) { echo "<p>This domain already exists!!!</p>"; } else
		{
		$requete = "INSERT INTO dns_records VALUES('0','$add_domain','@','86400','SOA','','ns1.webcommercedns.be.','peter.','2','28000','2800','64800','10'),
		('0','$add_domain','@','86400','NS','','ns1.webcommercedns.be.','','','','','',''),
		('0','$add_domain','@','86400','NS','','ns2.webcommercedns.be.','','','','','','')";
		mysql_query($requete) or die ('Erreur lors de l\'insertion');
		header('Location: domain.php?domain=$add_domain');
		};

...


Kan ik dit dan op een andere manier nog doen of zien jullie een oplossing?
Dat is inderdaad waar en dat hoor ik van meerdere mensen...

Maar waarom zou men Javascript uitschakelen, wat is daar het voordeel van?
Zijn er uberhaupt mensen die JS uitschakelen?
Jeffrey schreef op 18.02.2008 13:58
Maar waarom zou men Javascript uitschakelen, wat is daar het voordeel van?
Zijn er uberhaupt mensen die JS uitschakelen?
Om een website te hacken.

Vele programmeurs maken de fout dat ze vertrouwen op js, daar worden dus ook vele fouten gemaakt.
Ok, duidelijk.

Dus als ik het goed begrijp, heeft bijvoorbeeld formulier controle met Javascript geen zin, want als je het uitschakelt, negeert hij dat en zal het formulier gewoon posten?
Jeffrey,

Dat klopt, je moet ALTIJD input van de user controleren, ga er ALTIJD van uit dat er mensen zijn die je website schade willen aanrichten - dan ben je voorbereid. Ik heb hier een link naar een artikel dat dateert uit 2005, desalniettemin is het toch erg interessant en nog steeds aan de orde.

De 7 grootste PHP security blunders op een rij:
http://www.sitepoint.com/article/php-security-blunders

Patrick Niezen

Edit: woordkeuze wat veranderd :-)
Ok, handig om te weten, want ik heb wat formuliertjes die ik met Javascript controleer op lege velden en emailvalidatie e.d.

Voorheen gebruikte ik gewoon php om velden te checken, maar als er dan 1 veld niet ingevuld is, krijg ik dus een foutmelding terug, maar zijn alle velden weer leeg.
Dit had ik dan weer opgelost door alle velden in een sessie te zetten en dit in de value van desbetreffend veld te zetten, maar ik dacht dat dat niet erg efficient was en veel resources gebruikt.

Dus ik kan toch beter bij php form validatie blijven?
Je kunt ook en Javascript doen, en PHP :-) Daarnaast hoeft je niet de waarde van een POST-request in een sessie te stoppen om vervolgens weer in te vullen als value in input-elementen. Je kunt ook meteen de POST-waarden invullen.


<input type="text" name="veldnaam" value="<?php if(isset($_POST['veldnaam'])) echo htmlentities($_POST['veldnaam']); ?>"/>


Patrick Niezen

Edit:
Ps. Bij emailvalidatie zou je waarschijnlijk het e-mailadres moeten controleren in de database, dat deze al bestaat of niet - vergeet dat niet.
Om direct de $_POST in te voeren, is het wel noodzakelijk dat zowel het formulier als in één bestand staan.

Ik heb namelijk ook scripts waarbij het formulier als de afhandeling ervan een apart bestand zijn.

Dus bijv. formulier.html met als afhandeling bijv. action="processForm.php"
Jeffrey schreef op 18.02.2008 14:12
Ok, duidelijk.

Dus als ik het goed begrijp, heeft bijvoorbeeld formulier controle met Javascript geen zin, want als je het uitschakelt, negeert hij dat en zal het formulier gewoon posten?

Het kan best zin hebben, je kan bijvoorbeeld een melding geven meteen met JavaScript, als dingen niet zijn ingevuld. Maar je moet nooit Alléén op javascript vertrouwen en altijd op de server de zaken nog eens langslopen.

Het voordeel van met JS controleren is dat er nog niets is gepost, maar er wel al meldingen kunnen worden gegeven. Hoe weinig ook, het scheelt wel wat in dataverkeer en ik vind het in sommige gevallen zelfs gebruiksvriendelijker.
Patrick Niezen schreef op 18.02.2008 14:39
Ps. Bij emailvalidatie zou je waarschijnlijk het e-mailadres moeten controleren in de database, dat deze al bestaat of niet - vergeet dat niet.
Daar heb je een UNIQUE-constraint voor, maar wanneer er toch al fouten zijn opgetreden kan een extra controle geen kwaad. Het is nogal lullig dat men daar dan in 2e instantie alsnog een foutmelding op krijgt.

Een SELECT-query is echter niet 100% betrouwbaar, je hebt namelijk geen flauw idee van wat er op hetzelfde moment allemaal op jouw database wordt uitgevoerd. Een UNIQUE is dus verplicht.
Robert_Deiman schreef op 18.02.2008 15:04
[quote='Jeffrey schreef op 18.02.2008 14:12']Ok, duidelijk.

Dus als ik het goed begrijp, heeft bijvoorbeeld formulier controle met Javascript geen zin, want als je het uitschakelt, negeert hij dat en zal het formulier gewoon posten?

Het kan best zin hebben, je kan bijvoorbeeld een melding geven meteen met JavaScript, als dingen niet zijn ingevuld. Maar je moet nooit Alléén op javascript vertrouwen en altijd op de server de zaken nog eens langslopen.

Het voordeel van met JS controleren is dat er nog niets is gepost, maar er wel al meldingen kunnen worden gegeven. Hoe weinig ook, het scheelt wel wat in dataverkeer en ik vind het in sommige gevallen zelfs gebruiksvriendelijker.[/quote]

Inderdaad ben ik met je eens.
In het laatste formulier die ik gemaakt heb, controleer ik live hetgeen wat ingevuld wordt nog voordat er uberhaupt gepost wordt en via een alert krijgt de gebruiker te zien welke velden incorrect zijn. Zo blijven alle correcte velden netjes ingevuld en highlight ik alle foute velden door met javascript de randen rood te schilderen.

Reageren