senca99 Posted July 9, 2011 Share Posted July 9, 2011 Hey y'all! I was writing a simple registrationform with some checks in it. I made a main registration page and a page with 3 functions ==> show_registration_form, process_registration_form and validate_registration_form. The page displays well until I click on the submit button. For some reason, wether the input is correct or not, I get a 404 because you get linked to an unexisting link but I don't know why. The regular url is this: somethin.be/tweedekans/registreer.php but when submitting the url changes to this: somethin.be/tweedekans/' . /tweedekans/registreer.php . ' with the magical allknown message: The requested URL /tweedekans/' . /tweedekans/registreer.php . ' was not found on this server. The 2 files are both located in the same directory on the server. Why is this happening? This is the code in the main page: <?php include("header.php"); include("functions_for_registration.php"); echo'<p>Registreer</p>'; if(isset($_POST['_submit_check'])) { if($form_errors = validate_registration_form()) { show_registration_form($form_errors); } else { process_registration_form(); } } else { show_registration_form(); } include("footer.php"); ?> And these are the functions: <?php function show_registration_form($errors = ''){ if(isset($_POST['_submit_check'])) { $defaults = $_POST; } if($errors) { $error_text = '<tr><td>you need to correct the following errors:'; $error_text .= '</td><td><ul><li>'; $error_text .= implode('</li><li>', $errors); $error_text .= '</li></ul></td></tr>'; } else { $error_text = ''; } /* Initialisatie van de vars */ $voornaam=""; $familienaam=""; $straat=""; $huisnr=""; $postcode=""; $plaats=""; $mail=""; $telnr=""; $bijzonderheden=""; /* De code voor het inschrijvingsformulier */ print<<<_HTML_ <form method="post" action="' . $_SERVER[php_SELF] . '"> <p>Vul je voornaam in: <br /> <input type="text" value="' .$voornaam. '" name="vnaam" /> </p> <p>Vul je naam in: <br /> <input type="text" value="' .$familienaam. '" name="naam" /> </p> <p>Straat: <br /> <input type="text" value="' .$straat. '" name="straat" /> </p> <p>Huisnummer: <br /> <input type="text" value="' .$huisnr. '" name="huisnr" /> </p> <p>Postcode: <br /> <input type="text" value="' .$postcode. '" name="postcode" /> </p> <p>Stad: <br /> <input type="text" value="' .$plaats. '" name="plaats" /> </p> <p>E-mail: <br /> <input type="text" value="' .$mail. '" name="mail" /> </p> <p>TELnr(enkel cijfers!): <br /> <input type="text" value="' .$telnr. '" name="telnr" /> </p> <p>Extra opmerkingen?: <br /> <input type="text" value="' .$bijzonderheden. '" name="bijzonderh" /> </p> </p> <input type="submit" value="Verzenden" /> <input type="reset" value="Wissen" /> </p> </form> _HTML_; } function validate_registration_form(){ $errors = array(); if(empty($POST['vnaam'])){ $errors[] = 'U vergat een voornaam in te vullen'; } if(empty($POST['naam'])){ $errors[] = 'U vergat een familienaam in te vullen'; } if(empty($POST['straat'])){ $errors[] = 'U vergat een straatnaam in te vullen'; } if(empty($POST['huisnr'])){ $errors[] = 'U vergat een huisnummer in te vullen'; } if(empty($POST['plaats'])){ $errors[] = 'U vergat een woonplaats in te vullen'; } if(empty($POST['mail'])){ $errors[] = 'U vergat een e-mailadres in te vullen'; } if(empty($POST['telnr'])){ $errors[] = 'U vergat een telefoonnummer in te vullen'; } return $errors; } function process_registration_form(){ print 'Dit formulier is geslaagd voor de test!'; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/241510-when-executing-a-function-the-url-changes-to-something-totally-awkward/ Share on other sites More sharing options...
PFMaBiSmAd Posted July 9, 2011 Share Posted July 9, 2011 Because you are using a heredoc string to make your form, everything you put between the starting and ending <<<_HTML_ tags is part of that string. Don't use the dot . concatenation operator (the dots and any extra quotes become part of the string.) Just put php variables directly inside a heredoc string without any concatenation. Quote Link to comment https://forums.phpfreaks.com/topic/241510-when-executing-a-function-the-url-changes-to-something-totally-awkward/#findComment-1240583 Share on other sites More sharing options...
senca99 Posted July 12, 2011 Author Share Posted July 12, 2011 Because you are using a heredoc string to make your form, everything you put between the starting and ending <<<_HTML_ tags is part of that string. Don't use the dot . concatenation operator (the dots and any extra quotes become part of the string.) Just put php variables directly inside a heredoc string without any concatenation. Sorry for the late reply, I wasn't tracking this thread by e-mail (which I thought I did). Thank you for the help, I will try it! Quote Link to comment https://forums.phpfreaks.com/topic/241510-when-executing-a-function-the-url-changes-to-something-totally-awkward/#findComment-1241772 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.