Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] przekazywanie zmiennych
Forum PHP.pl > Forum > Przedszkole
chabov
Witam

Mam problem z przekazywaniem zmiennych pomiędzy plikami.
A dokładniej jest to formularz kontaktowy - serwerek postawiony na home.pl
Poniżej kod formularza:


  1. <form method="post" id="main-contact-form" name="contact-form" action="sendemail.php">
  2. <div class="form-group">
  3. <input type="text" name="imie" placeholder="Name">
  4. </div>
  5. <div class="form-group">
  6. <input type="email" name="email" placeholder="Email Id">
  7. </div>
  8.  
  9. <div class="form-group">
  10. <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea>
  11. </div>
  12. <div class="form-group">
  13. <input type="submit" name="submit" class="btn btn-submit" value="Submit">
  14. </div>
  15. </form>



A tu kod obsługujący przechwycenie zmiennych i wysłanie maila
  1. <?php
  2. include 'kontakt.php';
  3. $name = @trim(stripslashes($_POST['imie']));
  4. $from = @trim(stripslashes($_POST['email']));
  5. $subject = 'mail testowy';
  6. $message = @trim(stripslashes($_POST['message']));
  7. $to = 'login@gmail.com';//replace with your email
  8.  
  9. $headers = array();
  10. $headers[] = "MIME-Version: 1.0";
  11. $headers[] = "Content-type: text/plain; charset=iso-8859-1";
  12. $headers[] = "From: {$name} <{$from}>";
  13. $headers[] = "Reply-To: <{$from}>";
  14. $headers[] = "Subject: {$subject}";
  15. $headers[] = "X-Mailer: PHP/".phpversion();
  16.  
  17. mail($to, $subject, $message, $headers, "-f login@domenanahome.pl");
  18.  


Mail jest owszem wysyłany ale...... pusty (no prócz na sztywno ustawionego tematu).

Mogli byście rzucić okiem proszę?
viking
Zrób echo tych zmiennych przed wysłaniem maila. Nie używaj nigdy @
chabov
Mówisz żeby jeszcze pod formularzem dać echo tych zmiennych? czy przed wysłaniem maila?
viking
Przed wysłaniem maila.
Tomplus
czy w kontakt.php masz ten HTML?
jeżeli tak, to daj go pod koniec pliku.

Daj na początek pliku, przed iclude


pewnie pojawią się błędy dodatkowe.


chabov
Cytat(Tomplus @ 29.08.2019, 10:34:51 ) *
czy w kontakt.php masz ten HTML?
jeżeli tak, to daj go pod koniec pliku.

Daj na początek pliku, przed iclude


pewnie pojawią się błędy dodatkowe.



No właśnie nigdzie mi nie pokazuje błędów - a pliku z logami niestety nie tworzy nigdzie na serwerze :/ no chyba że ja gdzieś nie widzę.
viking
Na pewno są gdzieś w panelu. To wyświetliłeś te zmienne?
chabov
Zrobiłem jeszcze jeden test

Zrobiłem drugi zwykły pliczek z nieobrobionym formularzem

  1. <form method="post" action="odebranie.php">
  2. <input type="text" name="name" placeholder="Name">
  3.  
  4. <input type="text" name="email" placeholder="Email Id">
  5.  
  6. <input type="text" name="message" placeholder="Your text here">
  7.  
  8. <input type="submit" name="submit" value="Submit">
  9.  
  10. </form>


Plik odebranie.php wygląda tak:

  1. <?php
  2. $imie = $_POST('name');
  3. $mail = $_POST('email');
  4. $tresc = $_POST('message');
  5.  
  6. echo $imie;
  7. ?>


Wyświetla się błąd:


Fatal error: Function name must be a string in /odebranie.php on line 2
dublinka
Cytat(chabov @ 29.08.2019, 11:07:22 ) *
Zrobiłem jeszcze jeden test

Zrobiłem drugi zwykły pliczek z nieobrobionym formularzem

  1. <form method="post" action="odebranie.php">
  2. <input type="text" name="name" placeholder="Name">
  3.  
  4. <input type="text" name="email" placeholder="Email Id">
  5.  
  6. <input type="text" name="message" placeholder="Your text here">
  7.  
  8. <input type="submit" name="submit" value="Submit">
  9.  
  10. </form>


Plik odebranie.php wygląda tak:

  1. <?php
  2. $imie = $_POST('name');
  3. $mail = $_POST('email');
  4. $tresc = $_POST('message');
  5.  
  6. echo $imie;
  7. ?>


Wyświetla się błąd:


Fatal error: Function name must be a string in /odebranie.php on line 2


$imie = $_POST['name'];

To tablica wiec w klamrach.

Tamta tablice zmien na to:

  1. $headers = array();
  2. $headers[] = "MIME-Version: 1.0";
  3. $headers[] = "Content-type: text/plain; charset=iso-8859-1";
  4. $headers[] = "From: " . $name . " " . $from;
  5. $headers[] = "Reply-To: " . $from;
  6. $headers[] = "Subject: " . $subject;
  7. $headers[] = "X-Mailer: PHP/".phpversion();
chabov
Cytat(dublinka @ 29.08.2019, 12:11:25 ) *
$imie = $_POST['name'];

To tablica wiec w klamrach.

Tamta tablice zmien na to:

  1. $headers = array();
  2. $headers[] = "MIME-Version: 1.0";
  3. $headers[] = "Content-type: text/plain; charset=iso-8859-1";
  4. $headers[] = "From: " . $name . " " . $from;
  5. $headers[] = "Reply-To: " . $from;
  6. $headers[] = "Subject: " . $subject;
  7. $headers[] = "X-Mailer: PHP/".phpversion();


W przypadku pierwszego - działa bez zarzutu a w przypadku nagłówka w ogóle nie wysyła maila... Kurde siedzę już nad tym prawie tydzień. Internety przetrzepane i teoretycznie powinno działać a tu taki klops.
dublinka
Cytat(chabov @ 29.08.2019, 12:11:25 ) *
W przypadku pierwszego - działa bez zarzutu a w przypadku nagłówka w ogóle nie wysyła maila... Kurde siedzę już nad tym prawie tydzień. Internety przetrzepane i teoretycznie powinno działać a tu taki klops.

1. Wyswietliles te zmienna $message przed wyslaniem ?
2. Co znaczy "a w przypadku nagłówka w ogóle nie wysyła maila"
Bez headera rowniez email poslesz

Wyslij to podstawowej konfiguracji bez dodatkowych parametrow:

mail($to, $title, $body);

Masz tu przyklad.

  1. <?php
  2.  
  3. if(!isset($_POST['submit']))
  4. {
  5.  
  6.  
  7.  
  8. echo "<form action " . $_SERVER['SCRIPT_NAME'] . " method=post>";
  9. echo "<input type=\"text\" name=\"name\"><br>";
  10. echo "<input type=\"text\" name=\"email\"><br>";
  11. echo "<textarea name=\"message\" cols=25 rows=15></textarea><br>";
  12. echo "<input type=\"submit\" name=\"submit\"><br>";
  13.  
  14. }
  15.  
  16.  
  17. $ArrInfo = array('name' => 'Wypelnij pole imie',
  18. 'email' => 'Wypelnij pole email',
  19. 'message' => 'Wypelnij pole message'
  20. );
  21.  
  22. unset($_POST['submit']);
  23. $myPostArgs = filter_input_array(INPUT_POST);
  24. $return = array();
  25. while(list($key, $value) = each($myPostArgs))
  26. {
  27.  
  28.  
  29. if(trim($value) == "")
  30. {
  31.  
  32. $return[] = $ArrInfo[$key];
  33.  
  34. $match = true;
  35.  
  36.  
  37. }
  38. }
  39.  
  40.  
  41. if(isset($match))
  42. {
  43. print 'Znaleziono błędy: <br>';
  44.  
  45. for($i=0; $i<count($return); $i++)
  46. {
  47.  
  48. print ($return[$i] . '<br>');
  49.  
  50. }
  51.  
  52. }
  53.  
  54.  
  55. ###
  56. # treść
  57. #
  58.  
  59. $name = $_POST['name'];
  60. $email = $_POST['email'];
  61. $message = $_POST['message'];
  62.  
  63. $receiver = 'to_receiver@gmail.com';
  64. $subject = 'Email testowy';
  65.  
  66. $headers = 'MIME-Version: 1.0' . "\r\n";
  67. $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
  68. $headers .= 'From: ' . $name . "; " . $email . "\r\n" . 'X-Mailer: PHP/' . phpversion();
  69.  
  70.  
  71. if(mail($receiver, $subject, $message, $headers))
  72. {
  73.  
  74. exit('wyslano');
  75.  
  76. }else{
  77.  
  78. exit('blad');
  79.  
  80. }
  81.  
  82. ###
  83. #
  84. #
  85.  
  86.  
  87. ?>
Pyton_000
Radziłbym zacząć od przeczytania definicji mail() i ich parametrów, bo headers masz skopane: http://www.php.net/mail
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.