|
|
|
|
|
для: Lin-san
(29.09.2008 в 12:18)
| | Для такой простой задачи , я-бы присмотрелся к суперглобальгому массиву $_SESSION
Можно вкратце ознакомиться с сессиями тут
http://softtime.ru/bookphp/gl8_1.php
но учитывая что $HTTP_SESSION_VARS это уже устаревающее имя этого массива
И для передачи между страницами достаточно строки
session_start()
и присваивать и читать значения из $_SESSION.
Только есть минус -
у пользователей должны быть включены cookies
или это придётся обходить передавая идентификатор сессии в адресе.
p/s
из слов Trianon'а ,о том что применение htmlspecialchars() сходу не лучший вариант,
увидел только намёк на то что пользователь сможет вставить в эти переменные текст максимального размера,
и эта функция будет всё это безобразие обрабатывать :)
Но по сути ,в памяти сервера и так уже будет вся эта поместившаяся туда строка,
Следовательно первым делом можно применять что-то типа
unpack() или substr() или sscanf() или sprintf(), или что-то другое
, что сможет загрузить в переменную ровно столько нужно ,и облегчит работу скрипта избавлением от переработки лишних данных :)
Но могу ошибаться или недопонимать в своих предположениях смысла этих слов :)
upd//
немного подумал и понял ещё один возможный смысл слов
ещё, и даже в первую очередь, наверное подразумевалась одна в последнее время постоянно-включенная опция
которая экранирует кавычки находимые в данных передаваемых пользователями посредством
GET POST и COOKIE
имя ей magic_quotes_gpc
она прячетс в недрах файла php.ini
и иногда заставляет честных кодеров бороться с её проявлениями , применяя stripslashes()
предварительно проверяя
if ( get_magic_quotes_gpc() )
Извиняюсь за многословие )) | |
|
|
|
|
|
|
|
для: mehelson
(29.09.2008 в 04:21)
| | спасибо. | |
|
|
|
|
|
|
|
для: Lin-san
(28.09.2008 в 20:00)
| | Вы что магазин на файлах делаете, или это корзина пользователя? У вас что к базе нет доступа? | |
|
|
|
|
|
|
|
|
для: Trianon
(28.09.2008 в 20:12)
| | как закрыть файлы "имя.тхт" которые хранятся на сайте, от пользователей, что бы они не просматривали так:
директория/имя.тхт
?? | |
|
|
|
|
|
|
|
для: xx77
(28.09.2008 в 17:53)
| | >даже можно сразу защититься от того что в эти data1, data2 и data3
>напихают html-тегов, и они Вам весь дизайн странички испортют :)
Сразу - не стоит. | |
|
|
|
|
|
|
|
для: xx77
(28.09.2008 в 17:58)
| | ухх)) спасибо большое)) ...можно сразу в манула)
только вот не допонял:
мне надо просто:
extract($HTTP_POST_VARS);
extract($HTTP_GET_VARS);
заменить на:
$name = (isset($_GET['name'])) ? $_GET['name']: '';
$data1 = (isset($_POST['data1'])) ? $_POST['data1']: '';
и так с каждой датой.
...а скрипт выглядит так (который я привел это 2-ой этап)
1-этап: пользователь заходит на страничку:
вводит имя - создается фаил txt : имя.txt
#тут можно как то закодировать, но как? через другую переменную.
так же на этой страничке он выбирает из 11-ти позиции 3-ри.
эти позиции записываются в фаил: имя.txt
теперь у нас есть текстовый фаил с масивом: 6¦2¦3¦
2-ой этап: я привел пример скрипта тут:
мы получаем из файла имя.тхт нужные нам позиции.
далее приписываем к тим позициям "наши" значения (например цену).
далее нам надо сохранить в файле имя.тхт новый ряд ввиде:
6-500¦2-200¦3-700¦
3-ий этап: показать пользовотелю после того как он выберет 3 позиции:
6 - 500
2 - 200
3 - 700
вот такая вот у мну была задачка))
сейчас думаю над пунктом 2 - как записать в фаил цены. | |
|
|
|
|
|
|
|
для: xx77
(28.09.2008 в 17:53)
| | если заработал с extract(),
то учитывайте то что обращение типа адрес.php?_SERVER[REMOTE_ADDR]=555.555.555.555
extract($_GET);
echo $_SERVER['REMOTE_ADDR'];
print_r($_SERVER);
опустошит Вам весь суперглобальный массив $_SERVER и подменит любую из переменных окружения | |
|
|
|
|
|
|
|
для: Lin-san
(28.09.2008 в 14:52)
| | переменные
$name
$data1
$data2
$data3
у Вас должны быть получены из массива $_POST или из $_GET
получаете их вначале скрипта ,
почти стандартные способы:
<?
$name = @$_GET['name'] || $name = '';
// не очень правильный но работающий способ
// здесь @ заглушает предупреждение, если $_GET['name'] совсем небыло установлено,
// или присваиваете $name пустую строку (пустая строка установится даже если передавалось значение '0')
$name = (isset($_GET['name'])) ? $_GET['name']: '';
// способ лучше
// проверяется установленна-ли переменная $_GET['name']
// и взависимости от результата устанавливается $name
// аналогично делаете с каждой нужной переменной из массивов $_POST или из $_GET
$data1 = (isset($_POST['data1'])) ? $_POST['data1']: '';
?>
даже можно сразу защититься от того что в эти data1, data2 и data3
напихают html-тегов, и они Вам весь дизайн странички испортют :)<?
//т.к. они нужны только в echo то их можно сразу htmlspecialchars();
$data2 = (isset($_POST['data2'])) ?htmlspecialchars($_POST['data2']) : '' ;
// ....................
|
Разбираетесь с этой $name ,
у Вас она используется в скрипте в качестве начала имени файла , file($name.'.txt')
и следовательно можно заставить скрипт читать любой файл с '.txt'
,только например перейдя по адресу вашего скрипта с строкой запроса adres?name=http://.....без .txt
или не адрес а путь по любым вашим папкам.
Непонятно что за файл Вы хотите считать в массив,
может у вас он всего один
, и можно просто тупо проверить $name сравнив с именем файла ,
, может лучше вообще избежать передачи имени , и передавать , только цифру
, может нужно проверить $name на соответствие шаблону if (preg_match('#[a-z]+#',$name)) ............
об этом история умалчивает.
и потом как только его прочитаете этот файл , чисто для себя, выведите структуру получившегося массива $results
добавив пару строк сразу после вызова функции file()
например такие
var_dump($results);
exit;
|
и посмотрите получилось-ли прочитать файл
p/s
такое-же var_dump() можно применить к любой переменной :)
upd//
долго сочинял ;)) | |
|
|
|
|
|
|
|
для: Lin-san
(28.09.2008 в 14:52)
| | код заработал. | |
|
|
|
|