Member 13970556 Ответов: 1

Как я могу сохранить свои данные в таблице


У меня есть форма, в которой есть поле со списком для country_full, которое пользователи заполняют.

<select name="country_full" class="stylish-select-input span3" style="background:#eee; font-size:12px" >
<option value=""></option>
<?  $resultCont = mysql_query("SELECT * FROM countries ORDER BY countryName ASC");
     while($rowCont=mysql_fetch_array($resultCont)) {  ?>
<option value="<?=$rowCont['countryName']?>" <? if( $row['country_full']==$rowCont['countryName']) echo"selected=selected"; ?> ><?=$rowCont['countryName']?></option><? } ?>
</select>




Теперь мне нужно, чтобы при отправке пользователем формы я сохранял country_full в таблице users, а страна, которая находится в таблице countries, также сохранялась в таблице user.
странам таблица имеет два столбца (код, который находится в стране + CountryName который country_full).



<pre> 
$country_full = str_replace("'", "", $_POST['country_full']);		 
$country= mysql_query("SELECT countryCode FROM countries WHERE $country_full==countryName");    		  
        
if( $s_user==1  && $captcha_error==0 ) {
        $query = "INSERT INTO users (id,username, password,pass_raw,organization,contact,email,fax, phone,  website ,country_full ,country ,address2,status,confirmed,active, last_edit)

VALUES      (NULL,  '$user','$password','$pass_raw','$organization','$contact','$email', '$fax', '$phone', '$website','$country_full','$country', '$mcat', '1','0','$activation_code', '".date('Y-m-d H:i:s')."')";


Что я уже пробовал:

Теперь country_full сохраняется в пользовательской таблице, но страна не сохраняется.!!!

Richard Deeming

INSERT INTO users (id, username, password, pass_raw, ...

Я надеюсь, что pass_raw это не значит, что вы храните пароль в виде обычного текста!

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]

PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]

Вы должны НИКОГДА храните пароль пользователя в виде обычного текста.

1 Ответов

Рейтинг:
1

Patrice T

Попробуй;

$country= mysql_query("SELECT countryCode FROM countries WHERE '$country_full'==countryName");


$query = "INSERT INTO users (id,username, password,pass_raw,organization,contact,email,fax, phone,  website ,country_full ,country ,address2,status,confirmed,active, last_edit)

VALUES      (NULL,  '$user','$password','$pass_raw','$organization','$contact','$email', '$fax', '$phone', '$website','$country_full','$country', '$mcat', '1','0','$activation_code', '".date('Y-m-d H:i:s')."')";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]