У меня есть еще один script, что я не могу понять, что с ним не так. Я попытался использовать
error_reporting(E_ALL);
сообщить об ошибках, но он ничего не сообщает. Во всяком случае, вот код, с которым у меня возникают проблемы.
<?php
error_reporting(E_ALL);
$username = $_POST['user'];
$email = $_POST['email'];
$password = md5($_POST['pass']);
$currname = $_COOKIE['ZBrownTechnologyCorporationBeta'];
$con = mysql_connect("HOST", "USER", "PASS");
if (!$con) {
die('Unable to connect: '.mysql_error());
}
mysql_select_database("zach_blogin", $con);
if(empty($password)) {
$nothing = "nothing";
} else {
mysql_query("UPDATE members SET password = '$password' WHERE username = '$currname'");
}
mysql_query("UPDATE members SET Email = '$email' WHERE username = '$currname'");
if($username==$currname) {
$nothing = "nothing";
} else {
$query = ("SELECT username from members WHERE username = '$username'");
$result = mysql_query($query);
if (!$result) {
header("Location: " . $_SERVER['HTTP_HOST'] . "/public_html/Beta/account.php?invalid");
exit;
}
}
mysql_query("UPDATE members SET username = '$username' WHERE username = '$currname'");
header("Location: ". $_SERVER['HTTP_HOST'] . "/public_html/Beta/main_login.php?update");
?>
Я просмотрел этот код некоторое время. Кажется, не получается заставить отчет об ошибках работать, поэтому я снова. Спасибо всем, кто помог, и кто поможет!
По запросу @Klinky:
При попытке использовать эту страницу (с именем myinfo.php) в Opera отображается сообщение по умолчанию, указывающее, что оно не может найти страницу и/или сервер. В Internet Explorer 8 отображается 500 Внутренняя ошибка сервера.
Вот спецификации сервера: ОС: Linux HTTP: Apache v2.0.63 PHP: 5.3.3 MySQL: 5.0.91-community
Я просмотрел журналы, и это сообщение об ошибке:
[Sat Sep 25 21:34:08 2010] [error] [client 68.52.52.190] PHP Fatal error: Call to undefined function mysql_select_database() in /home/zach/public_html/Beta/myinfo.php on line 12, referer: http://zbrowntechnology.com/Beta/account.php
Единственное, база данных, которую я пытался выбрать, существует!
Нет встроенного имени функции mysql_select_database
. Думаю, вы имели в виду mysql_select_db
Изменить
mysql_select_database("zach_blogin", $con);
к
mysql_select_db("zach_blogin", $con);
Все ваши запросы UPDATE
отсутствуют имя таблицы:
UPDATE TABLE_NAME SET .....
^^^^^
missing
Я предлагаю, каждый раз, когда вы вызываете mysql_query()
, проверяете его возвращаемое значение. Если его false
, выполнение запроса завершилось неудачно, и вы можете получить причину сбоя, вызвав mysql_error()
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
Дополнительные ошибки:
Вам нужно заключить строки в одинарные кавычки в запросе:
mysql_query("UPDATE members SET password = '$password'....
^ ^
missing
Сделайте это везде, где вы используете строку в запросе.
but it still doesn't work
- Что именно не работает? Вы получаете какую-либо ошибку? Вы проверяли возвращаемое значение всех вызовов mysql_query
? как предлагается в ответе?
Попробуйте установить полный URL-адрес для фрагмента:
header("Location: account.php?invalid");
HTTP spec говорит, что вы должны использовать полный URL-адрес при выполнении перенаправления. Хотя многие браузеры поддерживают относительный путь. Попробуйте:
header('Location: ' . $_SERVER['HTTP_HOST'] . '/project-path/account.php?invalid');
REPLACE/project-path/с полным путем, где находятся ваши .php файлы.
ini_set('display_errors', 1);
если вы хотите, чтобы ошибки выводились напрямую ... в противном случае они регистрируются только в том журнале ошибок ... как правило, веб-сервер error__log по умолчанию. Или вы можете настроить их на php.ini, но я бы не рекомендовал этого. Также ваша функция mysel не собирается выдавать ошибку напрямую ... вам нужно использоватьmysql_error()
чтобы взглянуть на них.