Tips till gästboken: Undvika notice, hantera felmeddelanden, lägga in värden i formulär och lite annat
Här är ett exempel med några tips:
<?php // Ha gärna logiken längst upp och utskrifterna längst ner. // Skapar en tom array för felmeddelanden. $errors = []; // Skapar en tom sträng för meddelanden för att inte riskera att få // notice om att variabeln inte finns när meddelandet ska skrivas ut. $message = ''; // isset() kollar om $_POST['namn'] finns för att inte få // felmeddelande och utskrift när sidan laddas första gången. if (isset($_POST['namn'], $_POST['alder'])) { $ok = true; // Variabeln håller reda på om något är fel. if(empty($_POST['namn'])){ // empty() kollar om inget är inmatat. $errors[] = 'Du har inte angett namn.'; // Lägger till ett felmeddelande. $ok = false; // Nu har ett fel hittats. } if($_POST['namn'] == 'Daniel'){ $errors[] = 'Du får inte ange detta namn.'; // Lägger till ett felmeddelande. $ok = false; // Nu har ett fel hittats. } if(empty($_POST['alder'])){ // empty() kollar om inget är inmatat. $errors[] = 'Du har inte angett ålder.'; // Lägger till ett felmeddelande. $ok = false; // Nu har ett fel hittats. } else { if(!is_numeric($_POST['alder'])){ // Kollar om inmatningen INTE består av siffror. $errors[] = 'Angiven ålder måste bestå av siffror.'; // Lägger till ett felmeddelande. $ok = false; // Nu har ett fel hittats. } } if ($ok){ // Utförs om inga fel hittats. Samma som att skriva $ok == true $message = 'Namnet är ' . $_POST['namn'] . '<br>'; if($_POST['namn'] == $_POST['namn2']){ $message = $message.'SAMMA IGEN <br>'; } } } else { // $_POST['namn'] skapas om det inte finns för att undvika // fel i formuläret där det används. $_POST['namn'] = ''; } include 'head.php'; echo $message . '<br>'; // Skriver ut eventuellt meddelande eller tom sträng. // Skriver ut felmeddelanden. $i = 0; while ($i < count($errors)){ echo '<div class="error">' . $errors[$i] . '</div>'; $i++; } /* .error { border: black 1px solid; color: red; padding: 10px; margin: 10px 0px; } */ // Skickar med ett "gömt" värde i formuläret för att kunna jämföra // med nästa inmatning som görs. echo ' <form method="post"> <input type="text" placeholder="Namn" name="namn"><br> <input type="text" placeholder="Ålder" name="alder"><br> <input type="hidden" name="namn2" value="' . $_POST['namn'] . '"> <input type="submit" name="submit" value="Skicka"> </form> '; // Hela formuläret ligger i en "php-rad". include 'foot.php';
Alternativt kan man hantera formuläret så här där php startas och stängs mitt i HTML-koden:
<?php // Alla kontroller här som ovan. include('head.php'); // Alla utskrifter här som ovan. ?> <form method="post"> <input type="text" placeholder="Namn" name="namn"><br> <input type="text" placeholder="Ålder" name="alder"><br> <input type="hidden" name="namn2" value="<?php echo $_POST['namn'] ?>"> <input type="submit" name="submit" value="Skicka"> </form> <?php include('foot.php');
Kolla upp strängfunktionerna för att hantera html-taggar i saker som matas in i formulär.