лесоинженер

etxt.ru
Бесплатный курс по основам HTML

Библиотека скриптов PHP

Калькулятор

 Наш калькулятор будет уметь складывать, вычитать, умножать, делить, определять факториал числа и среднее арифметическое двух чисел. И обработка и форма находятся в одном файле index.php:

 <?php    
    if (isset($_POST["calc"]))
    {
        require_once "lib/function.php";
        $n_1 = $_POST["n_1"];
        $n_2 = $_POST["n_2"];
        $operation = $_POST["operation"];
        switch ($operation)
        {
            case "add":
                $result = "$n_1 + $n_2 = " . add($n_1, $n_2);
                break;
            case "mult":
                $result = "$n_1 * $n_2 = " . mult($n_1, $n_2);
                break;
            case "sub":
                $result = "$n_1 - $n_2 = " . sub($n_1, $n_2);
                break;
            case "div":
            {
                $result = div($n_1, $n_2);
                if ($result === false) $result = "Деление на ноль!";
                else 
                $result = "$n_1 / $n_2 = $result";
                break;
            }
            case "fact":
            {
                $result = factorial($n_1);
                if ($result === false) $result = "Факториала не существуюет!";
                else 
                $result = "$n_1! = $result";
                break;
            }
            case "meam":
                $result = "($n_1 + $n_2) / 2 = " . meam($n_1, $n_2);
                break;
            default:
                $result = "Неизвестная операция";
        }        
    }
?>
<!DOCTYPE html>
<html>
<head>
    <title>Калькулятор</title>
</head>
<body>
    <?php
        if (isset($result)) echo "<p>Вычисление: $result</p>";
    ?>
    <form name="myform" action="index.php?" method="POSt">
        <p>
            <input type="text" name="n_1" value="<?php echo $n_1;?>" />
            <select name="operation">
                <?php
                    $operations = array("add" => "+", "sub" => "-", "mult" => "*", "div" => "/", "fact" => "!", "meam" => "<>");
                    foreach ($operations as $key => $value)
                    {
                        if ($operation == $key)
                            echo "<option value='$key' selected='selected'>$value</option>";
                        else echo "<option value='$key'>$value</option>";
                    }
                ?>
            </select>
            <input type="text" name="n_2" value="<?php echo $n_2;?>" />
            <br />
            <input type="submit" name="calc" value="Вычислить" />
        </p>
    </form>
    <form>
        
    </form>
</body>
</html>

 

 Создадим библиотеку функций в файле function.php:

<?php
    function add($x, $y)
    {
        return ($x + $y);
    }
    function sub($x, $y)
    {
        return ($x - $y);
    }
    function mult($x, $y)
    {
        return ($x * $y);
    }
    function div($x, $y)
    {
        if ($y == 0)
        {
            return false;
        }
        return ($x / $y);
    }
    function factorial($x)
    {
        if ($x < 0) return false;
        if ($x == 0) return 1;
        $f = 1;
        for ($i = 1; $i <= $x; $i++)
        {
            $f *= $i;
        }
        return $f;
    }
    function meam ($x, $y)
    {
        return (add ($x, $y) / 2);
    }

?>

обработчик php

форма htmlбиблиотека функций 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Сессии

Задача: 1. Сделайте форму авторизации с полями "Логин",  "Пароль". 2. Если был введен логин "Admin" и пароль "mypass", то вывести сообщение "Здравствуйте, Admin!", иначе вывести сообщение о неверности логина и/или пароля. 3. При каждом обновлении страницы, если пользователь уже прошел авторизацию, должно выводиться приветствие, а если не прошел авторизацию (или уже вышел), то вывести форму авторизации. 4. Сделайте ссылку "Выход", при переходе на которую, пользователь для входа должен будет снова ввести логин и пароль. Обязательно поставьте редирект с этой страницы обратно (именно обратно, а не главную страницу, т.е. с использованием HTTP_REFERER).

Выполнение: Авторизованный пользователь попадет на страницу admin.php. Пользователь, не прошедший правильно авторизацию, попадет на страницу index.php. Страница для авторизации enter.php. На странице admin.php проверим есть ли нужная метка в сессии, т.е. есть ли определенная переменная сессии (также можно проверять равно ли значение сессионной переменной определенному значению). Если такой метки нет, значит пользователь, заходящий на эту страницу, не авторизован, а значит выполним его редирект на страницу index.php с сообщением о неудачной авторизации и с ссылкой на страницу авторизации enter.php с формой с именем и паролем. 

Прежде всего начали сессию, это необходимо при работе с сессиями. Создаем простое условие, которое можно прочитать так: «если в массиве $_SESSION не существует элемента Аdmin — будем выполнять блок действий, заключенный в операторные скобки». А в блоке кода при помощи функции header() производится редирект пользователя на страницу enter.php (это страница авторизации). После функции header() завершается выполнение скрипта при помощи функции exit(). Если же условие не выполнится, т.е., в массиве $_SESSION будет элемент Аdmin — значит, пользователь уже успешно авторизован, и надо пропустить блок действия в операторных скобках, т.е., никакого редиректа происходить не будет, и открывается запрошенная страница.

enter.php:

<?php
    session_start ();
    if ($_SESSION['admin'])
    {
        header ("Location: admin.php");
        exit;
    }
    $admin = 'Admin';
    $pass = 'mypass';
    if ($_POST['submit'])
    {
        if ($admin == $_POST['user'] && $pass == $_POST['pass'])
        {
            $_SESSION['admin'] = $admin;
            header ("Location: admin.php");
            exit;
        }
        else
        {
            header ("Location: index.php");
            exit;
        }
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Сессии</title>
    </head>
    <body>
        <form action="" method="post">
            <p>
                Логин: <input type="text" name="user">
                Пароль: <input type="text" name="pass">                 
            </p>        
            <p>
            <input type="submit" name="submit">
            </p>
        </form>                  
    </body>
</html>

admin.php:

<?php  
        session_start ();        
        if ($_GET['k'] == 'ex')
        {
            unset ($_SESSION['admin']);
            session_destroy ();
        }    
        if (!$_SESSION['admin'])
        {
            header ("Location: enter.php");
            exit;
        }
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Сессии</title>
    </head>
    <body>
        <p>Здравствуйте, Admin!</p>
        <a href="admin.php?k=ex">Выход</a>
    </body>
</html>

 

index.php:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Сессии</title>
    </head>
    <body>
        <p>Неверен логин и/или пароль</p>
        <p>
           <a href="enter.php">Авторизация</a>                
        </p>             
    </body>
</html>

 

 

 

 

3. Регулярное выражение для замены в тексте e-mail

В тексте (комментарий, сообщение в гостевой книге) требуется найти  e-mail и заменить его текстом. Вот решение этой проблемы в таком тексте $text = "Всем привет! mysite@site.ru пишите мне на почту mysite@site.ru

регулярное выражение для почты<?php
    $text = "Всем привет! mysite@site.ru пишите мне на почту mysite@site.ru ";
     function replaceEmail ($text)
     {
         $reg = "/[a-z0-9][a-z0-9\._-]*[a-z0-9]*@([a-z0-9]+([a-z0-9]*[a-z0-9]+)*\.)+[a-z]+/i";
         return preg_replace ($reg, "<b>тут был e-mail</b>", $text);
     }
     echo replaceEmail ($text);
?>

 

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