” ...
Между другото завърших системката! Може да я свалите от
тук, ако желаете!
На някого може да е полезна!
„
Сега не знам как да ти го кажа без да те засегна. А, наистина не целя да те засягам. Затова ще го кажа направо. Трябва сериозно да преработиш кода си. Да, така работи. Но, нека да метна един много бърз и повърхностен поглед.
if(@$_SESSION['admin']==true) |
Използването на @ предотвратява извеждането на грешка, но в същото време хаби и процесорно време и ресурси на сървъра, което довежда до по- бавната работа на сайта ти(и не само). Щом е в проверка(if) е безсмислено да се използва. Още за този ред. Проверяваш дали $_SESSION['admin'] е true. Дефакто това значи, че проверяваш дали стойността и е различна от 0 (нула) и NULL. Иначе, казано, освен ако не обичаш да пишеш много, кода ти би следвало да е следния:
Това разбира се ще доведе до предупреждение, че използваш недефинирана променлива и предполагам, че и заради това си сложил @ в твоя код. За да предотвратиш тези предупреждение ( в конкретния пример) правилния код е:
if(isset($_SESSION['admin']) && $_SESSION['admin']) |
Разбира се това е много писане, а и все пак е само някакво предупреждение, а не грешка в кода. За това може да се използва ( на втория ред от php кода ти):
error_reporting(E_ALL ^E_NOTICE); |
и по този начин
няма да изведе никаква грешка.
Минавам нататъка ( с уговорката, че пиша всичко това не за да жегна по някакъв начин, а понеже виждам, че имаш желание да се научиш) още в началото. Предполагам, че е от малкото опит, но session_start(); винаги е в началото на файла, иначе рискуваш (явно не си се сблъсквал все още) да получиш едни съобщения за изпратен header вече и сайта ти да спре до там. Тоест:
<?php session_start();
error_reporting(E_ALL ^E_NOTICE); ?> |
Примерно, как изглежда файла ти.
От твоя код:
echo "<hr />
<a href='?page=login'>Влез в системата!</a>"; |
Отново много процесорно време. Освен, ако нямаш променлива в подавания стринг на echo свикни да използваш единични кавички. Примерно:
echo '<hr />
<a href="?page=login">Влез в системата!</a>'; |
А, и даже да имаш променлива, например echo "rezultata e $result ot iskaniq sbor"; търсиш ли бързодействие на сайта си би следвали да е:
echo 'rezultata e ' . $rezult . ' ot iskaniq sbor'; |
Наложително е да прочетеш за switch - case конструкцията, или ако предпочиташ за if - elseif - else
А какво, ако подам само интервал :)
За твоя случай е вярното (id трябва да е число)
От твоя код:
for ($i=0; $i<count($file_array); $i++) |
Представи си, че петицията са я подписали поне половин милион хора(дай Боже). Това е текстов файл в мегабайти. А тука за всеки ред ще се извършва преброяване на масива /count($file_array)/. Няма да дочакам да ми се покаже сайта.
Има два варианта. 1->създаваш си променлива която съдържа елементите на масива предварително:
$count = count($file_array);
for ($i=0; $i<$count; $i++) |
или в тялото на цикъла инициализираш началната стойност на променливата:
for ($i=0, $count=count($file_array); $i<$count; $i++) |
Специално за for цикъла. Синтаксиса е следния:
for (инициализация; проверка; действие) |
Инициализацията се извършва само при първото стартиране на цикъла. Проверката тече постоянно докато се изпълнява цикъла. А, действието може да е всякакво. От това да боравя с променливи, минавайки през това да викам функция/и и достигайки до каквото и да е стига да е php легитимно:
for ($i = 0, $something = sizeof($array); $i < $something; include 'pages/page_' . $i . 'html') |
Няма да продължавам, но искам да подчертая отново: Пиша всичко това не за да те накърня(даже и не съм си го помислил), а защото имаш желание(поне това си мисля, че съм видял) да програмираш.