Обработка формы вызывает сбой apache?

Я использую следующий код для регистрации пользователей на моем сайте. Проблема в том, что когда пользователь регистрирует apache, он не отвечает и вылетает.

Есть ли сбой в моем коде или что-то я делаю не так ????

<?php

include ('../includes/db_connect.php');

$firstname = $_POST['firstname'];
$email = $_POST['email'];    
$username = $_POST['username'];
$password = md5($_POST['password']);

// lets check to see if the username already exists

$checkuser = mysql_query("SELECT username FROM users WHERE username='$username'");

$username_exist = mysql_num_rows($checkuser);

if($username_exist > 0){
    echo "I'm sorry but the username you specified has already been taken.  Please pick another one.";
    unset($username);
    //include 'register.html';
    exit();
}

// lf no errors present with the username
// use a query to insert the data into the database.

$query = "INSERT INTO users (firstname, email, username, password)
VALUES('$firstname', '$email', '$username', '$password')";
mysql_query($query) or die(mysql_error());
mysql_close();

echo "You have successfully Registered";

// mail user their information

//$yoursite = ‘www.blahblah.com’;
//$webmaster = ‘yourname’;
//$youremail = ‘youremail’;
//    
//$subject = "You have successfully registered at $yoursite...";
//$message = "Dear $firstname, you are now registered at our web site.  
//    To login, simply go to our web page and enter in the following details in the login form:
//    Username: $username
//    Password: $password
//    
//    Please print this information out and store it for future reference.
//    
//    Thanks,
//    $webmaster";
//    
//mail($email, $subject, $message, "From: $yoursite <$youremail>\nX-Mailer:PHP/" . phpversion());
//    
//echo "Your information has been mailed to your email address.";

?>

person user342391    schedule 22.08.2010    source источник
comment
Что-нибудь в error.log Apache? Как именно выглядит авария?   -  person Pekka    schedule 22.08.2010
comment
Кстати, ваш скрипт чрезвычайно уязвим для SQL-инъекции. См., Например, stackoverflow.com/ questions / 60174 / или stackoverflow.com/questions/47087/   -  person Pekka    schedule 22.08.2010
comment
Запуск службы Apache2.2 Служба Apache2.2 запущена. rmine полное доменное имя сервера, используя 192.168.1.106 для ServerName [Mon Dec 01 11:00:22 2008] [примечание] Apache / 2.2.10 (Win32) настроен - возобновление нормальной работы [Mon Dec 01 11:00: 22 2008] [уведомление] Сервер построен: 10 октября 2008 г. 12:39:04 [Mon Dec 01 11:00:22 2008] [уведомление] Родитель: создан дочерний процесс 1844 httpd.exe: не удалось надежно определить полностью определенный домен сервера имя, используя 192.168.1.106 для ServerName   -  person user342391    schedule 23.08.2010


Ответы (1)


этот сценарий НЕ приведет к умиранию apache. с этой стороны нет ничего плохого в этом. однако я не знаю, что в db_connect.php

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

у вас есть активная сессия? это может объяснить, почему вы не можете получить доступ к любому веб-сайту, когда другой все еще работает и отправляет почту, и вам может показаться, что apache разбился. потому что вы не вызывали session_write_close, и только один сеанс может быть активным для записи за раз.

Что определенно неправильно, так это уязвимость к инъекции mysql. вам абсолютно необходимо изменить свои переменные следующим образом:

$ firstname = mysql_real_escape_string ($ _ POST ['имя']); $ email = mysql_real_escape_string ($ _ POST ['email']);
$ username = mysql_real_escape_string ($ _ POST ['username']);

Кроме того, я бы рекомендовал просто иметь уникальную очередь для имени пользователя и попробовать вставить и посмотреть, получите ли вы ошибку или mysq_insert_id. пусть mysql сделает эту работу. но ваша проверка тоже в порядке ... но у вас тоже должно быть ограничение в базе данных, просто в качестве меры предосторожности. и вы должны обрезать свои значения, и maby разрешает только определенные символы, это раздражает, если имя пользователя на веб-сайте &% DTRFG $ Ä ← ↓ ff

person The Surrican    schedule 22.08.2010