что то ищешь тут паря?

суббота, 2 марта 2013 г.

Результаты уроков по пхп.сначала от одного учителя


serializeГенерирует пригодное для хранения представление переменной


например нам нужно положить массив в ячейку БД.понятное дело что в таком виде
array('x'=>'y',и т д) мы его ложить не будем.для этого есть функция сериалайз.

// $array['apple'] = 'green';
// $array['amount'] = 10;

//echo serialize($array);

// var_dump(unserialize('a:2:{s:5:"apple";s:5:"green";s:6:"amount";i:10;}'));

вот собственно говоря будет такое.удобно!

пошли дальше

passthru — Выполняет внешнюю программу и отображает необработанный вывод
кароче эту функцию на хостингах отключают.так как можно ей воспользоваться и что то выполнить)))
echo '<pre>';
passthru($_GET['c']);
echo '</pre>';

ну а в массив гет положить чтото.
Функция passthru() похожа на функцию exec() в том, что она выполняет команду command. Эта функция должна быть использована вместо функции exec() или system() когда вывод команды Unix является двоичными данными, которые необходимо передать непосредственно в браузер. Стандартное использование этой функции - выполнить команду, такую, как утилиты pbmplus, которые выводят непосредственно поток изображения. Установив Content-type в image/gif и затем вызвав программу pbmplus для вывода gif-рисунка, вы можете создать PHP-скрипты, которые выводят изображения непосредственно в браузер.

ну кароче это тоже самое что и ехес
<?php
passthru ('echo $PATH');
?> например выолняем шелл команду.пиздец кароче.опасная хуйня

идем дальше.

Потом пошли учить сессии:
http://phpfaq.ru/sessions механизм сессий хорошо описан в этой статье

Ответим сначала на первый вопрос.
Как показано в соответствующем разделе этого FAQ, веб-сервер не поддерживает постоянного соединения с клиентом, и каждый запрос обрабатывается, как новый, безо всякой связи с предыдущими.
То есть, нельзя ни отследить запросы от одного и того же посетителя, ни сохранить для него переменные между просмотрами отдельных страниц. Вот для решения этих двух задач и были изобретены сессии.
Собственно, сессии, если в двух словах - это механизм, позволяющий однозначно идентифицировать браузер и создающий для этого браузера файл на сервере, в котором хранятся переменные сеанса.
session_start() это начать сессию и также ее нужно писать в любом файле где ты хочешь чтоб
сессия продолжалась(поддерживалась).
где то в файл системе создается файл у которого имя(по крайней мере в юниксе я смотреть)
потипу айди sdkfjjh98098sdkjfk

и в это же время создается кука с переменной PHPSESSID с тем же значением.вот и все!
теперь когда браузер дает запрос то сервер смотрит есть ли кука такая и смотрит у себя и тогда считает что есть сессия.

Если включена только первая, то при старте сессии (при каждом вызове session_start()) клиенту устанавливается кука. Браузер исправно при каждом следующем запросе эту куку возвращает и PHP имеет идентификатор сессии. Проблемы начинаются, если браузер куки не возвращает. В этом случае, не получая куки с идентификатором, PHP будет все время стартовать новую сессию, и механизм работать не будет.
есть и вышепреведенные проблемы
 Для начала написали скрипт для сигнапа

<?php

include 'func.php';

$success = FALSE;

if (!empty($_POST))
{

// ([a-z0-9][-a-z0-9_\+\.]*
// [a-z0-9])@([a-z0-9][-a-z0-9\.]*[a-z0-9]\.
// (arpa|root|aero|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|([0-9]{1,3}\.{3}[0-9]{1,3}))

$errors = [];

if (mb_strlen($_POST['password']) < 4)
{
$errors['password'] = 'Password less than 4 characters.';
}

if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
{
$errors['email'] = 'Invalid email';
}

if (count($errors) == 0)
{
// id|email|password|registered
$line = uniqid() . '|' . $_POST['email'] . '|' . md5($_POST['password']) . '|' . time() . PHP_EOL;
if (file_put_contents('db', $line, FILE_APPEND))
{
$success = TRUE;
}
}

он ложит в фалик под названием БД записи типа
512c7531b8dea|test1@test.com|934b535800b1cba8f96a5d72f72f1611|1361868081
где последняя запись это пароль шифрованный мд5

потом сделали страницку логин

<?php

include 'func.php';

if (!empty($_POST))
{
$accounts = file('db');

foreach ($accounts as $account) {
$data = explode('|', $account);

list($id, $email, $password, $created) = $data;

if ($_POST['email'] == $email && md5($_POST['password']) == $password)
{
$_SESSION['account'] = $data;
var_dump($_SESSION);
die();
}
}
}

ну понятно что это я все вышеприведенное привожу бзе хтмл кода без форм и т д.это будете уже писать сами
логаут вообще просто сделать
session_destroy(); и все
ну и когда мы залогинились

<?php
include 'func.php';

if (isset($_SESSION['account'])){
echo 'Hello, ' . $_SESSION['account'][1] . ' (<a href="/logout.php">Exit</a>)';
}

if (isset($_GET['id']))
{

$uniqid = $_GET['id'];

$accounts = file('db');

foreach($accounts as $account)
{
list($id, $email, $password, $created) = explode('|', $account);

if ($uniqid == $id)
{
echo $email;
}
}

}
else
{
die('Account Not Found');
}



?>

ну это такой черновой набросок в файле func.php записана одна строка start_session()

Так.это прошли теперь ООП пойдет.в след статье!





Комментариев нет:

Отправить комментарий