[PHP] Как лучше написать скрипт?

12 3
O
На сайте с 29.05.2008
Offline
195
1003

Здравствуйте.

Учу PHP уже 5ый день. Заодно тренируюсь и пишу маленькую CMS для себя.

Сейчас остановился на функции добавления статьи.

Есть functions_admin.php в которой описывается функция вывода формы добавления статьи, функция фильтрации на наличие HTML тегов и незаполненность статьи, функция пред просмотра и функция добавления статьи в базу.

Столкнулся с ошибкой. При присвоении переменной $title = strip_tags($_POST['title']) и прочих, они просто пропадают. Т.е., работает только исходник $_POST массив, а если присвоить значение массива в переменную - не работает.

Как написать лучше?

[umka]
На сайте с 25.05.2008
Offline
456
#1
ortegas:

Столкнулся с ошибкой. При присвоении переменной $title = strip_tags($_POST['title']) и прочих, они просто пропадают.

А не должны пропадать.

Видимо, где-то вы этот массив перезаписываете или обнуляете.

Попробуйте прямо перед этой строчкой добавить:

var_dump($_POST['title']);

Есть там в ней что-нибудь?

Лог в помощь!
O
На сайте с 29.05.2008
Offline
195
#2

[umka], пусто. Задал static - все норм. А безопасно ли это?

ortegas добавил 26.05.2011 в 20:48

function check_add_article_form() {
global $conf;
$article_title = strip_tags($_POST['title']);
$article_url = strip_tags($_POST['url']);
$article_category = $_POST['category'];
$article_article = strip_tags($_POST['article'], "$conf[allowed_tags]");
$article_tags = strip_tags($_POST['tags']);
if ((!$article_title) or (!$article_url) or (!$article_category) or (!$article_article)) {
echo "Форма заполнена неверно!TEMP";
}
else {
static $article_title;
static $article_url;
static $article_category;
static $article_article;
static $article_tags;
}
}

Пример обрезки тегов. Скажите, а могу ли я обрезать их прямо в массиве, чтобы не задавать 5 раз static, а только 1 раз для массива?

ortegas добавил 26.05.2011 в 20:51

Попробовал, через массив - работает. Как обойти static? Выполнять функцию в функции? Или это не опасно?

[umka]
На сайте с 25.05.2008
Offline
456
#3

Складывайте переменные в массив, например, $article. И объявите его

global $article;

или просто возвращайте его

return $article;

O
На сайте с 29.05.2008
Offline
195
#4

function check_add_article_form() {
global $conf;
$article = array (
'title' => strip_tags($_POST['title']),
'url' => strip_tags($_POST['title']),
'category' => $_POST['category'],
'article' => strip_tags($_POST['article'], "$conf[allowed_tags]"),
'tags' => strip_tags($_POST['tags'])
);
if ((!$article[title]) or (!$article
}
else {
static $article;
}
var_dump ($article);
}" title=") or (!$article[category]) or (!$article[article])) {
echo "Форма заполнена неверно!TEMP";
}
else {
static $article;
}
var_dump ($article);
}" target="_blank">) or (!$article[category]) or (!$article[article])) {
echo "Форма заполнена неверно!TEMP";
}
else {
static $article;
}
var_dump ($article);
}

До if-else работает, после - dump NULL.

ortegas добавил 26.05.2011 в 21:04

ХМ, работает если static задать в конце функции. А почему static удаляет массив в функции после его вызова??

[umka]
На сайте с 25.05.2008
Offline
456
#5

Почитайте тут про области видимости переменных

http://php.net/manual/en/language.variables.scope.php

O
На сайте с 29.05.2008
Offline
195
#6

Понял, ее надо объявлять статической перед тем, как ей будет присвоено значение.

Спасибо.

skAmZ
На сайте с 04.09.2009
Offline
122
#7

С какой целью вы пишите "static", зачем оно вообще Вам надо?

skAmZ добавил 26.05.2011 в 21:12

P.S. почитайте ещё про array_map....

O
На сайте с 29.05.2008
Offline
195
#8

Потому, что я подстраиваю POST запрос под нужный, который пойдет в БД. Я эти переменные собираюсь использовать в следующей функции.

LEOnidUKG
На сайте с 25.11.2006
Online
1774
#9

Можно глупый вопрос? А зачем вообще это на функциях делать? Это какой-то + в карму или что?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
O
На сайте с 29.05.2008
Offline
195
#10

LEOnidUKG, а как? Классы я пока, что не учил. Хочу закрепить урок.

Чтобы код не засорять и выполнять в зависимости от условий.

Я пока, что профан. Кто уже имеет опыт, поделитесь. А то когда пишешь скрипт уча PHP запоминается лучше. Боюсь, чтобы потом все не переписывать :).

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий