Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 28.09.2017, 05:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Dan922
я чет не совсем понимаю, так ведь приходят целые числа, нет?
Нет, все что в значениях полей формы, это строки, строковые представления, и сервер получается строки. А все что присылают серверу может быть "подделкой". Ссылку на документацию РНР я дал, скачивайте. Там есть раздел о безопасности, в котором есть и о безопасности баз данных.
Если вы не проверив, что прислал клиент, подставите его данные в запрос, то вашу базу могу и взломать, так как вы ожидали что там 5, а к ней еще добавят запрос.

Сообщение от Dan922
Дайте пример вот на это
В самом простом случае, это привести к типу integer, так как знаем, что получаем идентификаторы:

if($id = (int)имя_переменной) {
     теперь $id можно подставлять в запрос так как это число и не равно 0
}


Ищите в руководстве раздел работы с переменными, где описана и функция проверки переменной является ли она числом или строкой, содержащей число - is_numeric. Также в РНР достаточный набор фильтров для проверки данных. Я вам не могу написать примеров хотя бы потому, что вы их вставите в свое, а в итоге не получится. Примеры использования той или иной РНР функции смотрите в разделе ее описания, есть там и примеры.

Все потому, что нужно не просто проверять число/не число, но еще и отдавать клиенту сообщения об ошибках, то есть прием формы от клиента, это есть диалог клиент -> сервер -> клиент. Вы что хотите чтобы я вам полный скрипт всего и вся написал? Я не буду. Ищите здесь, в сети подобные вопросы, скрипты, изучайте и применяйте у себя познанное.

Это не раздел РНР, серверным скриптам на этом форуме посвящен другой раздел и писать тут много о проблемах на сервере не стоит. В данном разделе можно было бы вести диалог о клиентской части вашего кода. А она никуда не годится - много лишнего.
Ответить с цитированием
  #32 (permalink)  
Старый 28.09.2017, 12:52
Аспирант
Отправить личное сообщение для Dan922 Посмотреть профиль Найти все сообщения от Dan922
 
Регистрация: 03.09.2017
Сообщений: 41


Я привел к integer, подставил id в запрос и получил...снова число))
Может что-то не так с самим запросом?

Потому что таблица имеет вид :
city_id region_id name
Ответить с цитированием
  #33 (permalink)  
Старый 28.09.2017, 13:06
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Dan922,
Как и говорил laimas
Сообщение от laimas
Я вам не могу написать примеров хотя бы потому, что вы их вставите в свое, а в итоге не получится
Сообщение от Dan922
привел к integer, подставил id в запрос и получил...снова число))
Покажите запрос и где получили число

Последний раз редактировалось Dilettante_Pro, 28.09.2017 в 13:11.
Ответить с цитированием
  #34 (permalink)  
Старый 28.09.2017, 13:13
Аспирант
Отправить личное сообщение для Dan922 Посмотреть профиль Найти все сообщения от Dan922
 
Регистрация: 03.09.2017
Сообщений: 41

да удалил уже, ересь написал
вроде понимаю что к чему, а как правильно записать хз.
Ответить с цитированием
  #35 (permalink)  
Старый 28.09.2017, 13:35
Аспирант
Отправить личное сообщение для Dan922 Посмотреть профиль Найти все сообщения от Dan922
 
Регистрация: 03.09.2017
Сообщений: 41

if($city_id = (int)$_POST['city_id']) {
     $city = mysql_query("SELECT name FROM city WHERE city_id=city_id" . $post['city_id']);
}
Ответить с цитированием
  #36 (permalink)  
Старый 28.09.2017, 13:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Dan922
Потому что таблица имеет вид :
city_id region_id name
Чтобы судить о структуре вашей таблицы это как минимум нужно видеть ее дамп. Но если по ID города получить его название и таблица городов, это: идентификатор города - city_id, идентификатор региона - region_id, название города - name, этих сведений достаточно.

Считаем, что города всех регионов и содержатся в этой таблице, а значит city_id, это уникальное значение принадлежащее только одному городу. Следовательно, если запросить значение поля name для city_id равное 200, то вернется название именно этого города, а не другого, но с условием, что в этой таблице город с идентификатором 200 есть. В противном случае запрос вернет NULL.

Будем считать, что входные данные обработаны и их можно подставлять в запрос, условно назовем эту обработанную переменную ID города полученную из формы как $id (ID региона в запросе указывать не надо, потому, что все города в этой таблице, читайте выше), тогда нужно выполнить такие действие:

$q = mysql_query('SELECT `name` FROM `city` WHERE `city_id` = ' . $id);
//проверяем вернул ли что-то запрос, если вернул, значит такой город в базе есть
if(mysql_num_rows($q)) {
    //получить название города
    $name = mysql_fetch_row($q);
    //в тело почты подставляем
     "..... \nИз города: $name[0] .....";
} else {
    //запрос ничего не вернул, значит, хотя данные это число, но под таким идентификатором в базе города нет
    //а это означает, что подстава, принять действия
}

Последний раз редактировалось laimas, 28.09.2017 в 14:06.
Ответить с цитированием
  #37 (permalink)  
Старый 28.09.2017, 14:24
Аспирант
Отправить личное сообщение для Dan922 Посмотреть профиль Найти все сообщения от Dan922
 
Регистрация: 03.09.2017
Сообщений: 41

Все круто
Только почему он мне первую букву города вернул?
Ответить с цитированием
  #38 (permalink)  
Старый 28.09.2017, 14:31
Аспирант
Отправить личное сообщение для Dan922 Посмотреть профиль Найти все сообщения от Dan922
 
Регистрация: 03.09.2017
Сообщений: 41

Я слишком тупой, чтобы достать название города самостоятельно.
Да и вообще , скорее всего, изначально неправильно привел к integer , возможно ошибки в запросе.

Последний раз редактировалось Dan922, 28.09.2017 в 14:35.
Ответить с цитированием
  #39 (permalink)  
Старый 28.09.2017, 14:40
Аспирант
Отправить личное сообщение для Dan922 Посмотреть профиль Найти все сообщения от Dan922
 
Регистрация: 03.09.2017
Сообщений: 41

Смотрю в учебнике работу с формами.
Там приводится к integer.
Написал примерно так же у себя. Но я так и не понял как вытащить строки из дскриптора.
Ответить с цитированием
  #40 (permalink)  
Старый 28.09.2017, 14:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Dan922
Я слишком тупой, чтобы достать название города самостоятельно.
Заказывайте работу, оплачивайте и используйте написанное, но пояснять все никто не станет, все таки тут не школа.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 Select зависимы друг от друга u4enik12 Общие вопросы Javascript 8 13.06.2016 10:40
Проверка нескольких select на одинаковые значения emulexx Общие вопросы Javascript 6 07.04.2015 15:19
Метод для конвертирования едениц px, em, %, pt. jegit Элементы интерфейса 0 07.03.2013 16:15
Как сохранить предыдущее значение select? MaxD Общие вопросы Javascript 3 21.07.2011 12:36
Проблема с динамическим формированием select elepsion jQuery 1 31.10.2010 14:31