X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Не заносятся данные в базу данных
kani339
kani339
Topic Starter сообщение 7.4.2015, 16:43; Ответить: kani339
Сообщение #1


Регистрация проходит успешно, но данные в бд не заносятся. Как определить в чем причина?

[PHP]<?php
include_once('config.php');

if(isset($_POST['submit'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$password = $_POST['password'];

if (strlen($name) < 5) {
exit ("Логин должен состоять не менее чем из 5 символов.");
}
if(strlen($password)< 6 ) {
exit("Пароль должен состоять не менее чем из 6 символов.");
}
if(strlen($phone)<8){
exit("Номер телефона должен состоять не менее чем из 8 символов");
}

if($password != "") {
$password = md5($password);
$sql="INSERT INTO register('name,email,phone,password') VALUES ('$name,$emai,$phone,$password')";
$result=mysql_query($sql);
echo "Вы успешно создали вашу учетную запись.";
} else {

}
}

?> [/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 7.4.2015, 17:26; Ответить: Den1xxx
Сообщение #2


как вариант, включить вывод ошибок на экран и увидеть глазами.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
сообщение 7.4.2015, 17:42; Ответить: Wins
Сообщение #3


По идеи в кавычках дело
попробуйте так

[PHP]$sql="INSERT INTO register(name,email,phone,password) VALUES ('$name','$email','$phone','$password')";[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 7.4.2015, 17:54; Ответить: Degradator
Сообщение #4


(Wins @ 7.4.2015, 19:42) *
По идеи в кавычках дело

Ну, и я бы посоветовал экранировать входящие данные.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
kani339
kani339
Topic Starter сообщение 7.4.2015, 18:30; Ответить: kani339
Сообщение #5


Спасибо огромное, все работает, проблема в кавычках)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
сообщение 7.4.2015, 18:41; Ответить: Wins
Сообщение #6


(Degradator @ 7.4.2015, 19:54) *
Ну, и я бы посоветовал экранировать входящие данные.

Ну если говорить о безопасности то да, а еще проверить регулярками переда записью, и я например еще и при записи удаляю все что мне не нужно

хотя это уже считается вроде как лишним. Но я так делаю иногда.

с начало preg_match
потом preg_replace
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Den1xxx
Den1xxx
сообщение 8.4.2015, 8:40; Ответить: Den1xxx
Сообщение #7


(Wins @ 7.4.2015, 20:41) *
Ну если говорить о безопасности то да, а еще проверить регулярками переда записью

(Wins @ 7.4.2015, 20:41) *
с начало preg_match
потом preg_replace

????? Одного недостаточно?

Вот эта функция покрывает почти все мои потребности по экранированию:
[PHP]/**
* Returns cutted down entry data
*
* @param string $data
* @param int $mode
* @return string
*/
function vf($data,$mode=0) {
switch ($mode) {
case 1:
return preg_replace("/[^a-z0-9A-Z]+/",'',$data); // числа, буквы
break;
case 2:
return preg_replace("/[^a-zA-Z]+/",'',$data); // буквы
break;
case 3:
return preg_replace("/[^0-9]+/",'',$data); // числа
break;
case 4:
return preg_replace("/[^a-z0-9A-Z\-_\.]+/",'',$data); // числа, буквы, тире, прочерк, точка
break;
case 5:
return preg_replace("/[^ [:punct:]".('a-zA-Z')."0-9]+/",'',$data); // соотв. текущему языку алфавит + цифры и знаки препинания
break;
case 'in':
return preg_replace("~\A[^0-9]+|[^0-9,]+|,[^0-9]*(?=,)|[^0-9]+\Z~",'',$data); // числа, запятые для "SELECT * FROM `table` WHERE `key` IN ($data)"
break;
default:
return preg_replace("/[~@\+\?\%\/\;=\*\>\<\"\'\-]+/",'',$data); // блек-лист в крайнем случае.
break;
}
}
[/PHP]

Иногда я её дописываю:)

А для просто текстовых данных mysql_real_escape_string
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
сообщение 8.4.2015, 10:47; Ответить: Degradator
Сообщение #8


(Wins @ 7.4.2015, 20:41) *
с начало preg_match
потом preg_replace


(Den1xxx @ 8.4.2015, 10:40) *
Вот эта функция покрывает почти все мои потребности по экранированию:


Зачем такие сложности, если можно сделать
"insert into my_table(my_value) values ('".addslashes($value)."')"


Или если хочется идти в ногу со временем, почему бы не использовать плейсхолдеры
"insert into my_table(my_value) values (:value)"

или хотя-бы препаред стейтменты
"insert into my_table(my_value) values (?)"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Wins
Wins
сообщение 8.4.2015, 11:37; Ответить: Wins
Сообщение #9


Den1xxx, за функцию спс, пригодится)

(Den1xxx @ 8.4.2015, 10:40) *
Одного недостаточно?

ну как бы достаточно, просто это я что то себе накрутил что так надежней)

а так конечно preg_replace лишнее

его использую где нужно отфильтровать данные без уведомления пользователя

и плюс использую mysql_real_escape_string

все числовые значения преобразую в intval

и еще иногда такой фильтр

[PHP]preg_match("/script|http|<|>|<|>|SELECT|UNION|UPDATE|DELETE|DROP|TABLE|ALTER|JOIN|exe|exec|INSERT|tmp/i",$data)[/PHP]


(Degradator @ 8.4.2015, 12:47) *
Зачем такие сложности, если можно сделать


Ну все зависит от конкретного случая

не везде регулярки применяю, где то без них обхожусь, а где то нет

Ну и мне больше нравится когда в базу пишутся данные без всякого мусора

если я ожидаю только буквы, цифры и подчеркивание, то остальные знаки мне не к чему,

даже если они не представляют никакой опасности, поэтому я их просто удаляю)

если к примеру такую строку передали, то зачем мне этот мусор экранировать?

Dsafa13&^%47,"]'+-141@!Fda

Я из нее сделаю

Dsafa1347141Fda ))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Arks
Arks
сообщение 17.4.2015, 21:24; Ответить: Arks
Сообщение #10


Не стоит решать проблемы которых не существует.
1. addslashes не дает 100% защиты от инъекций, т.к. некоторые вещи которые тот же мускуль трактует как кавычки - по мнению addslashes кавычками не являются.
2. препэйред statements давно поддерживаются всеми клиентами и серверами реляционных БД. Плейсхолдеры и знаки вопросика трактуются одинаково, различия только в оформлении в запросе(плейсхолдеры гораздо нагяднее)
3. заменять в данных одно на другое(считая что Вы делаете благое дело вычищая мусор) - вообще какая-то муть. Вы этим не очищаете данные - а искажаете. В случае если какие-то данные переданы без соблюдения требуемого формата - то должна быть соотв.ошибка а не preg_replace и запись в БД уже непонятно-чего.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПродам базу сайтов Wordpress в 16 миллионов доменов! Свежая сборка.
17 Boymaster 9810 17.3.2024, 2:53
автор: Boymaster
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6630 13.3.2024, 23:16
автор: spoyer_ru
Открытая тема (нет новых ответов) Подкиньте базу ключей тематики wallpaper - Обои для рабочего стола
0 uahomka 831 27.2.2024, 0:38
автор: uahomka
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3801 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Спарсить данные с сайта
2 EvilGomel 1102 17.8.2023, 9:37
автор: bobmen


 



RSS Текстовая версия Сейчас: 29.3.2024, 12:39
Дизайн