В этом примере демонстрируется как с помощью php-скриптов хранить какую-либо дополнительную информацию о пользователе. Скрипт создает на странице форму с дополнительными полями для текушего пользователя, которые он заполняет и нажимает кнопку "Обновить". Переданные данные сохраняются в файле и при повторном посещении страницы выводятся сверху до дополнительных полей. Таким образом, для каждого посетителя сайта хранятся введеные им дополнительные сведения. Данный скрипт можно использовать для хранения какой-либо информации о пользователе, на основании которой в дальнейшем создавать политику доступа данного пользователя к страницам сайта, группировать пользователей по интересам и т.п. Исходный код данного примера приведен ниже. В шаблоне страницы: Code <?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 скрипт примера: 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('<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>"; ?>
<p>Дополнительные данные</p> <form action="/php/example001/example001.php" method="post" onsubmit="_uPostForm(this,{dataType:'script'});return false;" onerror="alert('Error');"> <p><input type="hidden" name="userid" value="<?echo $_GET['uid']?>"></p> <p>Марка вашего авто: </p><input type="text" name="f0" /> <p>Модель вашего авто: </p><input type="text" name="f1" /> <p>Производитель вашего мобильного телефона: </p><input type="text" name="f2" /> <p>Модель вашего мобильного телефона: </p><input type="text" name="f3" /> <p>Любимый день недели: </p><input type="text" name="f4" /> <p><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. Удалить Code <p><input type="hidden" name="userid" value="<?echo $_GET['uid']?>"></p> |