2010-08-22 1 views
0

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

?> 
+0

Что-нибудь в 'error.log' Apache? Как выглядит авария? –

+2

Кстати, ваш скрипт чрезвычайно уязвим для SQL-инъекции. См. http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php или http://stackoverflow.com/questions/47087/how-do-you-prevent-sql- приложения для инъекций в лампе –

+0

Запуск службы Apache2.2 Служба Apache2.2 запущена. rmine полное доменное имя сервера, использующее 192.168.1.106 для ServerName [пн дек 01 11:00:22 2008] [уведомление] [уведомление] Apache/2.2.10 (Win32) сконфигурировано - возобновление обычных операций [пн дек 01 11 : 00: 22 2008] [уведомление] Создано: Oct 10 2008 12:39:04 [пн дек 01 11:00:22 2008] [уведомление] Родитель: Созданный дочерний процесс 1844 httpd.exe: Не удалось достоверно определить полное доменное имя сервера, использующее 192.168.1.106 для ServerName – user342391

ответ

0

Этот скрипт НЕ приведет к смерти 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