Обработка форм вызывает сбой apache? - PullRequest
0 голосов
/ 22 августа 2010

Я использую следующий код для регистрации пользователей на моем сайте. Проблема в том, что когда пользователь регистрируется, 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.";

?>

1 Ответ

0 голосов
/ 23 августа 2010

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

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

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

что определенно неправильно, так это уязвимость для внедрения MySQL.вам абсолютно необходимо изменить ваши переменные следующим образом:

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

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

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