В этом примере демонстрируется как с помощью php-скриптов хранить какую-либо дополнительную информацию о пользователе. Скрипт создает на странице форму с дополнительными полями для текушего пользователя, которые он заполняет и нажимает кнопку "Обновить". Переданные данные сохраняются в файле и при повторном посещении страницы выводятся сверху до дополнительных полей. Таким образом, для каждого посетителя сайта хранятся введеные им дополнительные сведения. Данный скрипт можно использовать для хранения какой-либо информации о пользователе, на основании которой в дальнейшем создавать политику доступа данного пользователя к страницам сайта, группировать пользователей по интересам и т.п. Исходный код данного примера приведен ниже. В шаблоне страницы:
Code
<?IF($USER_ID$)?>
<div align="center">
<b>Данный пример демонстрирует использование скрипта для хранения дополнительных полей текущего пользователя</b>
</p>
</div>
<hr>
<?$PHPCODE$("http://phpexample.ucoz.net/php/example001/example001.php?uid=",$USER_ID$)?>
<?ELSE?>
<div id="phpdiv">
Вы не зарегистрированны. Пожалуйста, зарегистрируйтесь или войдите своей учетной записью
</p>
</div>
<?ENDIF?>
PHP скрипт примера:
Code
<?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('
Ваш автомобиль: ".$_POST['f0']." ".$_POST['f1']."<\p>
Ваш телефон: ".$_POST['f2']." ".$_POST['f3']."<\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'>
Ваш автомобиль: $a $b</p>
Ваш телефон: $c $d</p>
Ваш любимый день недели: $e</p></div><hr>";
$status_ok=1;
break;
}
}
if (!$status_ok) echo "<div id='adddata' align='center'>О вас еще нет дополнительных данных. Пожалуйста, введите их</div><hr>";
?>
Дополнительные данные</p>
<form action="/php/example001/example001.php" method="post" onsubmit="_uPostForm(this,{dataType:'script'});return false;" onerror="alert('Error');">
<input type="hidden" name="userid" value="<?echo $_GET['uid']?>"></p>
Марка вашего авто: </p><input type="text" name="f0" />
Модель вашего авто: </p><input type="text" name="f1" />
Производитель вашего мобильного телефона: </p><input type="text" name="f2" />
Модель вашего мобильного телефона: </p><input type="text" name="f3" />
Любимый день недели: </p><input type="text" name="f4" />
<input type="submit" value="Обновить"></p>
</form>
ВАЖНО!
Использование отправленного скрипту идентификатора пользователя $USER_ID$ методом GET (со страницы сайта) или POST(из формы на странице) не является надежным и безопасным, т.к. он может быть подделан. Для безопасного получения реального идентификатора пользователя, который просмитривает страницу с исполняемым скриптом, используйте в php скрипте функцию ucoz_getinfo("SITEUSERID"). В данном примере для этого необходимо изменить следующие строки:
1.
C
Code
<?$PHPCODE$("http://phpexample.ucoz.net/php/example001/example001.php?uid=",$USER_ID$)?>
на
Code
<?$PHPCODE$("http://phpexample.ucoz.net/php/example001/example001.php)?>
2.
C
Code
if ($id==$_POST['userid'])
на
Code
if ($id==ucoz_getinfo("SITEUSERID")
3.
C
Code
file_put_contents('additiondata.dat', $_POST['userid']. "\t". $_POST['f0']. "|". $_POST['f1']. "|". $_POST['f2']. "|". $_POST['f3']. "|". $_POST['f4']."\n", FILE_APPEND);
на
Code
file_put_contents('additiondata.dat', ucoz_getinfo("SITEUSERID"). "\t". $_POST['f0']. "|". $_POST['f1']. "|". $_POST['f2']. "|". $_POST['f3']. "|". $_POST['f4']."\n", FILE_APPEND);
4.
C
Code
if ($id==$_GET['uid'])
на
Code
if ($id==ucoz_getinfo("SITEUSERID")) 5. Удалить
<input type="hidden" name="userid" value="<?echo $_GET['uid']?>"></p>