ik ben een echte php noob. Dankzij een paar tutorials (voornamelijk op deze site) heb ik een beetje de basis geleerd. Ik heb mijn eerste scriptje gemaakt, een mailscript, deze werkt perfect maar ik heb toch nog een paar vragen. Hier is het script (ziet er misschien rommelig uit voor een pro :p )
___________________
if ("$bericht" != "")
{
mail ("[email protected]","Een bericht van $naam","Je hebt een bericht van $naam $achternaam
$bericht
Dit bericht is verstuurd op $datum om $tijd");
echo "Bedankt voor uw bericht $naam <br>
<br>
Dit is het bericht dat u ons hebt gestuurd:<br>
$bericht <br>
<br>
Dit bericht is verstuurd op $datum om $tijd";
}
else
{
echo "Er is iets mis gegaan!<br>
<a href=\"javascript:history.back(1)\">Probeert u het nog eens.</a>";
}
?>
________________
Nu gebruik ik bij de 'if' dit: ("$bericht" != "")
Hij controleert nu dus alleen of het 'bericht' veld is ingevuld. Ik zou graag van iemand willen weten hoe ik zorg dat alle velden worden gecontroleerd. En dat ik bij de output van 'else' niet 'er is iets misgegaan probeer het nog eens' zie maar dat ik dit zie: U heeft de volgende velden niet ingevuld: naam, bericht en ......
En nog 1 vraagje, kan ik leestekens gebruiken achter een variabele? VB: echo "Hey $naam!"
Zodat de output bijv wordt: Hey Ecraser!
<?
if (!isset($_POST['bericht']) || !isset($_POST['naam']) || !isset($POST['achternaam']) || !isset($_POST['email']))
{
// stuur email
}
else
{
if (!isset($_POST['bericht'])
echo "U heeft geen bericht ingevuld<br>";
if (!isset($_POST['naam'])
echo "U heeft geen naam ingevuld<br>";
if (!isset($_POST['achternaam'])
echo "U heeft geen achternaam ingevuld<br>";
if (!isset($_POST['email'])
echo "U heeft geen email ingevuld<br>";
}
?>
Zo zou ik eerst ff doen om te beginnen ;)
Ook moet je in de mail() regel het volgende doen (moet, moet.. kan)
Om een uitroepteken te gebruiken kun je het volgende doen:
<?
echo "Hallo " . $_POST['naam'] . "!";
?>
Die puntjes staan om het aan het vorige toe te voegen. Verder moet je wanneer je een $_POST[] gebruikt de zin afkappen met " [toevoegen] . $_POST weer toevoegen met een . en dan weer beginnen "..
de || staat voor 'OF'. Dus if (!isset($_POST['naam'] OF !isset($_POST['achternaam'])) .. daar staat || dus voor .. :)
isset() is een functie van PHP en kijkt of het is gezet.. spreekt voor zich.. http://www.php.net/isset
Hier heb ik een paar tipcs voor u -->
<?php
//variabelen opvangen
$naam = $_POST['naam'];
$achternaam = $_POST['achternaam'];
$email = $_POST['email'];
$bericht = $_POST['bericht'];
?>
Dit is niet nodig doet hij al automatisch maar toch kan geen kwaad
<?php
if ("$bericht" != "")
//Klopt niet echt moet zo zijn
if ($bericht != "")
of
if (!$bericht)
?>
Nee op mijn server moet ik ze wel op die manier opvangen want register_globals (ofzoiets lol) is uitgeschakeld, volgens mijn host is dat om te zorgen dat hackers niet de variabelen op kunnen vangen...........
Maar ik heb nu even een vraagje...
Bas gaf mij dat script, van kopieren en plakken leer je niks dus ik heb dat script m.b.v bas zijn uitleg gemaakt.
Ik kreeg een error, omdat ik dit kreeg van Bas:
if (!isset($_POST['naam'])
echo "U heeft geen naam...
Ik heb het nu zo
if (!isset($_POST['naam']))
echo "U heeft geen naam...
Voor degenen die het niet zien, een extra haakje...
Ik krijg nu geen error meer.
Nu is het probleem dat als ik een veld vergeet de output van else wel werkt... zonder errors tenminste. Maar hij laat alleen niet zien welke velden ik ben vergeten...
zo ziet het er uit:
<?
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (!isset ($_POST['naam']))
echo "Uw naam<br>";
if (!isset ($_POST['email']))
echo "Uw e-mail adres<br>";
if (!isset ($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
?>
Aangezien ik zelf wat toegevoegd heb kan dat misschien de oorzaak zijn.
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (empty($_POST['naam']))
echo "Uw naam<br>";
if (empty($_POST['email']))
echo "Uw e-mail adres<br>";
if (empty($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
OH oh... die else werkt perfect maar nu heb ik wéér een probleem :s
Als ik de benodigde velden invul dan wordt de output:
U hebt de volgende berichten niet ingevuld:
Probeer het nog eens...
Hiertussen horen dus de velden te staan die je bent vergeten in te vullen maar ze zijn ingevuld dus moet hij de mail verzenden en dat gebeurd dus niet.
Zo ziet mijn script er uit:
if (!isset($_POST['bericht']) || !isset($_POST['naam']) || !isset($_POST['email']))
{
//mailscript
echo "Bedankt voor uw bericht $naam <br>
<br>
Dit is het bericht dat u ons hebt gestuurd:<br>
$bericht <br>
<br>
Dit bericht is verstuurd op $datum om $tijd";
}
else
{
echo "U bent het volgende vergeten in te vullen:<br><br>";
if (empty($_POST['naam']))
echo "Uw naam<br>";
if (empty($_POST['email']))
echo "Uw e-mail adres<br>";
if (empty($_POST['bericht']))
echo "Het bericht<br><br>";
echo "<a href=\"javascript:history.back(1)\">Verbeter deze fout(en) a.u.b</a>";
}
Je gebruikt nergens de mail functie, je hebt dat stuk weggelaten -->
<?php
mail ("[email protected]","Een bericht van $naam","Je hebt een bericht van $naam $achternaam
ja weet ik, ik heb //mailscript neergezet ipv de mailscript die ik gebruik. Maar het probleem is dat hij dit mailscript niet uitvoert als alle velden zijn ingevuld. als alles is ingevuld lijkt het wel of hij de else uitvoert en dus niet de mail verstuurt. Er zit dus waarschijnlijk iets fout in de 'if'