Может ли кто-нибудь помочь выяснить проблемы с утверждениями в этом файле PHP? - PullRequest
0 голосов
/ 20 апреля 2011
<?php
$con = mysql_connect("localhost", "root");

if (!$con)
{
die("Cannot make a connection");
}

$customer_first_name = $_POST['customer_first_name'];
$customer_last_name = $_POST['customer_last_name'];
$customer_email = $_POST['customer_email'];
$category_id = $_POST['category_id'];
$problem_body = $_POST['problem_body'];

mysql_select_db('yumbox_table', $con) or die(mysql_error());

mysql_query("INSERT INTO yumbox_customer_inquiry (customer_last_name, customer_first_name, customer_email, category_id, problem_body) values ($customer_last_name, $customer_first_name, $customer_email, $category_id, $problem_body)", $con);


if ($category_id==1)
{
mail('technical_problems_11@yahoo.com… 'You have a new email from $customer_first_name $customer_last_name at $customer_email', $problem_body);
}

if ($category_id==2)
{
mail('login_problems11@yahoo.com', 'You have a new email from $firstname $lastname at $emailaddress', $problem_body);
}

if ($category_id==3)
{
mail('order_problems_11@yahoo.com', 'You have a new email from $firstname $lastname at $emailaddress', $problem_body);
}

echo('Thank you for sending us your feedback. A customer support representative will respond to you shortly');




mysql_close($con)
?>

На html-странице пользователь должен вводить информацию в форме, а данные - в этот php-файл.Отсюда предполагается, что он будет помещен в таблицу mysql, и эти данные также должны быть отправлены на адрес электронной почты.Однако он не отправляет код в таблицу mysql, и вы получаете сообщение об ошибке, в котором говорится, что его нельзя отправить по электронной почте.Может ли кто-нибудь помочь мне разобраться в этом непонятном вопросе?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

В дополнение к сообщению Аднана, я бы также порекомендовал захватить результат запроса с помощью переменной и закрыть соединение MySQL, как только вы закончите с ним:

$result = mysql_query(...);
// Evaluate the result, if its false the query failed.
if($result == FALSE && $debugoutput == TRUE)
{
  //This should be debug output only!  
  //It could potentially expose your code to the public
  $errorNum = "MySQL Error Number: " . mysql_errno($conn);
  $errorMsg = "MySQL Error Message: " . mysql_error($conn);
}

mysql_close($con);

Что касается проблем с электронной почтой, у вас настроен почтовый сервер? И если да, то правильно ли он настроен на прием запросов от PHP? Извините, у меня пока нет особого опыта работы с почтовыми серверами и PHP ... но это не выглядит так сложно.

Может быть, это немного "придирчиво" ко мне, но мне нравится разделять функциональность по разным областям: есть метод для хранения данных в вашей базе данных и отдельный метод, который будет отправлять ваши электронные письма. Это также может помочь вам отладить вашу текущую проблему, посмотрев, является ли это проблемой базы данных или электронной почтой, или и то, и другое? Просто скажи ...

1 голос
/ 20 апреля 2011
  1. Вы широко открыты для внедрения SQL. Смотрите Бобби Таблицы
  2. У вас нет ошибок при проверке ваших запросов. Они возвращают ЛОЖЬ, если они терпят неудачу. В качестве минимального минимума вы должны иметь:

    mysql_query($query) or die(mysql_error());

  3. В вашем примере кода нет текста ошибки типа «невозможно отправить по электронной почте».
1 голос
/ 20 апреля 2011

Включить одинарные кавычки:

('$customer_last_name', '$customer_first_name', '$customer_email', '$category_id', '$problem_body')

ПРИМЕЧАНИЕ: если category_id является числовым в вашей таблице, вам не нужно иметь кавычки.

Кроме того, хотя бы очистите опубликованные данные с помощью:

$customer_first_name = mysql_escape_string($_POST['customer_first_name']);
... and so on

это защитит вашу базу данных от SQL-инъекций.

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