wil een veld controle hebben op een script van een login. Wanneer mensen hun profiel wijzigen moeten ze iets verplicht invullen, maar elke keer als ik op wijzig klik krijg ik wel de meldign dat bijv. Naam niet ingevuld maar hij veranderd hem wel gewoon en wordt dan wel gewoon door gelikt naar het volgende schrem, en als ik bijv. geen email adres invul dan veranderd hij het weer NIET.

zou er iemand iets voor kunnen verzinnen, gebruik nu deze code, dit is zonder controle...

BEDANKT


<?php 
include_once("config.php");

if ($_COOKIE['gebruikersnaam'] == "" AND $_COOKIE['loggedid'] == ""){
echo "$fout";
exit;
}
if($_POST[wijzig]){
$update = "UPDATE members SET naam='".$_POST['naam']."', achternaam='".$_POST['achternaam']."', adres='".$_POST['adres']."', postcode='".$_POST['postcode']."', woonplaats='".$_POST['woonplaats']."', geslacht='".$_POST['geslacht']."', land='".$_POST['land']."', email='".$_POST['email']."', gdatum='".$_POST['gdatum']."' WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."'";
$query = mysql_query("$update") or die(mysql_error());
echo "Profiel is succesvol gewijzigt, een moment geduld...";
echo "<META HTTP-EQUIV='refresh' CONTENT='2; URL=?page=fans/profiel&id=".$_COOKIE['gebruikersnaam']."'>";
}
else {
$select = "SELECT * FROM members WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."'";
$query = mysql_query($select);
$list = mysql_fetch_object($query);
echo "<table width=100%><form method=post action=?page=fans/wijzigen>
<TD><b>Gebruikersnaam:<TD>$list->gebruikersnaam<TR>
<TD><b>Status:<TD>$list->status<TR>
<TD><b>Email:<TD><input type=text name=email value='".$list->email."'> *<TR>
<TD><b>Voornaam:<TD><input type=text name=naam value='".$list->naam."'> *<TR>
<TD><b>Achternaam:<TD><input type=text name=achternaam value='".$list->achternaam."'> **<TR>
<TD><b>Geslacht:<TD><select name=geslacht><option value=Man>Man
<option value=Vrouw>Vrouw<option value=Stel>Stel<TR>
<TD><b>Adres:<TD><input type=text name=adres value='".$list->adres."'> **<TR>
<TD><b>Postcode:<TD><input type=text name=postcode value='".$list->postcode."'> **<TR>
<TD><b>Woonplaats:<TD><input type=text name=woonplaats value='".$list->woonplaats."'> *<TR>
<TD><b>Land:<TD><select name=land><option value=Nederland>Nederland
<option value=België>België<TR>
<TD><b>Geboorte Datum:<TD><input type=text name=gdatum value='".$list->gdatum."'><TR><TD><TD>
<input type=submit name=wijzig value=Wijzig></form></table>";
echo '<br>';
echo '* verplicht.';
echo '<br>';
echo '** verplicht maar maar wordt <b>niet</b> openbaar gemaakt voor leden.';
}

ob_end_flush();
?>
Ik hoop dat je al ervaren genoeg bent om dit er in te verwerken:

<?php
if ($_POST['submit'] && $_POST['Gebruikersnaam'] && $_POST['Status'])
{
$post_Gebruikersnaam = htmlentities($_POST['Gebruikersnaam']);
$post_status = htmlentities($_POST['Status']);
?>

Ik weet niet zeker of dit het gedeelte is waar je naar zoekt want ik heb het uit een erg gecompliceerd script gehaald.
?

Gebruik nu als mensen zich aanmelden deze code:


if($_POST[aanmelden])
 {
if(!$_POST[naam])
{
echo "<li>Geen voornaam ingevuld.";
}
if(!$_POST[gebruikersnaam])
{
echo "<li>Geen Gebruikersnaam ingevuld.";
}
if(!$_POST[wachtwoord])
{
echo "<li>Geen Wachtwoord ingevuld.";
}
if(!$_POST[email])
{
echo "<li>Geen E-mail adres ingevuld.";
}
elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",
$_POST[email])) {
echo "<li>Geen geldig Email Adres ingevuld.";
}


Maar ik heb geprobeerd deze in die andere ze zetten, maar ik krijg wel de melding van Geen voornaam ingevuld maar hij wordt alsnog door gelinkt en de naam is gewoon veranderd en een ongeldige email linkt hij hem niet door...
@Arjan: Gebruik nooit htmlentities() bij data die je in de database gaat wegschrijven. Dan kun je dit niet meer voor andere output dan html gebruiken.

htmlentities() gebruik je voor data die je uit de database hebt opgehaald en op een website wilt weergeven.
ik heb hem nu zo:


<?php 
include_once("config.php");

if ($_COOKIE['gebruikersnaam'] == "" AND $_COOKIE['loggedid'] == ""){
echo "$fout";
exit;
}
if($_POST[wijzig])
 {
if(!$_POST[naam])
{
echo "<li>Geen voornaam ingevuld.";
}
if(!$_POST[achternaam])
{
echo "<li>Geen Achternaam ingevuld.";
}
if(!$_POST[adres])
{
echo "<li>Geen Adres ingevuld.";
}
if(!$_POST[email])
{
echo "<li>Geen E-mail adres ingevuld.";
}
elseif(!eregi("[A-Za-z0-9_-]+([\.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([\.]{1}[A-Za-z0-9-]+)+",
$_POST[email])) {
echo "<li>Geen geldig Email Adres ingevuld.";
}
{
else {
$update = "UPDATE members SET naam='".$_POST['naam']."', achternaam='".$_POST['achternaam']."', adres='".$_POST['adres']."', postcode='".$_POST['postcode']."', woonplaats='".$_POST['woonplaats']."', geslacht='".$_POST['geslacht']."', land='".$_POST['land']."', email='".$_POST['email']."', gdatum='".$_POST['gdatum']."' WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."'";
$query = mysql_query("$update") or die(mysql_error());
echo "Profiel is succesvol gewijzigt, een moment geduld...";
echo "<META HTTP-EQUIV='refresh' CONTENT='2; URL=?page=fans/profiel&id=".$_COOKIE['gebruikersnaam']."'>";
}
}
else {
$select = "SELECT * FROM members WHERE gebruikersnaam='".$_COOKIE['gebruikersnaam']."'";
$query = mysql_query($select);
$list = mysql_fetch_object($query);
echo "<table width=100%><form method=post action=?page=fans/wijzigen>
<TD><b>Gebruikersnaam:<TD>$list->gebruikersnaam<TR>
<TD><b>Status:<TD>$list->status<TR>
<TD><b>Email:<TD><input type=text name=email value='".$list->email."'> *<TR>
<TD><b>Voornaam:<TD><input type=text name=naam value='".$list->naam."'> *<TR>
<TD><b>Achternaam:<TD><input type=text name=achternaam value='".$list->achternaam."'> **<TR>
<TD><b>Geslacht:<TD><select name=geslacht><option value=Man>Man
<option value=Vrouw>Vrouw<option value=Stel>Stel<TR>
<TD><b>Adres:<TD><input type=text name=adres value='".$list->adres."'> **<TR>
<TD><b>Postcode:<TD><input type=text name=postcode value='".$list->postcode."'> **<TR>
<TD><b>Woonplaats:<TD><input type=text name=woonplaats value='".$list->woonplaats."'> *<TR>
<TD><b>Land:<TD><select name=land><option value=Nederland>Nederland
<option value=België>België<TR>
<TD><b>Geboorte Datum:<TD><input type=text name=gdatum value='".$list->gdatum."'><TR>
<TD><b>School / Werk:<TD><input type=text name=schoolwerk value='".$list->schoolwerk."'><TR>
<TD><b>Hobbies<TD><input type=text name=hobby value='".$list->hobby."'><TR><TD><TD>
<input type=submit name=wijzig value=Wijzig></form></table>";
echo '<br>';
echo '* verplicht.';
echo '<br>';
echo '** verplicht maar maar wordt <b>niet</b> openbaar gemaakt voor leden.';
}

ob_end_flush();
?>


alvast bedankt voor de gene die mij kan vertellen wat hier verkeert staat...
Heeft er dan niemand hier een oplossing voor??
zet dit eens bovenaan je script:

ini_set('error_reporting', E_ALL);

en volgens mij hebben $_POST[] velden de volgende opmaak: $_POST['jouwding']

En probeer je php en html gescheiden te houden. Makkelijker debuggen. En ik zie geen ob_start staan maar wel ob_end_flush(); dat snap ik ook niet. Gebruik deze functie btw zo weinig mogelijk
ob_start staat op de index pagina, link zo binnen mijn site: ?page=blabla
Dat was geloof ik niet mijn enige opmerking
heb het nu boven in m'n pagina staan, maar hij geeft nog steeds aan: Naam niet ingevuld maar het wordt nog wel veranderd...

En heb het ook veranderd naar: $_POST['jouwding']
Klopt, zo heb jij het in je script gezet. Je controleert of een variabele is ingevuld, zo niet dan geef je een foutmelding. Nadat je klaar bent met de controles en dit dus helemaal hebt afgesloten, ga je de query uitvoeren. Maar dat wil je dus helemaal niet omdat niet alle gegevens correct zijn ingevoerd!

Kortom, de logica van jouw script is niet goed. Kijk eens naar dit voorbeeldje:
<?php
if(!$var1){
$error_message[] = 'x is niet ingevuld'; // array met foutmeldingen
}
if(!$var2){
$error_message[] = 'y is niet ingevuld'; // array met foutmeldingen
}
if(count($error_message) == 0){ // geen foutmeldingen
// uitvoeren en controleren van de query
}
else {
echo '<ul>';
foreach($error_message as $message){ // toon alle foutmeldingen
echo '<li>'.$message.'</li>';
}
echo '</ul>';
}
?>
Edit: typo

Reageren