php поддержка
Извиняюсь, что не по теме, но может кто-то сможет помочь?
у меня функция php, которая будет отправлять смс с комментарием(для моего сайта в университете).Подскажите, как сделать так, чтобы текст "сообщение отправлено " появлялся только тогда, когда я нажимаю отправить ? <?php $name = $email = $comment = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $comment = test_input($_POST["comment"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>Ваше сообщение в тех поддержку сайта</h2> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Имя: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> Комментарий: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> <input type="submit" name="submit" value="Отправить"> </form> <?php echo "<h2>Сообщение отправлено!</h2>"; ?> |
По логике вещей сообщение "сообщение отправлено", должно сообщать, что сообщение действительно отправлено. Соответственно вывод сообщения "сообщение отправлено" должно быть сразу после вызова функции отправки, а не просто так.
Но в принципе в конкретном случае будет так: <?php $name = $email = $comment = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $comment = test_input($_POST["comment"]); *!*echo "<h2>Сообщение отправлено!</h2>";*/!* } ... |
Смс появляется вверху, а как сделать, чтобы оно появлялось снизу?)
|
Это еще фигня, что сверху, если обновить страницу сообщение опять отправится, лучше бы с помощью аякс делала, а так в данном случае вставь куда надо что-бы выводилось
if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $comment = test_input($_POST["comment"]); echo "<h2>Сообщение отправлено!</h2>"; } |
Вот кстати да, сейчас обновляю,а смс остается, я уже так запуталась во всем, помогите , прошу :(
|
то есть мне весь код менять нужно ? но как, не могли бы помочь ? умоляю
|
Ну если достаточно того что сейчас, то тот код пхп с поста 4 вставь у себя в страницу в то место где тебе надо что-бы выводилось само сообщение.
|
так я так и попробовала сразу, но это ни на что не влияет, текст все равно выбивает в самом начале
|
покажи всю свою страницу
|
<?php $name = $email = $comment = ""; $sent = false; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $comment = test_input($_POST["comment"]); $sent = true; } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>Ваше сообщение в тех поддержку сайта</h2> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Имя: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> Комментарий: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> <input type="submit" name="submit" value="Отправить"> </form> <?php if($sent){ echo "<h2>Сообщение отправлено!</h2>"; } ?> |
Но при перезагрузке страницы данные будут отправляться повторно, я вот как говорил по вашему коду добавить можно вниз
<?php $name = $email = $comment = ""; function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>Ваше сообщение в тех поддержку сайта</h2> <form method="post" > Имя: <input type="text" name="name"> <br> <br> E-mail: <input type="text" name="email"> <br> <br> Комментарий: <textarea name="comment" rows="5" cols="40"></textarea> <br> <br> <input type="submit" name="submit" value="Отправить"> </form> <?php /*** *** вот куда добавить ***/ if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $comment = test_input($_POST["comment"]); echo "<h2>Сообщение отправленно!</h2>"; } ?> ___ Вот самый простой вариант, что-бы при перезагрузке форма повторно не отправлялась. <?php function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } if (!empty($_POST["name"]) and !empty($_POST["email"]) and !empty($_POST["comment"])) { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $comment = test_input($_POST["comment"]); exit ('<html> <head> <meta http-equiv="refresh" content="3; url=' . $_SERVER['PHP_SELF'] . '"> </head> <body>Сообщение отправлено!</body> </html>'); } ?> <h2>Ваше сообщение в тех поддержку сайта</h2> <form method="post"> Имя: <br> <input type="text" name="name"> <br> E-mail: <br> <input type="text" name="email"> <br> Комментарий: <br> <textarea name="comment" rows="5" cols="40"></textarea> <br> <input type="submit" name="submit" value="Отправить"> </form> |
Цитата:
Цитата:
|
KATRIN1786492,
Чтобы не происходило повторной отправки, нужно сбрасывать POST данные, для этого перенаправляйте пользователя. |
Огромное спасибо :)
|
Часовой пояс GMT +3, время: 11:39. |