|
|
|
|
|
для: lab
(15.07.2005 в 03:40)
| | А одно другого не исключает. Тут речь идет о том, что в целях защиты один скрипт не должен запускаться без другого. Например, скрипт авторизации вставляется в каждую страницу, но сам по себе (без страницы) они исполняться не должен. Поэтому, в его начале мы ставим проверку определена ли константа (а определить ее можно только из другого скрипта) и, если не определена, то скрипт прекращает работу.
А если использовать переменную, то ее в скрипт можно передать извне. | |
|
|
|
|
|
|
|
для: RV
(13.07.2005 в 07:21)
| | Я конечно еще не гуру, я просто немного не понимаю. Ведь можно воспользоваться include() ?? Или это опасная функция? | |
|
|
|
|
|
|
|
для: Гость
(13.07.2005 в 07:48)
| | Переменную можно случайно исправить, в случае константы - это невозможно. | |
|
|
|
|
|
|
|
для: Гость
(13.07.2005 в 07:48)
| | можно и переменную | |
|
|
|
|
|
|
|
для: RV
(13.07.2005 в 07:21)
| | Хм а зачем обьявлять именно константу? почему не объявить просто переменную? | |
|
|
|
|
|
|
|
для: lab
(13.07.2005 в 03:32)
| | >А зачем проверять включали ли мы файл или нет?
если имеется два скрипта 1.пхп и 2.пхп, скрипт 2.пхп не может запускатся отдельно, а его должен запускать скрипт 1.пхп. То мы в скрипте 1.пхп определяем констатнту:
<?
define(CONSTANT1 , true);
?>
|
а в скрипте 2.пхп проверяем была ли задана константа (а она может задатся только в 1.пхп)
<?
if (!defined('CONSTANT1')) die('отказано в доступе'); //прекращаем выполнение скрипта
основной код скрипта // а если константа задана то все ок и продолжем выполнение
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.07.2005 в 02:52)
| | А зачем проверять включали ли мы файл или нет?
И что означают else и if? И почему в конце (defined('CONSTANT1')) стоит еще одна скобочка? | |
|
|
|
|
|
|
|
для: lab
(13.07.2005 в 02:04)
| | Кроме того, в файле можно определить константу
<?php
define(CONSTANT1,1);
?>
|
а затем при помощи кода
<?php
if (defined('CONSTANT1')) echo "...";
else include "index.php";
?>
|
определять включали мы файл index.php или ещё нет. | |
|
|
|
|
|
|
|
для: lab
(13.07.2005 в 02:04)
| | Пусть в скрипте имеется 20 циклов
<?php
for($i = 0; $i < 5; $i++)
{
echo "<a href=index.php?id=".$id[$i].">".$link[$i]."</a>";
}
?>
|
и постраничная навигация
<?php
// Запрашиваем информацию о количестве всех тем
$query = "SELECT COUNT(*) FROM themes
WHERE id_forum = $id_forum AND
hide != 'hide'";
$tot = mysql_query($query);
if(!tot) puterror("Ошибка при выборке общего числа тем форума");
$total = mysql_result($tot,0);
$number = (int)($total/$pnumber);
if((float)($total/5) - $number != 0) $number++;
echo "<tr><td class=bottomtabletema colspan=5><div class=leftblock><p class=texthelp>Сообщения: ";
// Проверяем есть ли ссылки слева
if($page - $page_link > 1)
{
echo "<a title='Открыть страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=1> <nobr>[1-5]</nobr></a> <em class=currentpage><nobr> ... </nobr> </em> ";
// Есть
for($i = $page - $page_link; $i<$page; $i++)
{
echo " <a title='Открыть страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=".$i."> <nobr>[".(($i - 1)*5 + 1)."-".$i*5."]</nobr></a> ";
}
}
else
{
// Нет
for($i = 1; $i<$page; $i++)
{
echo " <a title='Открыть страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=".$i."> <nobr>[".(($i - 1)*5 + 1)."-".$i*5."]</nobr></a> ";
}
}
// Проверяем есть ли ссылки справа
if($page + $page_link < $number)
{
// Есть
for($i = $page; $i<=$page + $page_link; $i++)
{
if($page == $i)
echo "<em class=currentpage><nobr> [".(($i - 1)*5 + 1)."-".$i*5."] </nobr> </em>";
else
echo " <a title='Открыть страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=".$i."> <nobr>[".(($i - 1)*5 + 1)."-".$i*5."]</nobr></a> ";
}
echo "<em class=currentpage><nobr> ... </nobr> </em> <a title='Открыть страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=$number> <nobr>[".(($number - 1)*5 + 1)."-$total]</nobr></a> ";
}
else
{
// Нет
for($i = $page; $i<=$number; $i++)
{
if($number == $i)
{
if($page == $i)
echo "<em class=currentpage><nobr> [".(($i - 1)*5 + 1)."-$total] </nobr></em>";
else
echo " <a title='Открыть последнюю страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=".$i.">[".(($i - 1)*5 + 1)."-$total]</a> ";
}
else
{
if($page == $i)
echo "<em class=currentpage><nobr> [".(($i - 1)*5 + 1)."-".$i*5."] </nobr> </em>";
else
echo " <a title='Открыть страницу с темами' class=menuinfo href=index.php?id_forum=".$id_forum."&page=".$i."> <nobr>[".(($i - 1)*5 + 1)."-".$i*5."]</nobr></a> ";
}
}
}
?>
|
И таких скриптов штук 40... А теперь встаёт задача изменить 5 на 10 - придётся перепахать очень много кода, не говоря о том, что это занимает много времени, это может быстро привести к ошибке. Гораздо удобнее использовать при разработке кода константу равную 5, потом можно будет изменить её в одном месте, кроме того, константе можно дать осмысленное имя MAX_BLOCKS_TO_PAGE и не придётся гадать, что это за цифра 5 - оценка по пятибальной шкале? процент? отступ? | |
|
|
|
|
|
|
| Я недавно стал читать книжку php, у меня возник вопрос. Для чего нужно объявлять константы? Зачем они нужны я так и не понял. Вот к примеру такой скрипт, что он дает:
<?
define(CONSTANT1,"the");
define(CONSTANT2,"\x20");
define(CONSTANT3,"define");
echo(CONSTANT1);
echo(CONSTANT2);
echo(CONSTANT3);
?>
|
Я конечно понимаю что откуда берется, мне просто не понятно где я могу применить константы.. | |
|
|
|
|