Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Walidacja formularza bez JS, wyjątki PHP.
Damonsson
post
Post #1





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Mam pytanie: Mam walidację formularza po stronie przeglądarki, wszystko działa super. Ale załóżmy, że użytkownik wyłączy JS. Wtedy będzie mógł wpisać cokolwiek i przejdzie formularz.

Aktualnie zrobiłem tak, że jeśli użytkownik wypełni źle jakieś pole, np. za mało znaków. To po SUBMIT dostanie czystą stronę z wyjątkiem "login => String musi mieć minimum 3 znaki".

Widok:
  1. <form method="post" action="<?php echo URL; ?>register/create">
  2.  
  3. <label>Login</label>
  4. <span class="w">
  5. <input id="login" name="login" type="text" tabindex="1" /><br />
  6. </span>
  7. <label> </label>
  8. <p>
  9. <button id="submit" name="submit" type="submit" tabindex="8" >Sign up</button>
  10. </p>
  11.  
  12. </form>


funkcja create:
  1. if (isset($_POST['submit'])) {
  2. try {
  3. $form = new Form();
  4.  
  5.  
  6. $form->post('login')
  7. ->val('minlenght', 3);
  8. $form->post('email')
  9. ->val('validateEmail');
  10.  
  11. $form->submit();
  12.  
  13. $data = array(
  14. 'login' => $this->cleanString($_POST['login']),
  15. 'password' => $_POST['password'],
  16. 'email' => $_POST['email']
  17. );
  18.  
  19. $this->model->create($data);
  20. header('Location: ' . URL . 'register');
  21. } catch (Exception $e) {
  22. echo $e->getMessage();
  23. }
  24. }


funkcja minlenght:
  1. if (strlen($data) < $arg) {
  2. return "String musi mieć minimum $arg znaków";
  3. }


funkcja submit:
  1. public function submit() {
  2.  
  3. if (empty($this->_error)) {
  4. //jeśli walidacja ok
  5. return true;
  6. } else {
  7. //jeśli źle wypełnione
  8. $str = '';
  9. foreach ($this->_error as $key => $value) {
  10. $str .= $key . ' => ' . $value . "\n";
  11. }
  12. throw new Exception($str);
  13. }
  14. }


Chciałbym, aby to było jakoś bardziej przyjazne dla użytkownika i na przykład, przenosiło użytkownika z powrotem na stronę z formularzem i gdzieś tam była informacja, że "login => String musi mieć minimum 3 znaki".
Nie wiem czy w ogóle używanie wyjątków do takich sytuacji jest ok? I czy to co chcę osiągnąć jest możliwe, używając wyjątków? Może kompletnie, źle się do tego zabrałem?
Po prostu nie wiem jak się za to zabrać, wszystko było super, do momentu kiedy zdałem sobie sprawę, że jednak warto byłoby pokazać użytkownikowi co zrobił źle w przyjaźniejszy sposób.
Próbowałem patrzeć jak to jest w różnych frameworkach, ale tylko jeszcze bardziej zgłupiałem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 13:16