Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziwaczny błąd w formularzu do wysyłania maili
Gren-landia
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.02.2006
Skąd: Świnoujście

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


Oto prosty formularz kontaktowy:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  5. <title>CONTACT</title>
  6. <link rel="STYLESHEET" type="text/css" href="style.css">
  7. </head>
  8. <body style="background: white;">
  9. <br>
  10. <center>
  11. <b>CONTACT</b>
  12. </center>
  13. <p align="center">* <i>- Required!!!</i></p><br>
  14.  
  15. <?
  16.  
  17. if(isset($name))
  18. if($name==""){
  19. $errorcolor_1 = "red";
  20. $error = "error";
  21. }
  22. else{
  23. $errorcolor_1 = "black";
  24. }
  25.  
  26. if(isset($comment))
  27. if($comment==""){
  28. $errorcolor_2 = "red";
  29. $error = "error";
  30. }
  31. else{
  32. $errorcolor_2 = "black";
  33. }
  34.  
  35. if(isset($contact))
  36. if($contact==""){
  37. $errorcolor_3 = "red";
  38. $error = "error";
  39. }
  40. else{
  41. $errorcolor_3 = "black";
  42. }
  43.  
  44. if(!$action){
  45. $action = "note";
  46. }
  47.  
  48. if($error=="error"||$action=="note"){
  49. ?>
  50.  
  51. <div align="center">
  52. <form action="send.php" method="post">
  53. <font color="<? echo $errorcolor_1; ?>">Name*</font><br />
  54. <input type="text" name="name" style="width: 250px; height: 17px;" <? if(isset($name)) echo "value='$name'";?> class="note"><br />
  55. <table border="0" cellpadding="0" cellspacing="0" width="150">
  56. <tr>
  57. <td width="30"></td>
  58. <td width="120"><font color="<? echo $errorcolor_3; ?>">Contact Type*</font><br>
  59. <input class="note" type="radio" value="--none--" name="contact" style="border: 0"><font color="#ca0000">--none--</font>
  60. <br><input class="note" type="radio" value="@" name="contact" style="border: 0">e-Mail
  61. <br><input class="note" type="radio" value="http://" name="contact" style="border: 0">URL
  62. </td>
  63. </tr>
  64. </table>
  65. Contact Address<br />
  66. <input type="text" name="address" style="width: 250px; height: 17px;" class="note"><br />
  67. <font color="<? echo $errorcolor_2; ?>">Comment*</font><br />
  68. <textarea name="comment" cols="39" rows="6" class="note"><? if(isset($comment)) echo "value='$comment'";?></textarea><br /><br />
  69. <input type="submit" name="action" value="Send" class="note">
  70. <input type="Hidden" name="action" value="Send" class="note">
  71. <input type="reset" name="action" value="Reset" class="note">
  72. </form>
  73. </div>
  74. </body>
  75. </html>


a to (nie wiem, czy będzie potrzebne) plik wykonawczy send.php:

  1. <? 
  2. $name=$_POST['name']; 
  3. $contact=$_POST['contact'];
  4. $address=$_POST['address']; 
  5. $comment=$_POST['comment'];
  6.  
  7. mail("mail@mail.org", "Contact Form", 
  8. "Name: $name 
  9. Contact: $contact
  10. Address: $address 
  11. Comment: $comment ");
  12. echo "<p><br><center>Thanks.<br><a href='contact.php'>>Go back<</a></center><br></p>"; 
  13. ?>


po zgraniu plików na serwer i próbie wejście na stronę formularza pojawia się błąd:

Parse error: parse error, unexpected $ in gj/contact.php on line 75

A w linii 75 znajduje się jedynie:
Kod
</div>


Jednocześnie po wyrzuceniu z pliku formularza funkcji sprawdzającej wypełnienie danych pól

  1. <?
  2.  
  3. if(isset($name))
  4. if($name==""){
  5. $errorcolor_1 = "red";
  6. $error = "error";
  7. }
  8. else{
  9. $errorcolor_1 = "black";
  10. }
  11.  
  12. if(isset($comment))
  13. if($comment==""){
  14. $errorcolor_2 = "red";
  15. $error = "error";
  16. }
  17. else{
  18. $errorcolor_2 = "black";
  19. }
  20.  
  21. if(isset($contact))
  22. if($contact==""){
  23. $errorcolor_3 = "red";
  24. $error = "error";
  25. }
  26. else{
  27. $errorcolor_3 = "black";
  28. }
  29.  
  30. if(!$action){
  31. $action = "note";
  32. }
  33.  
  34. if($error=="error"||$action=="note"){
  35. ?>


i wywołujących ją poleceń:
  1. <font color="<? echo $errorcolor_1; ?>">
i
  1. <? if(isset($name)) echo "value='$name'";?>
wszystko działa bez zarzutu.

Jaki jest błąd w tej funkcji error? Dodam tylko, że kiedy wrzuci się ją do pliku send.php, formularz pojawia się, ale przy wysyłaniu (niezależnie od wypełnienia lub niewypełnienia pól) pojawia się strona send.php z tym samym błędem, tyle, że linijka błędu wypada na
Kod
?>
...

Może da się uzyskać podobny efekt (tzn. przy niewypełnieniu danych pól wyrazy "Name", "Comment" itp. zmieniają kolor na czerwony) w inny, mniej problematyczny sposób?

Z góry wielkie dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




pole radio gdy nie jest zazanczone, to sie nie wysyla wogole. tak wiec ty warunek okreslasz dpiero po zrobieniu isset, to ci tam nigdy nie wejdzie gdy nic nie zaznaczysz.
jesli isset() zwroci ci true, znaczy, że pole radio zostalo zaznaczone i juz nic wiecej nie musisz sprawdzac.

pozatym troche bez sensu masz te warunki. bo najpierw sprawdzasz czy jest index ustawiony a dopiero potem sprawdzasz wypelnienie pola lub nie. powinienes raz sprawdzic czy formularz byl wyslany, a potem juz tylko sprawdzac pola:

  1. <?php
  2.  
  3. if (!empty($_POST)){
  4. //i tutaj juz sprawdzasz konkretne pola. nie musisz juz robic isset. tylko dla rad
    io musisz (ale juz ci to pisalem)
  5. }
  6.  
  7. ?>


ps:
Cytat
wszystko działa, aż miło, i kto by w to uwierzył przy mojej zerowej znajomości php
Przy nas wyjdziesz na ludzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
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 - 06:51