Простая форма отправки PHP не работает

просто делает простую форму отправки и, похоже, не может заставить ее работать.

Он даже не будет сообщать об ошибках, что странно.

проверил php.и все это тоже кажется прекрасным.

HTML-код:

<form id="submit-form" action="receiving.php" method="POST">
        <h3>Submit a Link</h3>
        <fieldset>
            <table>
                <tr>
                    <td><label for="name">You</label></td>
                    <td><input id="name" name="name" type="text" placeholder="Your Twitter or Blog ect." /></td>
                </tr>
                <tr>
                    <td><label for="submit-links">Link(s)</label></td>
                    <td><input id="sumbit-links" name="submit-links" type="text" placeholder="" required="" /></td>
                </tr>
                <tr>
                    <td><input name="submit" type="submit" value="SUBMIT" /></td>
                </tr>
            </table>
        </fieldset>
    </form>

прием.на PHP:

<?php 
error_reporting(-1);
$name = $_POST['name']; 
$submit-links = $_POST['submit-links']; 
if(isset($_POST['submit'])){
 $from_add = "submit@webdesignrepo.com"; 
 $to_add = "ben@webdesignrepo.com"; 
 $subject = "Your Subject Name";

 $message = "Name:$name n Sites: $submit-links";

 $headers = 'From: submit@webdesignrepo.com' . "rn" .
'Reply-To: ben@webdesignrepo.com' . "rn" .
'X-Mailer: PHP/' . phpversion()

 if(mail($to_add,$subject,$message,$headers)){
    $msg = "Mail sent";
 } 
}
print "<p>Thanks $name</p>";
?>

любая помощь была бы очень признательна :)

3 ответов


С твоей формой было что-то не так, что я проверен перед публикацией этого ответа.

As Jeremy Miller указал в своем ответе (+1 Jeremy btw), использование дефисов в переменной недопустимо, вместо этого используйте подчеркивания.

у вас также отсутствует закрывающая двоеточие после 'X-Mailer: PHP/' . phpversion() кстати, вы не должны использовать (в целях безопасности), но... если вы абсолютно хотите использовать его, добавьте его следующим образом 'X-Mailer: PHP/' . phpversion(); - Консалт редактировать (суггестивное использование) ниже.

этой $msg = "Mail sent"; не будет печатать сообщение"Mail sent " после успешной отправки, так как вы только присваиваете переменную тексту; вам нужно echo it который я добавил ниже; это не ошибка, но зачем ее иметь, если вы не собираетесь ее использовать. (подмигивание.)

HTML-форму

<form id="submit-form" action="receiving.php" method="POST">
        <h3>Submit a Link</h3>
        <fieldset>
            <table>
                <tr>
                    <td><label for="name">You</label></td>
                    <td><input id="name" name="name" type="text" placeholder="Your Twitter or Blog ect." /></td>
                </tr>
                <tr>
                    <td><label for="submit_links">Link(s)</label></td>
                    <td><input id="sumbit_links" name="submit_links" type="text" placeholder="" required="" /></td>
                </tr>
                <tr>
                    <td><input name="submit" type="submit" value="SUBMIT" /></td>
                </tr>
            </table>
        </fieldset>
</form>

PHP

<?php 
error_reporting(-1);

$name = $_POST['name']; 
$submit_links = $_POST['submit_links']; 

if(isset($_POST['submit']))
{
$from_add = "submit@webdesignrepo.com"; 
$to_add = "ben@webdesignrepo.com"; 
$subject = "Your Subject Name";
$message = "Name:$name \n Sites: $submit_links";

$headers = 'From: submit@webdesignrepo.com' . "\r\n" .
'Reply-To: ben@webdesignrepo.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if(mail($to_add,$subject,$message,$headers)) 
{
    $msg = "Mail sent";

echo $msg;

} 
}

print "<p>Thanks $name</p>" ;

?>

EDIT (суггестивное использование)

я предлагаю вам используйте следующий PHP, так как ваши настоящие условные операторы выдадут следующие ошибки, если файл PHP доступен напрямую, что может произойти.

плюс, используя 'X-Mailer: PHP/' . phpversion() позволяет людям знать, какую версию PHP вы используете.

у меня есть хороший авторитет, что использование этого-дыра безопасности. Его имя ускользает от меня прямо сейчас, но я добавлю его, как только вспомню.

краткое описание: имя... на линии 4

удачи в submit_links... в строке 5

я установил ваши переменные внутри вашего if(isset($_POST['submit'])) условный оператор.

<?php 
error_reporting(-1);

if(isset($_POST['submit']))
{
$name = $_POST['name']; 
$submit_links = $_POST['submit_links']; 
$from_add = "submit@webdesignrepo.com"; 
$to_add = "ben@webdesignrepo.com"; 
$subject = "Your Subject Name";
$message = "Name:$name \n Sites: $submit_links";

$headers = 'From: submit@webdesignrepo.com' . "\r\n" .

'Reply-To: ben@webdesignrepo.com' . "\r\n";

if(mail($to_add,$subject,$message,$headers)) 
{
    $msg = "Mail sent";

 echo $msg;
} 

print "<p>Thanks $name</p>" ;
}

// else conditional statement for if(isset($_POST['submit']))
else {
echo "Sorry, you cannot do that from here. Please fill in the form first.";
}

?>

$submit-links не является допустимым именем переменной. Переключите все экземпляры на $submit_links


действие может быть неправильным. Например, если ваш htaccess перенаправляет на https.www вместо http, вы не увидите $_POST в следующем примере :

<?php  $formAction = 'http://somedomain.com/receiving.php'; ?>
<form  method="post"  action="<?php echo $formAction; ?>" >
//$_POST will be empty

но это будет работать, если вы используете

<?php  $formAction = 'https://www.somedomain.com/receiving.php'; ?>
<form  method="post"  action="<?php echo $formAction; ?>" >
//$_POST will contain variables