Hi,
ik probeer als oefening een formulier te maken, waar iemand dus enkele gegevens invult. Nu heb ik dus enkele variabelen:

$_POST['achternaam']
$_POST['voornaam']
$_POST['email']

En nog een aantal.
Nu wilde ik als iemand een veld leeglaat, hem doorsturen naar een pagina die vriendelijk verzoekt om het nogmaals in te vullen.
Dit lukte ook wel:

<?php if ($_POST['voornaam'] == NULL) {
header('Location: Misguide.xhtml');
}
?>
Het punt is alleen dat als je een grote site krijgt met allerlei variabelen, je dit telkens moet copy pasten voor elk veld.
Is er een manier om de code zo te schrijven dat:

<?php if ($_POST['*elke variabele die gepost word*'] == NULL) {
header('Location: Misguide.xhtml');
}
?>
Dus dat elke variabele die ontbreekt genoeg is om deze header in gang te krijgen?
Ik weet niet of dat mogenlijk is (misschien dat iemand anders hier meer zekerheid in kan geven), maar ik kan je wel 1 tip geven en dat is ipv dit te gebruiken:


<?php
if ($_POST['voornaam'] == NULL) {
header('Location: Misguide.xhtml');
}
?>

dit te doen:

<?
if (isset($_POST['voornaam'])) {
header("Location: Misguide.xhtml");
}
?>

http://de3.php.net/manual/nl/function.isset.php

voor meer info over de functie isset()
@Joshua

je bedoelt dan dit:


<?
 if (!isset($_POST['voornaam'])) {
    header("Location: Misguide.xhtml");
 }
?> 
Joshua schreef op 11.05.2006 13:38
Ik weet niet of dat mogenlijk is (misschien dat iemand anders hier meer zekerheid in kan geven), maar ik kan je wel 1 tip geven en dat is ipv dit te gebruiken:


<?php
if ($_POST['voornaam'] == NULL) {
header('Location: Misguide.xhtml');
}
?>

dit te doen:

<?
if (isset($_POST['voornaam'])) {
header("Location: Misguide.xhtml");
}
?>

http://de3.php.net/manual/nl/function.isset.php

voor meer info over de functie isset()


DE hearder moet gaan werken als de velden leeg zijn, jij activeert de heardera als ze wel bestaan.

<?
if (isset($_POST['voornaam'])) {
header("Location: Misguide.xhtml");
}
?>

moet worden

<?
if (!isset($_POST['voornaam'])) {
header("Location: Misguide.xhtml");
}
?>

dat uitroepteken moet er dus nog bij, dat maakt veel verschil

srry, ik was net iets later...
Sorry, was de ! inderdaad vergeten.
Dankje voor de uitleg, maar je moet dit dus doen voor elk veld van het formulier?
Ja, voor zover ik weet wel.
<?
if (
!isset($_POST['voornaam']) || !isset($_POST['achternaam']) ||
!isset($_POST['email'])
) {
header("Location: Misguide.xhtml");
}

# || is ore als compacte schrijfwijze is een of variant
# hier ging het topic toch over?
?>
Overigens heb ik !isset geprobeerd maar als ik dan mijn voornaam niet invul negeert hij dat gewoon en doet de header niks.
Ik heb daar ook wel eens last van gehad, heb je meerdere !isset's in 1 if gestopt, want bij mij werkt het dan niet meer.
Nee, ik heb een voorbeeld ook nog letterlijk geplakt die hier staat met de uitroepteken:

<?php
if (!isset($_POST['voornaam'])) {
header("Location: Misguide.xhtml");
}
?>

Nu geeft het gewoon geen voornaam weer en gaat verder met de achternaam weer te geven. Zou de waarde van een lege tekstfield een byte Null opleveren?
(Ik las er iets over bij de isset functie verklaring, gepost hierboven).

Reageren