Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Оцените движок


Автор: abalich 1.6.2007, 12:59
Я писал движок для своего сайта, принцип его такой:
При нажатии на ссылку к index.php добавляется ?display= какомуто значению например photo
Код

<a href="index.php?display=photo">Фотографии</a>

В центре страници код такой:
Код

if (isset($display)){
   $path=$_GET['display'];
   if ($path==''){
   include("./content/404.php");
   }
   else
  {  
     $link=mysql_connect("localhost","root","");
     mysql_select_db("db_name",$link);
    $str_sql_query="SELECT * FROM `table` WHERE `path`='".$path."' AND `status`='show'";
    $result=mysql_query($str_sql_query,$link);
    if ($mas=mysql_fetch_array($result))
        {include ("./content/content.php");}
   else 
       {include("./content/404.php")};
 
      }
}

Вот а в файле content.php:
Код

$link=mysql_connect("localhost","root","");
     mysql_select_db("db_name",$link);
$str_sql_query="SELECT * FROM `table` WHERE `path`='".$_GET['dislapy']."'";
$result=mysql_query($str_sql_query,$link);
$mas=mysql_fetch_array($result);
echo "<h1>".$mas['tittle']."</h1>";
ehco "<p>".$mas['content']."</p>";

Скажите насколько правильный такой движок!!! И безопасный!!! Я его таким сделал для простой админки!!!!

Автор: Aco 1.6.2007, 13:26
Жеесть, безапасность на нуле.
1. никакой экранизации $path. SQL Injections за милую душу.
2. как понимаю register_globals on.
...

Почитай любую стать о безопасности

http://forum.vingrad.ru/forum/topic-149182/anchor-entry1127076/45.html#st_0_view_0

Автор: abalich 1.6.2007, 13:37
Цитата

1. никакой экранизации $path. SQL Injections за милую душу.
2. как понимаю register_globals on.

1.????????Объясни не понял!!!
2. register_global off;

Автор: Aco 1.6.2007, 13:49
Цитата

2. register_global off;

Код

if (isset($display)){
   $path=$_GET['display'];
 
Почему isset($display), а не isset($_GET['display']) ?

Цитата

1.????????Объясни не понял!!!

можно передать mysql запрос через url-запрос. Поставь экранирование спецсимволов мускула(mysql)
Код

  $path=mysql_escape_string($_GET['display']);


Наговорил бы ещё много, но работать надо smile 

Автор: abalich 1.6.2007, 13:52
Цитата

if (isset($display)){
   $path=$_GET['display'];

запарился конечно же:
isset($_GET['display']


Цитата

 $path=mysql_escape_string($_GET['display']);

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

Автор: $дмитрий 1.6.2007, 16:47
Цитата

Ну если принять такие меры тогда движок выглядить посимпотичней или нет!!!

smile 

Автор: BuShaRt 2.6.2007, 08:21
Оценил, вот итог:
-Идея не нова, используеться всюду и везде, почти как каждом движке.
-Позставленная задача раскрыта по минимуму.
-Код не валидный и кривой.

Автор: abalich 2.6.2007, 12:39
Цитата

-Код не валидный и кривой

Как это понять?????

Автор: WolfON 2.6.2007, 13:22
Это понять, что в нем отсутствует читабельность, расширяемость и тд
Мне вот абсолютно очевидно, что соединение с БД происходит два раза - при открытии страницы и при вызове скрипта контент, причем оно не постоянное
Еще мне очевидно, что у тебя код повторяется, хотя-бы два раза работа с БД и одинаковые инклуды

Автор: BuShaRt 2.6.2007, 14:25
именно, функции в избыточном колличестве.

Автор: WolfON 2.6.2007, 15:19
Первое, что пришло в голову, так это переделать его до такого вида, про всякое там ООП или красивый код я не говорю, но:
Код

<?php
if (!empty($_GET['display'])) {
    $path = mysql_escape_string($_GET['display']);
    
    $link=mysql_pconnect("localhost","root","");
    mysql_select_db("db_name",$link);
    $str_sql_query="SELECT * FROM `table` WHERE `path`='$path' AND `status`='show'";
    $result=mysql_query($str_sql_query, $link);
    if ($mas=mysql_fetch_array($result))
        echo "<h1>{$mas['tittle']}</h1><p>{$mas['content']}</p>";
    else 
        include("./content/404.php");
} else {
    include("./content/404.php");
} 
?>

Автор: abalich 3.6.2007, 09:59
Цитата

Код

<?php
if (!empty($_GET['display'])) {
    $path = mysql_escape_string($_GET['display']);
    
    $link=mysql_pconnect("localhost","root","");
    mysql_select_db("db_name",$link);
    $str_sql_query="SELECT * FROM `table` WHERE `path`='$path' AND `status`='show'";
    $result=mysql_query($str_sql_query, $link);
    if ($mas=mysql_fetch_array($result))
        echo "<h1>{$mas['tittle']}</h1><p>{$mas['content']}</p>";
    else 
        include("./content/404.php");
} else {
    include("./content/404.php");
} 
?>


За код спасибо!!!! smile 
А вот у меня на странице index.php строчка:
Код

$link=mysql_pconnect("localhost","root","");
    mysql_select_db("db_name",$link);

Встречается 2-3 раза, её можно не повторять просто менять $str_sql_query, и делать SQL запрос???

Автор: CyClon 3.6.2007, 12:12
Советую пока не браться за написание своего движка...

Автор: BuShaRt 3.6.2007, 12:14
abalich, 
Можно скачать готовые работы и посмотреть как там, или взять книгу по Pascal и тренировать логическое мышление.

Автор: abalich 3.6.2007, 12:45
Цитата

тренировать логическое мышление.

С логическим мышлением у меня все впорядке!! Я просто хотел узнать если код повторяется его  надо писать заноао или оно сохраняется!!!

Автор: BuShaRt 3.6.2007, 14:39
abalich, 
Логическое мышление и логическое мышление в программирование - вещи несколько разные... Умени организации циклов, оптимизация кода и т.п. от логического мышления не приходят. Не каких намеков на отсудствия логического мышления я не делал и не хотел smile имелось в виду именно "... в программирование".


Код

$link=mysql_pconnect("localhost","root","");
mysql_select_db("db_name",$link);


Если переменную $link ничем другим не забить, то в рамках одной интрепритации можно использовать, подключившись только один раз.

Автор: abalich 3.6.2007, 17:36
Цитата

Если переменную $link ничем другим не забить, то в рамках одной интрепритации можно использовать, подключившись только один раз.

Спасибо!!!! Кстати если делать include то скорось загрузки сайта увеличивается?
И где можно взять готовый движок, чтобы на нем можно было делать регистрацию и типа личного кабинета!!!Если вообще такие есть!

Автор: BuShaRt 3.6.2007, 18:03
abalich, 
Цитата(abalich @  3.6.2007,  17:36 Найти цитируемый пост)
стати если делать include то скорось загрузки сайта увеличивается?

Увеличиваеться, но не критична... лучше его делать...

Готовый движок CMS: http://joomla.ru
Сайт с готовыми программными решениями: http://woweb.ru

Автор: abalich 4.6.2007, 18:59
Цитата

Готовый движок CMS: Joomla
Сайт с готовыми программными решениями: WoWeb

Спасибо!!! там много полезного материала!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)