Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в базу MySQL 
:(
    Опции темы
warningmax
Дата 26.1.2011, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Мой первый скрипт обращения к базе ... не пинайте ...
Можете сказать что я неправильно делаю и как сделать запись с формы в базу данных лучше и безопаснее
Код

header('Content-Type: text/html; charset=utf-8');
require_once 'form1.phtml';
$con = mysql_connect("localhost","root","");
mysql_query("set names utf8");
if (!isset($con))
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("z", $con);
$name = $_POST['name'];
$groups = $_POST['groups'];
$login = $_POST['login'];
$pass = $_POST['pass'];
//Запрос к базе
$sql="INSERT INTO users (name, groups, login, pass)
VALUES
('$_POST[name]','$_POST[groups]','$_POST[login]','$_POST[pass]')";
if (!mysql_query($sql,$con))
  {
  //die('Error: ' . mysql_error());
  }
echo "Данные добавлены в базу";
mysql_close($con)

PM MAIL   Вверх
triclosan
Дата 26.1.2011, 12:23 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: нет
Всего: 12



пустой пароль - плохо


PM MAIL   Вверх
warningmax
Дата 26.1.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Цитата(triclosan @ 26.1.2011,  12:23)
пустой пароль - плохо

Это все локально и в учебных целях  smile 
PM MAIL   Вверх
triclosan
Дата 26.1.2011, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: нет
Всего: 12



ну кавычки можно эскейпить
PM MAIL   Вверх
solenko
Дата 26.1.2011, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(warningmax @  26.1.2011,  11:20 Найти цитируемый пост)
Можете сказать что я неправильно делаю 

Не читали раздел мануала Database Security
Ну а там описано как 
Цитата(warningmax @  26.1.2011,  11:20 Найти цитируемый пост)
и как сделать запись с формы в базу данных лучше и безопаснее

написано как раз в этом разделе


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
warningmax
Дата 26.1.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Цитата(solenko @ 26.1.2011,  12:43)
Цитата(warningmax @  26.1.2011,  11:20 Найти цитируемый пост)
Можете сказать что я неправильно делаю 

Не читали раздел мануала Database Security
Ну а там описано как 
Цитата(warningmax @  26.1.2011,  11:20 Найти цитируемый пост)
и как сделать запись с формы в базу данных лучше и безопаснее

написано как раз в этом разделе

Сейчас почитаю! спасибо smile 
PM MAIL   Вверх
topy
Дата 26.1.2011, 17:40 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 18.2.2008

Репутация: 1
Всего: 1



Первое правило: никогда не доверяйте данным, пришедшим от пользователя!!! НИКОГДА!!!
Код

$name = $_POST['name']; - это небезопасно
$name = mysql_real_escape_string($_POST['name']); - так намного лучше

И хотя бы так делайте со всеми переменными, пришедшими от пользователя.
Да и зачем вы присваиваете имена переменным, если потом в запросе у вас все равно старые: $_POST['name']
Вставляйте в запрос переменные так:
Код

$sql="INSERT INTO users (name, groups, login, pass) VALUES ('".$name."','".$groups."','".$login"','".$pass."')";

экранированные переменные работают немного быстрее т.к. парсер изначально знает что это переменная, а не строка.
Ну и ; в самом конце потеряли.

Это сообщение отредактировал(а) topy - 26.1.2011, 17:45
PM MAIL   Вверх
warningmax
Дата 16.2.2011, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Код

if (isset($_POST['in1'])){
$query="INSERT INTO text (text) VALUES ('{$_POST['in1']}')";
mysql_query($query);};

Как сделать чтобы при запуске страницы и обновлении не добавлялись пустые данные
PM MAIL   Вверх
bars80080
Дата 16.2.2011, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(warningmax @  16.2.2011,  16:37 Найти цитируемый пост)
Как сделать чтобы при запуске страницы и обновлении не добавлялись пустые данные 

проверять данные на пустоту - empty()
PM MAIL WWW   Вверх
warningmax
Дата 14.3.2011, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Все правильно делаю?
Код

<?php
header('Content-Type: text/html; charset=utf-8');
if (isset($_POST['in1'])){
require_once 'config.php';
$in1 = mysql_real_escape_string($_POST['in1']);
$in2 = mysql_real_escape_string($_POST['in2']);
$query="INSERT INTO data (in1, in2) VALUES ('".$in1."','".$in2."')";
mysql_query($query);
header("Location: index.php");
}
?>
<form method="POST">
    <input type="text" name="in1" value="" />
    <input type="text" name="in2" value="" />
    <input type="submit" />
</form>


Это сообщение отредактировал(а) warningmax - 14.3.2011, 11:30
PM MAIL   Вверх
bars80080
Дата 14.3.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



не проверки на существование $_POST['in2']
плюс, нет проверки на длину данных в переменной. если их будет больше, чем ширина поля в БД - выскочит ошибка
PM MAIL WWW   Вверх
warningmax
Дата 16.3.2011, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Код

$in1 = mysql_real_escape_string($_POST['in1']);
$in2 = mysql_real_escape_string($_POST['in2']);

Как этот кусок записать в одну строку?

Это сообщение отредактировал(а) warningmax - 16.3.2011, 13:34
PM MAIL   Вверх
bars80080
Дата 16.3.2011, 14:54 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(warningmax @  16.3.2011,  12:33 Найти цитируемый пост)
Как этот кусок записать в одну строку?


Код

$in1 = mysql_real_escape_string($_POST['in1']); $in2 = mysql_real_escape_string($_POST['in2']);

PM MAIL WWW   Вверх
warningmax
Дата 16.3.2011, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



Цитата(bars80080 @ 16.3.2011,  14:54)
Цитата(warningmax @  16.3.2011,  12:33 Найти цитируемый пост)
Как этот кусок записать в одну строку?


Код

$in1 = mysql_real_escape_string($_POST['in1']); $in2 = mysql_real_escape_string($_POST['in2']);

Я наверное неправильно выразился ... я имел в виду в виде массива как записать ...
PM MAIL   Вверх
Clickbeetle
Дата 16.3.2011, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.3.2011

Репутация: нет
Всего: нет



Если я вас правильно понял, то так:
Код

$in1 = mysql_real_escape_string($_POST['in1']); $in2 = mysql_real_escape_string($_POST['in2']);
$in_array = array($in1,$in2);

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1178 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.