В этом примере демонстрируется как с помощью
php-скриптов хранить какую-либо дополнительную информацию о пользователе. Скрипт создает на странице форму с дополнительными полями для текушего пользователя, которые он заполняет и нажимает кнопку "Обновить". Переданные данные сохраняются в файле и при повторном посещении страницы выводятся сверху до дополнительных полей. Таким образом, для каждого посетителя сайта хранятся введеные им дополнительные сведения. Данный скрипт можно использовать для хранения какой-либо информации о пользователе, на основании которой в дальнейшем создавать политику доступа данного пользователя к страницам сайта, группировать пользователей по интересам и т.п. Исходный код данного
примера приведен ниже.
В шаблоне страницы:
<?IF($USER_ID$)?> <div align="center"> <p> <b>Данный пример демонстрирует использование скрипта для хранения дополнительных полей текущего пользователя</b> </p> </div> <hr> <?$PHPCODE$("http://phpexample.ucoz.net/php/example001/example001.php?uid=",$USER_ID$)?> <?ELSE?> <div id="phpdiv"> <p> Вы не зарегистрированны. Пожалуйста, зарегистрируйтесь или войдите своей учетной записью </p> </div> <?ENDIF?>
PHP скрипт примера:
<?php if(count($_POST)>0) { $___notjson=1; $lines = file('additiondata.dat'); if ($_POST['f0'] && $_POST['f1'] && $_POST['f2'] && $_POST['f3'] && $_POST['f4']) { foreach ($lines as $line_num => $line) { trim($line); list ($id, $data) = split("\t",$line,2); if ($id==$_POST['userid']) { unset($lines[$line_num]); file_put_contents('additiondata.dat', $lines); break; } } file_put_contents('additiondata.dat', $_POST['userid']. "\t". $_POST['f0']. "|". $_POST['f1']. "|". $_POST['f2']. "|". $_POST['f3']. "|". $_POST['f4']."\n", FILE_APPEND); echo "$('#adddata').html('<p>Ваш автомобиль: ".$_POST['f0']." ".$_POST['f1']."<\p><p>Ваш телефон: ".$_POST['f2']." ".$_POST['f3']."<\p><p>Ваш любимый день недели: ".$_POST['f4']."<\p>')"; } else echo "$('#adddata').html('Неверно введены данные')"; exit; } $lines = file('additiondata.dat'); $status_ok=0; foreach ($lines as $line_num => $line) { trim($line); list ($id, $data) = split("\t",$line,2); if ($id==$_GET['uid']) { list ($a,$b,$c,$d,$e) = split("\|",$data,5); echo "<div id='adddata' align='center'><p>Ваш автомобиль: $a $b</p><p>Ваш телефон: $c $d</p><p>Ваш любимый день недели: $e</p></div><hr>"; $status_ok=1; break; } } if (!$status_ok) echo "<div id='adddata' align='center'>О вас еще нет дополнительных данных. Пожалуйста, введите их</div><hr>"; ?>
Использование отправленного скрипту идентификатора пользователя $USER_ID$ методом GET (со страницы сайта) или POST(из формы на странице) не является надежным и безопасным, т.к. он может быть подделан. Для безопасного получения реального идентификатора пользователя, который просматривает страницу с исполняемым скриптом, используйте в php скрипте функцию ucoz_getinfo("SITEUSERID"). В данном примере для этого необходимо изменить следующие строки:
1. C <?$PHPCODE$("http://phpexample.ucoz.net/php/example001/example001.php?uid=",$USER_ID$)?> на <?$PHPCODE$("http://phpexample.ucoz.net/php/example001/example001.php)?>
2. C if ($id==$_POST['userid']) на if ($id==ucoz_getinfo("SITEUSERID"))
3. C file_put_contents('additiondata.dat', $_POST['userid']. "\t". $_POST['f0']. "|". $_POST['f1']. "|". $_POST['f2']. "|". $_POST['f3']. "|". $_POST['f4']."\n", FILE_APPEND); на file_put_contents('additiondata.dat', ucoz_getinfo("SITEUSERID"). "\t". $_POST['f0']. "|". $_POST['f1']. "|". $_POST['f2']. "|". $_POST['f3']. "|". $_POST['f4']."\n", FILE_APPEND);
4. C if ($id==$_GET['uid']) на if ($id==ucoz_getinfo("SITEUSERID"))
5. Удалить <p><input type="hidden" name="userid" value="<?echo $_GET['uid']?>"></p>
Менял скрипт для себя чтобы сохранять не несколько слов в поле, а целый большой текст. Заменил input'ы на textarea, подчистил код от других ненужных полей, но с объёмным текстом так ничего и не получилось. Так и сохранялась только первая введённая строчка. Может кто подскажет что изменить?
Да судя по комментариям, php не для новичков. Ладно вот нормальный скрипт хоть даже мой первый скрипт для ucoz но отлично проработан http://upost.su/load/skripty/user/1/1-1-0-36 .