лесоинженер

etxt.ru
Создание и продвижение лендинга для начинающих

 

Упражнения по PHP

 1. Массивы скрипт

упражнение с массивами
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2. Дата

Русаков_РНР


Русаков_html

       
                    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. файлы

работа с файлами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. ini

ини-файл

 

 

 

 

 

 

 

 

 

 

 

ini-файл - config.ini

background=blue
font-size=200px

5. Создание и удаление директорий и файлов

Условие задачи: 1. Сделайте форму с полями "Логин" и "Пароль". 2. Обработайте форму и создайте папку с именем логина, если такой папки еще нет. А если есть, то вывести сообщение об ошибке. 3. Внутри созданной папки создать подпапки "video", "music", "photo". 4. Создайте отдельную страницу "delete.php. 5. Если перейти на указанную страницу с GET-параметром login, то удалить ту папку, название которой совпадает с переданным значением в login. Например, при переходе по ссылке http://адрес_сайта/delete.php?login=vovan, надо удалить всю папку "vovan" со всем содержимым.

Решение: Файл index.php

форма<?php 

if (isset ($_POST['log']) && isset ($_POST['pas']))
    {
        $log = $_POST['log'];
        if (file_exists ($log))
            echo "Ошибка! Логин $log уже существует.";
        else
        {
            mkdir ("$log");
            chdir ("$log");
            mkdir ("video");
            mkdir ("music");
            mkdir ("photo");
        }
    }
?>
<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title >Каталоги</title >
    </head>
    <body>
        <form method="post">
            Логин:  <input type="text" name="log">
            Пароль: 
            <input type="password" name="pas">
            <input type="submit" >
        </form>
        <br />
        <br />
        <form  action="delete.php" method="get">
            Логин: <input type="text" name="login">
            <input type="submit" value="Удалить мои файлы">
        </form>
    </body>
</html>

Обработчик delete.php

удаление папки и файлов<?php
function delet ($d)
    {
        $l = glob ($d . "/*");
        for ($i =0; $i < count ($l); $i++)
        {
            if (is_dir ($l[$i]))
                delet ($l[$i]);
            else
                unlink ($l[$i]);
        }
        if (is_dir ($d))
            rmdir ($d);
        else
            echo 'Файлов нет';
    } 
    if (isset ($_GET['login']))
        delet ($_GET['login']);  ?>

6. Определение цвета точки (пикселя) изображения

Задача: Создать форму с полями Х и У. Узнать цвет пикселя c координатами Х и У и вывести в формате (R, G, B).

Решение:

Цвет пикселя

<?php
    $x = $_POST['x'];
    $y = $_POST['y'];

    $im = imageCreateFromJpeg ("image.jpg");
    $color = imagecolorat ($im, $x, $y);
    $r = ($color >> 16) & 0xFF;
    $g= ($color >> 8) & 0xFF;
    $b = ($color) & 0xFF;
    echo "Цвет точки x = $x, y = $y: (R = $r, G = $g, B = $b)";
?>

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>Цвет изображения</title>
    </head>
    <body>
        <form method="post">
            <input  type="text" name="x">
            <input  type="text" name="y">
            <input  type="submit">
        </form>
    </body>
</html>

7. Изображения

Нарисовать человечка. Без фанатизма.

<?php
    $im = imagecreatetruecolor(800, 800);
    $c = imagecolorallocate($im, 120, 220, 150);
    imageArc ($im, 400, 100, 150, 170, 0, 360, $c);
    imageArc ($im, 400, 370, 250, 370, 0, 360, $c);
    imageLine ($im, 300, 262, 150, 200, $c); //левая рука
    imageLine ($im, 500, 262, 650, 200, $c); //правая рука
    imageLine ($im, 320, 512, 300, 750, $c); //левая нога
    imageLine ($im, 480, 512, 500, 750, $c); //правая нога
    imagearc ($im, 400, 150, 30, 15, 0, 180, $c); //рот
    imageFilledRectangle ($im, 330, 250, 400, 350, $c);//карман
    imageRectangle ($im, 390, 90, 410, 130, $c);//нос
        //снегопад
    for ($i = 0; $i < 1000; $i++)
    {
        $x = mt_rand (0, imageSX ($im));
        $y = mt_rand (0, imageSY ($im));
        imageSetPixel ($im, $x, $y, $c);
    }
         
    header("Content-type: image/png");
    imagepng($im);
    imagedestroy($im);
?>

Задача: Создать текстовое поле. Нарисовать текст, который был введен в созданное поле. Сохранить получившееся изображение в отдельный файл и вывести его на странице с формой.

Решение: файл index.php

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>Изображения</title>
    </head>
    <body>
        <form action="iso.php" method="post">
            <input  type="text" name="x">
            <input  type="submit">
        </form>
        <br />
        <img src="iso.png" alt="iso">
    </body>
</html>

Файл iso.php

<?php
    $x = $_POST['x'];
    $im = imageCreateTrueColor (190, 50);
    $c = imageColorAllocate ($im, 255, 255, 255);
    //$x = iconv ("CP1251", "UTF-8", $x);
    imageTtfText ($im, 20, 0, 10, 30, $c, "verdana.ttf", $x);
    header ("Content-type: image/png");
    imagePng ($im, "iso.png");
    imageDestroy ($im);
?>

8. Регулярные выражения

Задача: 1. Создать текстовое поле и ввести дату в формате ММ.ДД.ГГГГ, создать регулярное выражение, которое будет проверять эту дату на корректность. 2. Вывести соответствующее сообщение.

Решение:

Регулярные выражения<?php
    $reg = '{^\s*( (\d\d) \s* [[:punct:]] \s*(\d\d)\s* [[:punct:]] \s*(\d\d\d\d))\s*$}xs';
    $dat = $_POST['dat'];
    $match =  preg_match ($reg, "$dat", $pockets);
    $m = $pockets[2];
    $d = $pockets[3];
    $y = $pockets[4];
    $check = (checkdate ($m, $d, $y));
    if (empty  ($_POST['dat']))
        echo 'Введите дату в формате ММ.ДД.ГГГГ в форму.';
     elseif ($match == 0)
        echo 'Введите корректную дату.';
     elseif ($check == 0)
        echo 'Введите правильную дату.';
    else
        echo "Введена корректная дата: $m.$d.$y";
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Регулярное выражение</title>
    </head>
    <body>
        <form method="post">
            <p>
                Ввести дату в формате ММ.ДД.ГГГГ:
            </p>
            <input type="text" name="dat">
            <input type="submit">
        </form>
    </body>
</html>

Задание: Создать текстовое поле с e-mail и создать регулярное выражение, чтобы проверять e-mail на корректность. Выводить соответствующее сообщение на страницу.

Решение: 

регулярное выражение почта<?php
    $reg = "/^\w+([-_\.])*\w+?@\w+([-_.])*\w+\.\w{2,4}$/";
    $dat = $_POST['dat'];
    echo $dat;
    $match =  preg_match ($reg, "$dat");
    if (empty  ($_POST['dat']))
    {
        echo 'Введите e-mail в форму.';
    }
     elseif ($match == 0)
     {
        echo "Введен неправильный e-mail: $dat";
    }
    else
    {
        echo "Введен корректный e-mail: $dat";
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Регулярное выражение</title>
    </head>
    <body>
        <form method="post">
            <p>
                Ввести e-mail:
            </p>
            <input type="text" name="dat">
            <input type="submit">
        </form>
    </body>
</html> 

Новое задание:

1. Создайте текстовую область. Обработайте форму и замените все найденные адреса сайтов в тексте на "ссылка удалена". 2. Все найденные адреса сохраните в массив. И выведите получившийся текст и массив с адресами сайтов.

Решение:

регулярное выражения для сайта

<?php
     function replaceSite ($text)
     { 
        $text = $_POST['text'];
        $reg = "/(http:\/\/|https:\/\/)([a-z]+[-_\.]*[a-z]*.[(ru)(com)(info)(рф)])|([a-z]+[-_\.]*[a-z]*.[(ru)(com)(info)(рф)]\/*[a-z]*.[a-z]*.[a-z]*.\w*)/i";
         return preg_replace ($reg, "<ссылка_удалена>", $text);
     }
     echo replaceSite ($text);
     echo "<br />";    
     
     $text = $_POST['text'];
     $reg = "/(http:\/\/|https:\/\/)([a-z]+[-_\.]*[a-z]*.[(ru)(com)(info)(рф)])|([a-z]+[-_\.]*[a-z]*.[(ru)(com)(info)(рф)]\/*[a-z]*.[a-z]*.[a-z]*.\w*)/i";
     preg_match_all ($reg, $text, $matches);
    print_r ($matches);
    echo "<br />";    
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Регулярное выражение</title>
    </head>
    <body>
        <form method="post">
            <p>
                Ввести комментарий:
            </p>
            <p><textarea rows="10" cols="45" name="text"></textarea></p>
            <input type="submit">
        </form>
    </body>
</html>

9. Редирект

Задача: 1. Создайте 2 текстовых поля с метками "Число 1" и "Число 2". 2. На отдельной странице сделайте обработку этой формы, вычислив сумму двух чисел. 3. Затем сделайте редирект обратно на страницу с формой и там выведите эту сумму. 

Решение: файл dex.php

Редирект<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Редирект</title>
    </head>
    <body>
        <form action="scrip.php" method="post">
            <p>
                Ввести число 1: <input type="text" name="int1">
                Ввести число 2: <input type="text" name="int2">
                Сумма двух чисел:
                <?php
                    echo $_GET[x];
                ?>  
            </p>
            <br>
            <p>
            <input type="submit">
            </p>
        </form>                  
    </body>
</html>

Файл scrip.php.

Редирект php<?php  
        $int1 = $_POST['int1'];
        $int2 = $_POST['int2'];
        $x = ($int1 + $int2);
        header ("Location: dex.php?x=$x");
?>

 

10. Почта

Задание: Создать форму: Логин, Пароль, E-mail.Отправить форму, получить данные и на указанный E-mail отправить письмо с логином и паролем.

Решение:

Почта, отправка e-mail

<?php
    $log = $_POST['log'];
    $pas = $_POST['pas'];
    $to = $_POST['mail'];
    $from = "myrusakov@gmail.com";
    $subject = "Логин и Пароль";
    $subject = "=?utf-8?B?" . base64_encode ($subject) ."?=";
    $headers = "From: $from\r\nReply-to: $from\r\nContent-type: text/plain; charset=utf-8\r\n";
    $message = "Логин: $log.\n\n Пароль: $pas. ";
    mail ($to, $subject, $message, $headers);
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Mail</title>
    </head>
    <body>
        <form action="" method="post">
            <p>
                Логин: <input type="text" name="log">
                Пароль: <input type="password" name="pas">
                E-mail: <input type="email" name="mail">
            </p>
            <br>
            <p>
            <input type="submit">
            </p>
        </form>                    
    </body>
</html>

11. Куки

Задание: Создать на странице 3 ссылки: "Крупный шрифт", "Средний шрифт", "Маленький шрифт". В зависимости от того, по какой ссылке пойдет пользователь, установить размер шрифта, он должен сохраняться и при переходе на другие страницы сайта. 

Решение: файл s.php

<?phpКуки    $size = $_GET["size"];
    setcookie ("size", "$size");
    $size = (isset ($_COOKIE["size"])) ? $_COOKIE["size"] : $_GET["size"];
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Style</title>
        <style type="text/css">
        body {
                font-size: <?="$size"?>%;
        }
        </style> 
    </head>
    <body>
        <a href="s.php?size=200">Крупный шрифт</a>
        <br>
        <a href="s.php?size=100">Средний шрифт</a>
        <br>
        <a href="s.php?size=50">Мелкий шрифт</a>
        <p >
          Lorem ipsum dolor sit amet, consectetur adipisicing elit.
        </p>
    </body>
</html>

 

 

Создать бесплатный сайт с uCoz