нужно возобновлять вести блог.срочно.каждый день
общие цели:не достигнуто ни одной.ни загранпаспорта ни оформления ЧП.пиздец.
хоть завтра бери да делай.
по питанию.питаюсь ПЛОХО
с утра ел гренки и мясо.много.фу.теперь плохо и тошнит.
нужно садится на диету.и меньше есть.НЕ ЕСТЬ НА НОЧ.
ЭТО ЖИЗНЕНО ВАЖНО!!!!
обливания:ну тут все впорядке слава богу.
покер:тут тоже все вроде ок.идет потихонечку.
обучение и развитие:тут все ок.хожу на 2 курсах.еще на 3и пойду.
еще делаю проект и даже смотрю второй и третий еще есть.
по тренировкам.ЗАБРОСИЛ,НУЖНО ВОЗОБНОВЛЯТЬ.мое состояние щас вялое и нефизкультурное
а как было хорошо когда я ходил подкачанный и похудевший.и это было совсем недавно.еще 3 или 4 недели назад.можно все возобновить прям сегодня и тогда через месяц будет все в ажуре.
СЕРТИФИКАТ:пока говорить рано.но иду туда.
заграница.ну пока ничего.
2 осн цели.к одной пока иду по поводу второй ничео не делаю.
ТАК:ПЕРВО НАПЕРВО:БРОСИТЬ ЖРАТЬ.СДЕЛАТЬ ПАСПОРТ И ПОХОБОТИТСЯ ПО ПОВОДУ ЧП.и учится учиться учиться!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Хочу начать добиваться целей и прогрессировать.Для этого буду вести дневники.Блог о борьбе с самим собой и вредными привычками.
что то ищешь тут паря?
понедельник, 11 марта 2013 г.
суббота, 2 марта 2013 г.
ООП идем дальше:
в пхп в ооп есть конструкция final
она запрещает наследование: если ее поставить перед классом то этот класс нельзя будет наследовать.если перед методом то его нельзя будет переопределить
она запрещает наследование: если ее поставить перед классом то этот класс нельзя будет наследовать.если перед методом то его нельзя будет переопределить
Начал проходить ООП.
class String {
public $str = 'Hello';
function getString()
{
return $this->str;
}
function setString($str)
{
$this->str = $str;
}
}
это обычный класс.
interface AnimalInterface {
public function walk();
}
интерфейс указывает структуру последователя(или же фраза:указывает родительской структуру)
тость в последователе нужно определить вышепреведенные методы.если же не определишь то выведет тебе фатал ерор
по поводу использования то пишут что используется очень редко.на практике хз где применить.хотя может все не так грусно.
чтоб наследовать его нужно написать:
implements
class Animal implements AnimalInterface{
// public, private, protected
public $color = '';
protected $head = 1;
public function __construct($color = 'brown')
{
$this->color = $color;
// echo 'Object is created!';
}
public function walk()
{
echo 'walk ' . $this->head;
}
public function __isset($name)
{
echo $name;
return FALSE;
}
public function __toString()
{
return 'Object';
}
public function __destruct()
{
// echo 'Object is destroyed!';
}
public function __get($name)
{
echo $name . 'rrrrrr';
}
public function __call($name, $args)
{
var_dump($args);
echo $name;
}
}
ТЕПЕРЬ. МЫ ВЫШЕ УКАЗАЛИ МЕТОДЫ _destruct(_construct) _get _set _isset
мы по ним пройдемся чуть позже.а счас абстрактный класс:
абстрактный класс это смесь обычного класса и инетрфейса там может быть и реализация метода и указание структуры
например:
abstract class Cat {
abstract function myau();
function run(){
echo 'run';
}
}
Теперь:статические методы и переменные вк которым можно обращаться без создания обьекта
тоесть можно присвоить какой то переменной результат выполнения статической функции без создания обьекта new
$car = Car::getInstance();
вот тут мы получили результат выполнения статического метода
вот что пишут про это на пхп.нет
Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса. Атрибут класса, объявленный статическим, не можеть быть доступен посредством экземпляра класса (но статический метод может быть вызван).
class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
class Bar extends Foo
{
public function fooStatic() {
return parent::$my_static;
}
}
Кстати:
Так как статические методы вызываются без создания экземпляра класса, то псевдо-переменная $this не доступна внутри метода, объявленного статическим.
Доступ к статическим свойствам класса не может быть получен через оператор ->.
с учителем мы разбирали такой пример:
class Car {
public $color = 'yellow';
static $instance = null;
static function getInstance(){
if (empty(self::$instance))
{
echo 'We\'re here';
self::$instance = new self;
}
return self::$instance;
}
private function __construct(){}
private function __clone(){}
}
$car = Car::getInstance(); // грубо говоря мы этим только что сделали новый обьект
$car1 = clone $car; //а сдесь мы вроде захотели клонировать обьект НО НЕ СМОГЛИ .мы закрыли такую функцию private function __clone(){}
вот у нас и красный цвет уже есть у машины
$car = Car::getInstance();
$car->color = 'red';
Теперь интересное свойство записи static
function test()
{
static $a = 0;
echo $a;
$a++;
}
если б возле a у нас не было статик то у нас бы выводился 0 а инкремент быне проводился потому как а была бы локальная переменная.
а так она теперь у нас статик и инкремент будет производиться
class Person {
public $hair = 'black';
}
$obj1 = new Person;
$obj1->hair = 'brown';
$obj2 = clone $obj1;
echo $obj2->hair;
кстати.что взять для парсера целую хтмл страницу нужно
echo file_get_contents('http://www.ssa.gov/oact/babynames/decades/names2000s.html');
если же не сработает тогда нужно библиотекой курл дслать.на этом на сегодня все.
public $str = 'Hello';
function getString()
{
return $this->str;
}
function setString($str)
{
$this->str = $str;
}
}
это обычный класс.
interface AnimalInterface {
public function walk();
}
интерфейс указывает структуру последователя(или же фраза:указывает родительской структуру)
тость в последователе нужно определить вышепреведенные методы.если же не определишь то выведет тебе фатал ерор
по поводу использования то пишут что используется очень редко.на практике хз где применить.хотя может все не так грусно.
чтоб наследовать его нужно написать:
implements
class Animal implements AnimalInterface{
// public, private, protected
public $color = '';
protected $head = 1;
public function __construct($color = 'brown')
{
$this->color = $color;
// echo 'Object is created!';
}
public function walk()
{
echo 'walk ' . $this->head;
}
public function __isset($name)
{
echo $name;
return FALSE;
}
public function __toString()
{
return 'Object';
}
public function __destruct()
{
// echo 'Object is destroyed!';
}
public function __get($name)
{
echo $name . 'rrrrrr';
}
public function __call($name, $args)
{
var_dump($args);
echo $name;
}
}
ТЕПЕРЬ. МЫ ВЫШЕ УКАЗАЛИ МЕТОДЫ _destruct(_construct) _get _set _isset
мы по ним пройдемся чуть позже.а счас абстрактный класс:
абстрактный класс это смесь обычного класса и инетрфейса там может быть и реализация метода и указание структуры
например:
abstract class Cat {
abstract function myau();
function run(){
echo 'run';
}
}
Теперь:статические методы и переменные вк которым можно обращаться без создания обьекта
тоесть можно присвоить какой то переменной результат выполнения статической функции без создания обьекта new
$car = Car::getInstance();
вот тут мы получили результат выполнения статического метода
вот что пишут про это на пхп.нет
Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса. Атрибут класса, объявленный статическим, не можеть быть доступен посредством экземпляра класса (но статический метод может быть вызван).
class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
class Bar extends Foo
{
public function fooStatic() {
return parent::$my_static;
}
}
Кстати:
Так как статические методы вызываются без создания экземпляра класса, то псевдо-переменная $this не доступна внутри метода, объявленного статическим.
Доступ к статическим свойствам класса не может быть получен через оператор ->.
с учителем мы разбирали такой пример:
class Car {
public $color = 'yellow';
static $instance = null;
static function getInstance(){
if (empty(self::$instance))
{
echo 'We\'re here';
self::$instance = new self;
}
return self::$instance;
}
private function __construct(){}
private function __clone(){}
}
$car = Car::getInstance(); // грубо говоря мы этим только что сделали новый обьект
$car1 = clone $car; //а сдесь мы вроде захотели клонировать обьект НО НЕ СМОГЛИ .мы закрыли такую функцию private function __clone(){}
вот у нас и красный цвет уже есть у машины
$car = Car::getInstance();
$car->color = 'red';
Теперь интересное свойство записи static
function test()
{
static $a = 0;
echo $a;
$a++;
}
если б возле a у нас не было статик то у нас бы выводился 0 а инкремент быне проводился потому как а была бы локальная переменная.
а так она теперь у нас статик и инкремент будет производиться
class Person {
public $hair = 'black';
}
$obj1 = new Person;
$obj1->hair = 'brown';
$obj2 = clone $obj1;
echo $obj2->hair;
кстати.что взять для парсера целую хтмл страницу нужно
echo file_get_contents('http://www.ssa.gov/oact/babynames/decades/names2000s.html');
если же не сработает тогда нужно библиотекой курл дслать.на этом на сегодня все.
Результаты уроков по пхп.сначала от одного учителя
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()
Так.это прошли теперь ООП пойдет.в след статье!
Подписаться на:
Сообщения (Atom)