PDA

Показать полную графическую версию : Скрипты


ManHack
05-12-2008, 16:48
Здравствуйте!
Мне нужен скрипт, который определяет IP машины, зашедшей на страницу с этим скриптом.
Желательно в нескольких вариантах: PHP, JavaScript, CGI.
Скрипт должен записать IP посетителя в файл (тогда запись должна быть вида "время - IP") или отправить на e-mail.

Coutty
05-12-2008, 17:07
PHP:

<?php
$fp = fopen("log.txt", 'a');
fwrite ($fp, date("Y-m-d H:m:s") . " - " . $_SERVER['REMOTE_ADDR'] . "
");
fclose($fp);
?>

Записывает в файл (на экран инфу не выводит).

На JS я не знаю. Да и зачем это надо? Всё равно об этом мог бы узнать только посетитель. А ему и на PHP можно сгенерировать :)

ManHack
27-12-2008, 12:23
Спасибо. А можно скрипт, который добавляет куку (или несколько cookies) в броузер?
И проверяет, добавилась ли она. Если добавилась, выводит ссылку, в противном случае выдаёт что-то в ключе: "Oops!.. Error :("

Igor_I
27-12-2008, 17:07
http://phpclub.net/manrus/f/setcookie.html
http://ru2.php.net/manual/ru/function.setcookie.php
Я вот только со временем так и не разобрался, оба компьютера в Москве (+3ч), а кука ставит время как есть, в GMT.
При проверки используется массив $_COOKIE, http://ru2.php.net/manual/ru/reserved.variables.cookies.php
Или можно так.

$filterforcookie = array
(
'user_id' => FILTER_VALIDATE_INT,
'hash' => array (
"filter" => FILTER_VALIDATE_REGEXP,
"options" => array(
"regexp" => '/^[a-zA-Z0-9]{32,32}$/')
),

'profile' => FILTER_VALIDATE_BOOLEAN,
);

$filtercookie = filter_input_array(INPUT_COOKIE, $filterforcookie);

if (isset($filtercookie['user_id']) and isset($filtercookie['hash']))
{

}
else
{
print "Включите куки";
#print_r ($filtercookie);

}

ManHack
29-12-2008, 10:47
Благодарю ^^
'user_id' - заголовок вносимой куки, а 'hash' - её содержимое, я правильно понял?

Igor_I
29-12-2008, 18:37
Получается так :)

ManHack
02-01-2009, 12:06
А вот теперь у меня есть грамотно офрмленный XML.
И мне надо сделать из него табличку.
Но не просто табличку, а чтобы она была разделена на страницы (содержимое каждой страницы в XML-файле обрамлено тэгом <FOLDER> </FOLDER> ). XML-файл будет расширяться со временем.
Очень неплохо бы включить возможность сортировки содержимого на конкретной странице (по дате, по алфавиту), но не обязательно.
И ещё я хочу посмотреть как выглядить скрипт, который разбивает на страницы не по тэгу <FOLDER>, а отсчитав стандартное кол-во элементов для страницы (например, 20).

Coutty
02-01-2009, 17:01
Если вы хотите работать с XML, то стоит взяться за изучение XSLT. Там есть инструкции для простой выборки (гораздо проще, чем на php), ветвления, циклы, счётчики, сортировки и много всего ещё. Сам я предметом владею не очень (в части счётчиков, например).

XML:

<?xml version="1.0" encoding="windows-1251"?>
<site>
<title>Кошачья мастерская</title>

<folder>
<cat>
<name>Барсик</name>
<age>85</age>
</cat>
<cat>
<name>Тузик</name>
<age>7</age>
</cat>
</folder>
</site>


и такой XSL-файл:

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
method="xml"
encoding="UTF-8"
indent="yes"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
<xsl:template match="site">
<html>
<head>
<title><xsl:value-of select="title" /></title>
</head>
<body>
<table>
<tr><td>Имя кота</td><td>Возраст</td></tr>
<xsl:for-each select="folder/cat">
<tr><td><xsl:value-of select="name" /></td><td><xsl:value-of select="age" /> лет</td></tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

На первый взгляд смотрится внушительно, но на самом деле ничего сложного.

А php-код совсем маленький будет:

<?php
$xslDoc = new DOMDocument("1.0", "windows-1251");
$xslDoc->load("doc.xsl");

$xmlDoc = new DOMDocument("1.0", "windows-1251");
$xmlDoc->loadXML('doc.xml');

$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc);
?>

На выходе будет XHTML с табличкой Имя-возраст.




© OSzone.net 2001-2012