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?
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?
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.
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.
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.
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.
[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.