Присвоение посетителю ID посредством PHP с записью в файл.

BigBalabas

Новичок
Приветствую многоуважаемых форумчан, посетителей форума.
Пытаюсь создать сайт-конструктор на 4 - 5 страниц. Форма регистрации не нужна. Хочу все реализовать без баз данных, с помощью PHP.
Нужно, чтобы при входе на сайт (index) генерировался и создавался файл с названием уникального id.

Один из конечных файлов (при условии, если посетитель прошел все пункты) я представляю так:

5432146234 - название файла

art_0001 // выбранный артикул (1-я страница)
cherry // выбранный цвет (2-я страница)
#ffffff // выбранный второй цвет (3-я страница)
Псевдоним // данные (3-я страница)
e-mail // данные (3-я страница)
Форма ввода // данные (4-я страница)
Форма ввода // данные (4-я страница)
Форма ввода // данные (4-я страница)
Получается в файле должно быть около восьми строк.


На первой странице:

<?php $id = uniqid(); ?> // генерирую id
<input type="hidden" name="id" value="<?php echo $id; ?>">

<?php
$i=$id;
do {
$filename=$i.".txt"; //записываю файл с названием уник. id
$is_exist = file_exists($filename);

} while ($is_exist);
$file = fopen("base/$filename", 'a+');
{
fwrite($file, "\r");
}
fclose($file);
?>

На каждой странице ловлю id
<input type="hidden" name="key" value="<?php echo $_POST['id']; ?>">

Запись параметра в файл с id реализована так (скрипт на второй странице):

<?php
import_request_variables('p', 'p_'); // импорт id из $_POST
if ($_POST['changed_form']);
$file = fopen("base/$p_id.txt", 'a+');
unset($_POST['id']); //удаляю из массива id, так как иначе id будет записываться в файл через каждую строку
fputs($file, $_POST['changed_form']);
fclose($file);
?>
Запись произошла в файл с названием id, все хорошо, но
Во что я уперся - это то что на второй странице подхватить id удается, а на последующих - нет!


На третьей видим ошибку в строке 49, это у нас строка с директорией файла:
$file = fopen("base/$p_id.txt", 'a+');


Пробовал еще такой скрипт:
<?php
import_request_variables('p', 'p_');
$file = fopen("base/$p_id.txt", 'a+');
unset($_POST['id']);
foreach ($_POST as $key => $color) // тут делаем из массива переменную
{
fwrite($file, $color . "\r\n");
}
fclose($file);
?>

Ошибка та же самая: Undefined variable: p_id

Помогите пожалуйста, в чем может быть ошибка, как подхватывать уникальный идентификатор на каждой странице сайта?
 

Andkorol

Новичок
Нечто малопонятное ты затеял – ну да это твои тараканы...
На первой странице:
<input type="hidden" name="id" value="<?php echo $id; ?>">
На каждой странице ловлю id
<input type="hidden" name="key" value="<?php echo $_POST['id']; ?>">
Во что я уперся - это то что на второй странице подхватить id удается, а на последующих - нет!
Ты уж как-то определись, что тебе нужно ловить: если id – так обзывай и дальше своё поле name="id" , а то ты присвоил полю name="key" – а «ловить» пытаешься id.

 

BigBalabas

Новичок
Разобрался с id, подхватывается на каждой странице!
Все данные записываются в один файл, с новой строки, как и должно быть.
Я делаю директории на картинки, исходя из тех параметров, что выбрали. В связи с этим необходимо вставлять разные строки из файла в разных страницах сайта.
Могу читать первую строку с помощью такого скрипта:

PHP:
<?php
import_request_variables('p', 'p_');
$fp = fopen("base/$p_id.txt", "r"); // Открываем файл в режиме чтения
$first = fgets($fp, 1024);
echo $first ;
fclose($fp);
?>
либо иными скриптами сначала файла и до конца.

Возник вопрос как прочитать из файла сначала вторую строку, потом первую, и что бы между ними был слэш.
допустим в файле есть данные в файле:

art_0003
cherry
#C4C4FF
и т.д.

Нужно что бы получилось так: cherry/art_0003

Перерыл литературу и сайты, хотелось бы скрипт, который читает из файла отдельную строку. Какие есть варианты?
 

Adelf

Administrator
Команда форума
@BigBalabas, ты делаешь ровно то, что уже давно умеет сам php. Прочитай внимательно мою ссылку.
 

antson

Новичок
Партнер клуба
мдя. а потом ты забудешь что у тебя на первой или n-строке записано. Самое простое считывать все строки в массив.
но раз уж читаем целиком, то и пишем так же. То можно работать с json или xml,yml и кучу других форматов на придумывали.

но для твоих целей вполне хватит функционала сессий (Адельф уже сие сказал).
$_SESSION['bgcolor'] и т.п.
 
Сверху