script voor gastenboek...

Status
Niet open voor verdere reacties.

hitme007

Gebruiker
Lid geworden
16 jun 2004
Berichten
131
Jaja, daar ben ik weer... de phpnoob :p

Gaat om het volgende script:

PHP:
<?

require('./admin/config.php');

if(isset($_POST["submit"]) == FALSE){

	?>
	<form method="POST">
	<input type="text" name="naam"><br>
	<input type="text" name="email"><br>
	<input type="text" name="commentaar"><br>
	<input type="submit" name="submit" value="versturen">
	</form>
	<?

}

else{

	if(isset($_POST["naam"]) == FALSE){
	echo " Je hebt geen naam ingevuld. ";
	echo " Klik <a href=" . $_SERVER["PHP_SELF"] . ">hier</a> om het nog eens te proberen. ";
	}

	else{
	mysql_query("INSERT INTO gastenboek (naam,email,commentaar) VALUES ('" . $_POST["naam"] . "','" . $_POST["email"] . "','" . $_POST["commentaar"] . "')") or die(mysql_error());
	echo " Bericht is succesvol toegevoegd aan het gastenboek. ";
	echo " Klik <a href=\"gastenboek.php\">hier</a> om terug te gaan naar het Gastenboek. ";
	}

}

?>

Script werkt wel, maar als je de naam vergeet in te vullen zou hij met een melding moeten komen, maar hij gaat gewoon door alsof er niets aan de hand is,...

waar zit de fout?
hints please, geen oplossingen, anders leer ik er nog geen donder van ;) :p
 
Laatst bewerkt:
Hoi,

De functie isset is een boolean controle.. Die controleert dus of de variabel 'naam' bestaat..

Een tekstveld geeft altijd een waarde terug als deze in je form staat.

Je moet dus controleren of er tekst in het textfield staat.

:)
 
Ik neem aan dat je het al geprobeert is :D

Als je het toegepast hebt zal het iets op

PHP:
<?

require('./admin/config.php');

if(isset($_POST["submit"]) == FALSE)
{ ?>
    <form method="POST">
    <input type="text" name="naam"><br>
    <input type="text" name="email"><br>
    <input type="text" name="commentaar"><br>
    <input type="submit" name="submit" value="versturen">
    </form>
<? }
else
{
    if($_POST['naam'] == "" || $_POST['commentaar'] == "")
    {
        echo " Je hebt geen naam ingevuld. ";
        echo " Klik <a href=" . $_SERVER["PHP_SELF"] . ">hier</a> om het nog eens te proberen. ";
    }
    else
    {
        mysql_query("INSERT INTO gastenboek (naam,email,commentaar) VALUES ('" . $_POST["naam"] . "','" . $_POST["email"] . "','" . $_POST["commentaar"] . "')") or die(mysql_error());
    echo " Bericht is succesvol toegevoegd aan het gastenboek. ";
    echo " Klik <a href=\"gastenboek.php\">hier</a> om terug te gaan naar het Gastenboek. ";
    }

}

?>

Je kunt ook kijken of email niet is ingevuld. Als email niet is ingevuld, zorg je ervoor dat er in de kolom email een standaard waarde komt. Ik gebruik dan altijd 0. Dan check je in het script of er in de kolom 0 staat, maakt ie van de naam geen link naar het email adres. Anders plak je er gewoon een link met mailto:$rij->email.

btw: waarom gebruik je hier nu wel ineens seperators? :confused:
 
Mmmmz, tuurlijk.... stupid me :p

dit is het script "for now"
kan er nog wat verbeterd worden???

PHP:
<?

require('./admin/config.php');

$datum = mktime(date("H i s n j Y"));

if(isset($_POST["submit"]) == TRUE){

    if($_POST["naam"] != "" && $_POST["email"] != "" && $_POST["commentaar"] != ""){
    mysql_query("INSERT INTO gastenboek (naam,email,commentaar,datum) VALUES ('" . $_POST["naam"] . "','" . $_POST["email"] . "','" . $_POST["commentaar"] . "','" . $datum . "')") or die(mysql_error());
    header("Location: gastenboek.php");
    exit();
    }
    else{
    $error = "Je hebt niet alle velden ingevult";
    }
}
    
?>

<table>
<form method="POST">
<tr><td><b>Let op:</b> Alle velden dienen te worden ingevuld!</tr></td>
<tr><td>&nbsp;</tr></td>
<tr><td><b>Naam:</b></tr></td>
<tr><td><input type="text" name="naam" size="50"></tr></td>
<tr><td><b>E-Mail:</b></tr></td>
<tr><td><input type="text" name="email" size="50"></tr></td>
<tr><td><b>Commentaar:</b></tr></td>
<tr><td><textarea name="commentaar" rows="10" cols="38"></textarea></tr></td>
<tr><td>&nbsp;</tr></td>
<tr><td><input type="submit" name="submit" value="Versturen"></tr></td>
<tr><td>&nbsp;</tr></td>
<tr><td><? if(isset($error) == TRUE){ echo $error; } ?></tr></td>
</table>
</form>
 
Laatst bewerkt:
Mwa, je had het geheel in een if() kunnen zetten. Nu gebruik je een die(). Als je dit bestand included in een ander bestand dan stopt die ook. Dus echo's onderaan van copyright zullen niet weergeven worden.

ennum, onderaan staat </tr></td> elke keer bij het afsluiten van een tabel. Dat zou je kunnen veranderen in </td></tr> ;)

Voorderest, geen slecht script
 
Beter nog, je kunt beter deze functie gebruiken:

PHP:
function slashes($invoer)
{
  if(get_magic_quotes_gpc() == FALSE)
  {
    $invoer = addslashes($invoer);
  }
  return $invoer;
}

Zet dit bovenaan het script en alles dat in de database word gezet, zet je tussen slashes().
 
Ja, deze functie ken, maar er is mij nog niet echt duidelijk wat nou precies de voordelen hiervan zijn...

het script werkt toch ook zonder?

kan iemand mij, in noobtaal :p , uitleggen wat de vorrdelen hiervan zijn?
 
Post maar eens een bericht met \ " enz... dan zie je als het goed is fouten ;)

Of je moet je server brak ingesteld hebben met magic_quotes op on.
 
a, ok... ikke begrijpe :)

volgende vraag:

PHP:
<?

error_reporting(E_ALL);

require('./admin/config.php');

$datum = mktime(date("H i s n j Y"));

function slashes($tekst){
  if(get_magic_quotes_gpc() == FALSE){
  $tekst = addslashes($tekst);
  }
return $tekst;
}

if(isset($_POST["submit"]) == TRUE){

	if($_POST["naam"] != "" && $_POST["email"] != "" && $_POST["commentaar"] != ""){
	mysql_query("INSERT INTO gastenboek (naam,email,commentaar,datum) VALUES ('" . slashes($_POST["naam"]) . "','" . slashes($_POST["email"]) . "','" . slashes($_POST["commentaar"]) . "','" . slashes($datum) . "')") or die(mysql_error());
	header("Location: gastenboek.php");
	exit();
	}
	else{
	$error = "Je hebt niet alle velden ingevult";
	}
}
	
?>

<table>
<form method="POST">
<tr><td><b>Let op:</b> Alle velden dienen te worden ingevuld!</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><b>Naam:</b></td></tr>
<tr><td><input type="text" name="naam" size="50"></td></tr>
<tr><td><b>E-Mail:</b></td></tr>
<tr><td><input type="text" name="email" size="50"></td></tr>
<tr><td><b>Commentaar:</b></td></tr>
<tr><td><textarea name="commentaar" rows="10" cols="38"></textarea></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><input type="submit" name="submit" value="Versturen"></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><? if(isset($error) == TRUE){ echo $error; } ?></td></tr>
</table>
</form>

hoe kan ik tegen gaan dat mensen HTML in de tekstvelden kunnen typen??
weet niet echt waar ik dat moet zoeken...hint?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan