Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Большая просьба! или опять задачи  
:(
    Опции темы
georgiy11
Дата 19.10.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Ребята.Большая просьба придумать задачи для практики по "среднему уровню".В принципе я уже довольно знаком с PHP программированием, и никак не могу понять в чем суть работы программиста "наощупь".Есль есть у Вас какие нибудь варианты напишите пожалуйста.
Спасибо!!!
Здесь же и решать их и в "плоскости" безопасности решений.

Это сообщение отредактировал(а) georgiy11 - 19.10.2008, 13:16
PM MAIL   Вверх
Serkys
Дата 19.10.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Напиши каталог товаров.
  • Админка с добавлением/редактированием/удалением товаров
  • Каждый товар содержит кратное описание, подробное описание, фото (необязательно), артикул (необязательно), категорию (любой вложенности)
  • Просмотр товаров по категориям
  • Детальный просмотр товара

PM MAIL   Вверх
georgiy11
Дата 19.10.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Спаааааааасииииииииииибооооооооооооооооо!!! smile 
При этом нужно обеспечить безопасность "каталогизатора"???

Это сообщение отредактировал(а) georgiy11 - 19.10.2008, 14:29
PM MAIL   Вверх
Serkys
Дата 19.10.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Разумеется. Все входные данные проверяются, даже в админке.
Несколько групп пользователей: админы, контент-менеджеры, гости. У всех соответствующие им права.

Добавлено через 44 секунды
В админке ещё сделай управление пользователями. Логин/пароль/права доступа (админ, контент-менеджер).
PM MAIL   Вверх
georgiy11
Дата 19.10.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Категория (любой вложенности) - это типа классификация, разделение на классы я так понял?
Артикул - а это что за "зверь". 
Да а авторизация средствами сервера или самому реализовывать и как с помощью сеансов или куки.

Это сообщение отредактировал(а) georgiy11 - 19.10.2008, 19:34
PM MAIL   Вверх
Serkys
Дата 19.10.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Авторизация - с помощью сессий.
Категории, пример:
  • Техника
    • Плейеры
    • Компьютеры
    • Игровые приставки
    • Прочее
  • Древесина
    • Берёза
    • Осина
    • Дуб
Артикул - нечто вроде ID. К примеру, для быстрого поиска товара. Использовать вместо него ID товара в MySQL ты не можешь потому, что артикул должен вводиться вручную. Поле в БД для него должно быть уникальным индексом.

Добавлено через 6 минут и 13 секунд
Срок на выполнение - 3 дня. Не успеешь всё - показывай, что сделал. Устроит меня результат - буду помогать. Не устроит - не буду. Всё просто.

Это сообщение отредактировал(а) Serkys - 19.10.2008, 20:47
PM MAIL   Вверх
georgiy11
  Дата 19.10.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Мамааааааааааа   smile  я ж ведь и работаю на заводе и семья smile , а знаток из меня ещё не сильный давай неделю.Хотя всё равно постараюсь и за 2 - а дня думаю смогу smile !!!
А вообще спасибо тебе Б О Л Ь Ш О Е  smile 
В принципе я не догадывался что это за "зверь", но место в таблице уже ему выделил отдельное сразу.
Просто я хочу по ходу дела вникнуть и в безопасность при построении скриптов самому, что естественно больше усваивается, особенно когда Вы показываете различие в ошибках после "прокола"!

Это сообщение отредактировал(а) georgiy11 - 19.10.2008, 22:14
PM MAIL   Вверх
HackMan
Дата 19.10.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



georgiy11, походу дела никто не мешает пользоваться php.net, google.com ну и в конце концов vingrad.ru  smile 


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
bobik02
Дата 20.10.2008, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14





--------------------
Have a nice day
PM   Вверх
Serkys
Дата 22.10.2008, 09:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



Срок вышел. Доложи о результатах.
PM MAIL   Вверх
georgiy11
Дата 22.10.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Это конечно не всё  smile 
И оооооооооочень много не доработок и всего всего , но только начинаю :

Состоит из :
1 admin -каталог
2 form - каталог(для *.html) 
3 img - кталог ...
    auth.php - скрипт авторизации
    connect.php - Класс подключения к СУБД
    index.php - базовый скрипт
    registration.php - скрипт регистрации новых пользователей

Только пожалуйста я ещё только учусь ....  smile 

connect.php
Код

<?php

/**
 * Библиотека классов с работой СУБД MySQL
**/
            //Пользовательский класс доступа к СУБД
class Users{
    private $name;
    private $password;
    private $pass_db = "LLRzYz7w";
    private $user_db = "admin";
    public static $db;
    
    public function getdata($flag){
        if($flag == 'name')
        {
            return $this->name;    
        }
        else
        {
            return $this->password;
        }
    }
    
    public function __construct($name, $password)
    {
        self::$db = mysql_connect('localhost',$this->user_db,$this->pass_db) or die("Not connect");  //Соединение 
        $query = "catalog";
        mysql_select_db($query,self::$db) or die("Выбор БД ".$query." не произведён"); //Выбор БД    
        $this->name = htmlspecialchars($name);
        $salt = "cpy";
        $this->password = crypt($password,$salt);
    }
    
    public function __destruct()
    {
        mysql_close(self::$db) or die("Невозможно закрыть БД");
    }
    
    
    public function Query($query)
    { 
         $dbResult = mysql_query($query,self::$db) or die("Запрос не выполнен") ; 
         return $dbResult;
    }
}  
?>



index.php
Код

<?php

/**
 * Базовый скрипт 
 * 
**/

if(!isset($_POST["auth_name"])){
     header("Location: http://".$_SERVER['HTTP_HOST']."/catalog/auth.php");
     exit;
}
session_start();
$login = $_SESSION["name"] = htmlspecialchars($_POST["auth_name"]); 

include("./connect.php");    //Загрузка библиотеки классов доступа к СУБД

$obj = new Users($login,$_POST["password"]); //Экземпляр доступа к БД
$query = "SELECT * FROM users";
$result = $obj->Query($query);
$n = $obj->getdata('name');
$p = $obj->getdata(NULL);
 
while($select = mysql_fetch_assoc($result))
{
   if($select["login"] == $n && ($select['status'] == "admin" || $select['status'] == "cont_mng") && isset($_POST['admin']))
    {
        $_SESSION['status'] = $select['status'];
        $obj = null;
        header("Location: http://".$_SERVER['HTTP_HOST']."/catalog/admin/admin.php");
    }    
}


                //Блок включений
require (dirname(__FILE__)."/form/header.html"); //"Шаблоны"
require (dirname(__FILE__)."/form/center.html");


                //Загрузка списка товаров для пользователя ГОСТЬ
$query = "SELECT * FROM tovar";
$result = $obj->Query($query);

while($row = mysql_fetch_array($result))
{
    print($row['shotopis']."<hr>");
}

$obj = null;
require (dirname(__FILE__)."/form/footer.html");
?>


auth.php
Код

<?php
/**
 * Скрипт аутентификации и регистрации
 * 
 */

require (dirname(__FILE__)."/form/header.html"); //"Шаблоны"
require (dirname(__FILE__)."/form/center.html");
?>
<h3 align = "center">Аутентификация</h3>
<p>На этой странице Вы можете зарегистрироваться если пришли первый раз или пройти аутентификацию.Если желаете войти как ГОСТЬ нажмите __Продолжить__.</p>
<div align = "center">
<form action="./index.php" method="post" >
<b>Введите логин:</b><input type="text" name="auth_name"><br><br>
<b>Введите пароль:</b><input type="password" name="password"><br><br>
<input type="submit" value="__Продолжить__"><br><br><br>
<input type="checkbox" name="admin"> Войти как администратор
</form>
<br>
</div>
<a href="<?php $_SERVER['DOCUMENT_ROOT'] ?>/catalog/registration.php">РЕГИСТРИРОВАТЬСЯ</a>
<?php
require (dirname(__FILE__)."/form/footer.html");
?>


registration.php 

Код

<?php

/**
 * Регистрация нового пользователя
 * 
 */


//if(isset($_POST["registr"]))
//{

//}

if(isset($_POST["Login"]))
{
    session_start();
    include("./connect.php");    //Загрузка библиотеки классов доступа к СУБД
    
    require (dirname(__FILE__)."/form/header.html"); //"Шаблоны"
    require (dirname(__FILE__)."/form/center.html");
    
    //Создание пользовательского экземпляра
    $name = htmlspecialchars($_POST['Login']); 
    $_SESSION['autoriz'] = $_POST['Login'];
    $pass = htmlspecialchars($_POST['Password']);
    
    $user = new Users($name,$pass);
    $query = "SELECT * FROM users";
    
    //Запрос на проверку пользователя в БД и вывод соотв. сообщения
    $row = $user->Query($query);
    
    while(FALSE != ($res= mysql_fetch_array($row))){
    if(($row["login"] == $user->getdata('name')) && ($row["pasw"] == $user->getdata(NULL)))
        {
            print("<h1 align = 'center'>Вы уже зарегистрированы</h1>");
            require (dirname(__FILE__)."/form/footer.html");
            $user = NULL;    
            exit;        
        }  
    }   
    
    //Регистрация нового пользователя
    $query = "INSERT INTO users (login,pasw,status)";
    $query .= "VALUES ('{$user->getdata('name')}','{$user->getdata(NULL)}','user')";
    if($user->Query($query))
    {
    print("<h1 align = 'center'>Регистрация прошла успешно можно перейти на главную страницу.</h1><br>
            <a href='./index.php'>На главную</a>");
    
    require (dirname(__FILE__)."/form/footer.html");
    $user = NULL; //Либо unset($user);
    }
    else
    {
        print("Сбой регистрации!!!");
        require (dirname(__FILE__)."/form/footer.html");
        $user = NULL; //Либо unset($user);
    }            
}
else
{
            
    require (dirname(__FILE__)."/form/header.html"); //"Шаблоны"
    require (dirname(__FILE__)."/form/center.html");
    
                                //Загрузка формы
    print("<h2 align = 'center'>Страница регистрация и дальше бла...бла...бла</h2>");
    print("<div align = 'center'><form action='".$_SERVER['PHP_SELF']."' method='post'>
            Введите свой логин:<input type='text' value='логин' name='Login'><br><br>
            Введите свой пароль:<input type='password' name='Password'><br><br>
            <input type='submit' value='Регистрация' name='go'>
            </form></div>");
    print("<a href='{$_SERVER["DOCUMENT_ROOT"]}'/auth.php>Вернуться назад</a>");
            
    require (dirname(__FILE__)."/form/footer.html");
}
?>


Папка admin
admin.php - скрипт административной части ПОКА ТОЛЬКО ДЛЯ КОНТЕНТ-МЭНЕДЖ.(правда для админов доработать ерунда осталась)
edit.php - скрипт для редактирования записей в СУБД

Добавлено @ 20:43
admin.php

Код

<?php

/**
 * Скрипт административной части
 * 
 */
            //Перенаправление при нажатии в форме на кнопку редактирования -> edit.php
    if($_GET['edit'])
        {
            header("Location: http://".$_SERVER['HTTP_HOST']."/catalog/admin/edit.php");
            exit;
        }
         
                    //Функция вывода формы кнопок управления
function form($path,$name)
{
    print("<form action='".$path."' method='get'>");
    print("<input type='submit' value='Удалить' name='delete'>&nbsp;&nbsp;");
    print("<input type='submit' value='Редактировать' name='edit'>");
    print("<input type='hidden' name='articul' value = '".$name."'></form><hr>");
}
            
            //Функция удаления 
function delete($del)
{
    global $obj;
    $query = "DELETE FROM tovar WHERE articul = {$del}";
    $obj->Query($query);
}

include("../connect.php");    //Загрузка библиотеки классов доступа к СУБД.
session_start();


require ("../form/header.html"); //"Шаблоны"
require ("../form/center.html");

if($_SESSION['status'] == "cont_mng")
{
    
    $obj = new Users();
    
    if(isset($_GET['delete']))
    {
        $art_l = $_SESSION['articul'] = htmlspecialchars($_GET['articul']);
        delete($art_l);
    }
    
    $query = "SELECT type FROM tovar";
    $result = $obj->Query($query);
    
        //Количество типов товаров в массив $type[].
    $type = array();
    while($row = mysql_fetch_row($result))
    {
        if(!in_array($row[0],$type))
        {
            $type[]=$row[0];    
        }
    }
    
    
    for($i=0;$i<=count($type);$i++)
    {
        $query = "SELECT articul,type,name,shotopis FROM tovar WHERE type='{$type[$i]}'";
        $result = $obj->Query($query);

        while( $row = mysql_fetch_assoc($result))
        {
                        //Блок выода типа товара
        
                switch($row['type'])
                {
                    case "авто":
                        print("<h3 align = 'center'>Авто</h3><br>");
                        break;
            
                    case "техника":
                        print("<h3 align = 'center'>Техника</h3><br>");
                        break;
            
                    case "услуги":
                        print("<h3 align = 'center'>Услуги</h3><br>");    
                        break;
            
                    default:
                        print("<h3 align = 'center'>Такого типа товара ещё нет</h3><br>");
                }
                
            print($row['type']." ".$row['shotopis']."<br><br>");
            $path = $_SERVER['PHP_SELF'];
            form($path,$row['articul']);
        }
    }
require ("../form/footer.html");
}elseif($_SESSION['status'] == 'admin')
    {
        print("Здесь админка");    
    }else
        {
            print("<h1 align = 'center'>Не прошло</h1>");
            require ("../form/footer.html");    
        }

?>


edit.php

Код

<?php

/**
 * 
 * Скрипт редактирования
 */
session_start();
$art = $_SESSION['articul'];

include("../connect.php");    //Загрузка библиотеки классов доступа к СУБД.
require ("../form/header.html"); //"Шаблоны"
require ("../form/center.html");

if($_SESSION['status'] == "cont_mng" OR $_SESSION['status'] == "admin")
{                //Форма для ввода данных редактирования
?>                        
    <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
    Введите артикуль: 
    <input type="text" name="articul"><br><br>
    Введите тип товара: 
    <input type="text" name="type"><br><br>
    Введите наименование товара: 
    <input type="text" name="name"><br><br>
    Введите короткое описание: 
    <textarea wrap="OFF" name="shot">Здесь должно быть короткое описание товара</textarea><br><br>
    Введите полное описание: 
    <textarea wrap="OFF" name="full">Здесь должно быть полное описание товара</textarea><br><br>
    <input type="submit" name="start" value="Сохранить">
    </form>
    
<?php

    if(isset($_POST['start']))
    {
        $obj = new Users();
                //Запрос на обновление
        $query = "UPDATE tovar ";
        $query .= "SET articul=".htmlspecialchars($_POST['articul']).", ";
        $query .= "type='".htmlspecialchars($_POST['type'])."', ";
        $query .= "name='".htmlspecialchars($_POST['name'])."', ";
        $query .= "shotopis='".htmlspecialchars($_POST['shot'])."', ";
        $query .= "fullopis='".htmlspecialchars($_POST['full'])."' ";
        $query .= "WHERE articul=".$_SESSION['articul']."";
        
        
        $res = $obj->Query($query);
        print("Успешно сохранено, как нистранно!?<br>");
        print("<a href= '../admin/admin.php'>Перейти в административную панель</a>");
    }    
    
require ("../form/footer.html");
}
else
{
    print("Доступ запрещён");
    require ("../form/footer.html");    
}

?>



Это сообщение отредактировал(а) georgiy11 - 22.10.2008, 21:18
PM MAIL   Вверх
georgiy11
Дата 22.10.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Если будут какие то замечания или оптимизация , помогите пожалуйста.
Кто чем сможет! smile 
Просто я выписываю в отдельный файл все заметки для лучшего запоминания.
СПАСИБО!
PM MAIL   Вверх
Serkys
Дата 26.10.2008, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 4
Всего: 22



georgiy11, выложи архив со всеми файлами и дампом БД
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.