Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Die
kry100kry100
post 7.09.2009, 20:28:12
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.06.2009

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


Witam. Czy da się jakoś użyć die bez psucia szablonu? Bo trochę brzydko wygląda w pół ucięty szablon tongue.gif Myślałem może nad jakimś systemem błędów, ale jakoś za bardzo nie wiem jak się za niego zabrać. Dałby ktoś jakieś podpowiedzi?
Go to the top of the page
+Quote Post
Wicepsik
post 7.09.2009, 20:42:55
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Pokaż skrypt do którego potrzebny Ci jest die.


--------------------
Go to the top of the page
+Quote Post
nexis
post 7.09.2009, 20:43:38
Post #3





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Najprościej treść wyświetlać na samym końcu i wtedy masz możliwość przerwania programu z powodu jakiegoś błędu bez efektu "urwanych stron". Np.:
  1. <?php
  2. $output = '<h1>Nagłówek</h1>';
  3. $output .= '<p>Treść</p>';
  4. if (true) {
  5. exit('Wystąpił błąd i przerywam działanie programu!');
  6. }
  7. $output .= '<h2>Stopka</h2>';
  8. echo $output;
  9. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
kry100kry100
post 7.09.2009, 20:45:44
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.06.2009

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


Jest to skrypt rejestracji:

  1. <?php
  2. require_once("config.php");
  3. $wynik = mysql_query("SELECT * FROM gadu")
  4. or die('Błąd zapytania');
  5.  
  6. if(mysql_num_rows($wynik) > 0) {
  7. while($r = mysql_fetch_assoc($wynik))
  8. {
  9. if($r['ip'] == $_SERVER['REMOTE_ADDR']){
  10. die ('1 IP = 1 konto');
  11. }
  12. }
  13. }
  14.  
  15. echo '<form action="" method="post" enctype="multipart/form-data" />
  16. Login:<br />
  17. <input name="login" type="text" maxlength="15" /><br />
  18. Hasło:<br />
  19. <input name="haslo" type="password" /><br />
  20. Potwierdź hasło:<br />
  21. <input name="haslo1" type="password" /><br />
  22. E-mail:<br />
  23. <input name="email" type="text" /><br /><br />
  24. Przepisz kod:<br />
  25. <img src="token.php" alt="token" maxlength="3" /><br />
  26. <input name="token" type="text" /><br />
  27. <input type="submit" value="Wyslij" />
  28. </form>';
  29.  
  30.  
  31. $login = $_POST['login'];
  32. $haslo = md5($_POST['haslo']);
  33. $haslo1 = md5($_POST['haslo1']);
  34. $email = $_POST['email'];
  35. $token = $_POST['token'];
  36. $punkty = '20';
  37. $ip = $_SERVER['REMOTE_ADDR'];
  38.  
  39.  
  40. $login = htmlentities($login, ENT_QUOTES);
  41. $haslo = htmlentities($haslo, ENT_QUOTES);
  42. $haslo1 = htmlentities($haslo1, ENT_QUOTES);
  43. $email = htmlentities($email, ENT_QUOTES);
  44. $token = htmlentities($token, ENT_QUOTES);
  45.  
  46. $checkuser = mysql_query("SELECT login FROM gadu WHERE login='$login'");
  47. $username_exist = mysql_num_rows($checkuser);
  48.  
  49. $em = mysql_query("SELECT email FROM gadu WHERE email='$email'");
  50. $email_check = mysql_num_rows($em);
  51.  
  52. if(isset($_POST['login']))
  53. {
  54. if(empty ($login) || empty($haslo) || empty($email))
  55. {
  56. die ('<br />Wszystkie pola muszą zostać wypełnione');
  57. }
  58. if(!ereg("[a-zA-Z0-9\-\_\.]+\@[a-zA-Z0-9\-\_\.]+\.[a-zA-Z]" , $email)){
  59. die ('<br />Nie poprawny adres e-mail');
  60. }
  61. if(!$haslo==$haslo1){
  62. die ('<br />Hasła muszą być takie same');
  63. }
  64. if($username_exist > 0){
  65. die ('<br />Ta nazwa użytkownika jest już zajęta');
  66. }
  67. if($email_check > 0){
  68. die ('<br />Ten adres email został juz użyty');
  69. }
  70. if($token==$_SESSION['captcha'])
  71. {
  72. $_SESSION['reg'] = ''.$login.'';
  73. $ins = mysql_query("INSERT INTO `gadu` (login, haslo, email, punkty, ip) VALUES ('$login','$haslo','$email','$punkty','$ip')");
  74. }
  75. else
  76. {
  77. die ('<br />Błędny kod');
  78. }
  79. if($ins)
  80. {
  81. echo '<br />Gratulujemy, zostałeś pomyślnie zarejestrowany';
  82. }
  83. }
  84. ?>
Go to the top of the page
+Quote Post
Void
post 7.09.2009, 21:12:49
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 15
Dołączył: 2.02.2007

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


IMHO przy walidacji formularza używanie die() jest bez sensu. No bo jeśli użytkownik wypełni np. 3 pola formularza źle, to nie dowie się o tym od razu, bo pojawi się tylko jeden komunikat i skrypt zostanie przerwany. Poprawi pole, znowu wyśle formularz pojawi się kolejny błąd itd. Poza tym błędne wypełnienie pola formularza nie jest od razu powodem do zakończenia całego skryptu. Lepiej jest wygenerować stronę z formularzem (można wtedy wpisać dane do pól, które wypełnione zostały poprawnie) i ładnymi komunikatami o błędach smile.gif Stwórz sobie więc jakąś zmienną i dopisuj do niej ewentualne komunikaty o błędach. A potem sprawdź czy zmienna ma jakąś wartość i jeśli tak - wyświetl komunikaty o błędach.
Go to the top of the page
+Quote Post
bmL
post 8.09.2009, 01:34:13
Post #6





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Nie chcę nikomu nic wpajać ale naprawdę lubię taką obsługę błędów formularzy, zawsze można ją szybko na poczekaniu napisać i nie jest zła:
  1. function viewErrors($errorsArr, $backURL = 'java script:history.back()')
  2. {
  3. if($errorsArr)
  4. {
  5. echo '<b>Wystąpiły następujące błędy:</b> <ul class="errors">';
  6. foreach (errorsArr as $error)
  7. {
  8. echo '<li>' . $error . '</li>';
  9. }
  10. echo '</ul>';
  11. echo '<a href="' . $backURL . '">Powrót</a>';
  12. return true;
  13. }
  14. return false;
  15. }
  16.  
  17. if(!$haslo==$haslo1){
  18. $errors[] = '<br />Hasła muszą być takie same';
  19. }
  20. if($username_exist > 0){
  21. $errors[] = '<br />Ta nazwa użytkownika jest już zajęta';
  22. }
  23. if($email_check > 0){
  24. $errors[] = '<br />Ten adres email został juz użyty';
  25. }
  26.  
  27. if(!viewErrors($errors))
  28. {
  29. // wszystko ok
  30. }


Ten post edytował bmL 8.09.2009, 01:37:24


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
kry100kry100
post 8.09.2009, 18:06:22
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 17.06.2009

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


Dzięki bmL. Wkradły się 2 błędy, ale bez problemu je usunąłem i skrypt działa jak należy smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2024 - 10:34