PHP-код продолжает создавать еще одну строку при каждом запуске кода - PullRequest
0 голосов
/ 10 апреля 2011

Всякий раз, когда запускается приведенный ниже код, правильная строка создается в нужных местах таблицы, но затем она создает дополнительную строку с пустым именем пользователя, но с паролем с этим md5 d41d8cd98f00b204e9800998ecf8427e, который также является пустым.

код:

define("DB_SERVER", "localhost");
define("DB_USER", "will");
define("DB_PASS", "blahblah");
define("DB_NAME", "blah");
define("TBL_USERS", "users");

function addNewUser($username, $password){
   global $connection;
   $password1 = md5($password);
   $username = mysql_real_escape_string($username);
   $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
   return mysql_query($q, $connection);
}    

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $connection) or die(mysql_error());
addNewUser($_POST["username"], $_POST["password"]);
}

Как мне остановить это от этого? Кстати, этот код выполняется в php-скрипте.

Ответы [ 3 ]

0 голосов
/ 10 апреля 2011

Похоже, что функция вызывается без установки переменных POST (поскольку этот хэш соответствует пустой строке) Ваш код пытается добавить пользователя во время отображения формы? Если это так, убедитесь, что имя пользователя и пароль не пусты, прежде чем добавлять пользователя.

Как:

function addNewUser($username, $password){
   global $connection;
   if (empty($username) || empty($password))
      return;
   $password1 = md5($password);
   $username = mysql_real_escape_string($username);
   $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
   return mysql_query($q, $connection);
}    
0 голосов
/ 10 апреля 2011

Я думаю, что вы должны встроить оператор if вокруг вызова вашей функции.
Попробуйте что-то вроде этого:

if(isset($_POST["send"]))
{
  addNewUser($_POST["username"], $_POST["password"]);
}

$ _ POST ["send"] будет установлено при отправке формы.

Если вы не работаете с формой, вы можете проверить имя пользователя и пароль для установки:

if(isset($_POST["username"]) && isset($_POST["password"]))
{
addNewUser($_POST["username"], $_POST["password"]);
}

Я надеюсь, что это будет работать!

Привет,
Mixxiphoid

0 голосов
/ 10 апреля 2011

Просто предположение - возможно, он пытается выполнить запрос один раз в строке «возврата» внутри функции, а затем еще раз, когда в вашей фактической строке вызова (addNewUsers).

Попробуйте это:

function addNewUser($username, $password){
   $password1 = md5($password);
   $username = mysql_real_escape_string($username);
   $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password1')";
   return $q;
}    

$connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME, $connection) or die(mysql_error());
mysql_query(addNewUser($_POST["username"], $_POST["password"]), $connection);
...