PHP-файл Form Action не работает - PullRequest
0 голосов
/ 20 января 2012

У меня есть простая форма, которая должна вводить данные в базу данных MySQL, но всякий раз, когда форма отправляется, я получаю ошибку сервера 500. Я новичок в PHP / MySQL, поэтому я не вижу проблемы. Есть идеи?

Выдержка из формы HTML:

<form method="post" action="submit.php">
  <label for="fname">First Name *:</label>
    <input type="text" id="fname" name="fname" /><br />
  <label for="lname">Last Name *:</label>
    <input type="text" id="lname" name="lname" /><br />
  <label for="email">Email *:</label>
    <input type="email" id="email" name="email" /><br />
  <label for="phone">Phone Number:</label>
    <input type="tel" id="phone" name="phone" /><br />
  <input type="checkbox" id="ageverify" />
    <label for="ageverify">I am at least 18 years of age *</label><br />
  <input type="checkbox" id="terms" />
    <label for="terms">I agree to the Terms &amp; Conditions *</label><br />
  <input type="submit" value="Submit" />
</form>

Полный текст submit.php

<?
mysql_connect("localhost","USERNAME","PASSWORD");
mysql_select_db("DB_NAME");

$sql = "INSERT into entries (fname,lname,email,phone,ageverify,terms) "; 
$sql .= "VALUES ("; 
$sql .= $_POST['fname'] . ',' . $_POST['lname'] . ',' . $_POST['email'] . ','; 
$sql .= $_POST['phone'];

if (isset($_POST['ageverify']) // if checked will exist, otherwise it won't 
$sql .= 'yes' . ','; 
else 
$sql .= 'no' . ','; 

if (isset($_POST['terms']) 
$sql .= 'yes' . ','; 
else 
$sql .= 'no' . ','; 

$sql .= ')'; 

$result = mysql_query($sql); 

if($result){
    echo("Thanks");
} else{
    echo("Something went wrong");
}
?> 

ОБНОВЛЕНИЕ: РАБОЧИЙ КОД (какой бы элементарной она ни была)

<?php 
mysql_connect("localhost","USERNAME","PASSWORD");
mysql_select_db("DB_NAME");

$sql = "INSERT into entries (fname,lname,email,phone,ageverify,terms) "; 
$sql .= "VALUES ("; 
$sql .= '"' . $_POST['fname'] . '"' . ',' . '"' . $_POST['lname'] . '"' . ',' . '"' . $_POST['email'] . '"' . ','; 
$sql .= '"' . $_POST['phone'] . '"'; 

if (isset($_POST['ageverify'])) // if checked will exist, otherwise it won't 
$sql .= ',' . '"yes"' ; 
else 
$sql .= ',' . '"no"'; 

if (isset($_POST['terms'])) 
$sql .= ',' . '"yes"'; 
else 
$sql .= ',' . '"no"'; 

$sql .= ')'; 

echo $sql; 

$result = mysql_query($sql); 

if($result){ 
echo("Thanks"); 
} else{ 
echo("Something went wrong"); 
} 
?> 

Ответы [ 3 ]

3 голосов
/ 20 января 2012

Прежде всего: Читайте о внедрении SQL! Вы определенно уязвимы!

Во-вторых, вы должны включить отчеты об ошибках во время разработки - это сказало бычто было не так.

Состояние 500 появляется, потому что что-то не работает на стороне сервера.Когда это происходит, вы можете проверить свои журналы ошибок.

Хотя, если вы включите отчет об ошибках, вы увидите ошибки на экране.Это могло бы сказать вам, что у вас есть синтаксические ошибки.
У вас отсутствуют конечные скобки в строке 11 и 16:

if (isset($_POST['ageverify'])

должно быть

if (isset($_POST['ageverify']))

И то же самоестрока 16.

В-третьих, всегда начинайте теги PHP с <?php, а НЕ просто <?.Попробуйте избегать коротких тегов.

1 голос
/ 20 января 2012

Ошибка 500 означает, что сервер не работает или иным образом недоступен. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error

Я предполагаю, что параметры connect и db в вашем опубликованном коде были преднамеренно размещены здесь как общие записи, а не то, что вы действительно используете, верно? Поскольку вы сказали, что вы новичок, параметры USERNAME, PASSWORD и DB_NAME - это не то, что вы на самом деле используете буквально ... вам нужно ввести реального пользователя, пароль и имя базы данных.

1 голос
/ 20 января 2012

В этом случае журнал ошибок был бы чрезвычайно полезен, но есть проблема с "," после последнего "да / нет":

if (isset($_POST['terms']) 
$sql .= 'yes'; 
else 
$sql .= 'no';

Синтаксис для значений (Value1,Value2, ..., ValueN).

Редактировать: И вам не хватает закрывающей скобки в строках 11 и 16. Вы должны получить редактор, который проверяет код, который вы пишете.Экономит много хлопот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...