Как запретить вывод блока если он пуст

S
На сайте с 19.11.2014
Offline
72
#51
Smirnof:
Да, вроде работали.

Ранее в методе foreach было $html = '';
я удалил, посчитал, что лишнее, но проблема не в этом.
Все же хотелось бы знать, в методе foreach наличие $html = ''; обязательно?

У вас до форича $html не определена, а вы в фориче используете оператор .=, а не просто присваевание. Оператор .= (присваивание с конкатенацией) предполагает, что уже инициализирована строковая переменная . И должна она в вашем случае инициализироваться не в блоке foreach, а перед

$html = '';

foreach ($data->items as $yt) {

$html .= $this->listQueryVideo($yt);

}

Smirnof:

Заменил

$this->url = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&key={$this->key}&part=$part&order=data&maxResults=5&q={$this->config[$nom.'catevideos']}&type=video";

на

$this->url = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&key={$this->config["key"]}&part=$part&order={$this->config["zerosortingresults"]}&maxResults={$this->config["twonumber"]}&q={$this->config["twocatevideos"]}&videoSyndicated=true&type=video";

В чем разница, пытаюсь понять, но не только в {$this->key} и {$this->config["key"]}
{$this->config[$nom.'catevideos']} менял на поисковый запрос music не сработало, пытаюсь понять разницу.

Я же и писал выше, что я не знаю, где вы определяете $this->url и $this->key, поэтому и не могу точно вам сказать, следует их менять или нет

Как у вас в класе инициализирован key и как вы ему присвоили значение

У вас должно быть что-то такое

class BBBB{

protected $key = null //или другое значение

и далее возможно

function __constractor(){

$this->key = 125;

А я этого не знаю, поэтому и не могу сказать уверенно что так и так

S
На сайте с 13.11.2012
Offline
72
#52

вот это нашел

/**
* Is Set and Equal to
* @param key, value
* @return boolean
*/
public static function is_set($key,$value=NULL,$method="GET"){
if(!in_array($method, array("GET","POST"))) return FALSE;
if($method=="GET") {
$method=$_GET;
}elseif($method=="POST"){
$method=$_POST;
}
if(!isset($method[$key])) return FALSE;
if(!is_null($value) && $method[$key]!==$value) return FALSE;
return self::clean($method[$key],3,TRUE);
}

protected $config=array(), $action="", $do="", $id="", $sandbox = FALSE;

protected $actions = array("watch", "page", "popular", "search", "channel", "user", "terms", "privacy", "advertise");


public function __construct($config){
// Start Youtube
parent::__construct();
// Set Config URl
$this->config=$config;
// Check Key
if(empty($this->config["key"])){
die("A Youtube API key is required to run this app.");
}
// Set Youtube Key
$this->set($this->config["key"]);
}

Добавил html, теперь так выглядит

protected function getcates($nom){
// Construct URL
$part = "snippet";
$this->url = ""
// Get Data
$data = $this->http(TRUE);
$html = '';
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}
S
На сайте с 19.11.2014
Offline
72
#53
Smirnof:
вот это нашел

Ну, исходя из $this->config=$config; в конструкторе

$this->key можно поменять на $this->config['key'];

Попробуйте прописать для проверки после

protected function getcates($nom){

return '###################################';

И посмотрите, появится оно там, где должно выводится в шаблоне. Так будет хоть известно, попадаете ли в метод

S
На сайте с 13.11.2012
Offline
72
#54

Ничего не изменилось, у меня и так все работает уже так как было задумано.

Вот это работает

protected function getcates($nom){
// Construct URL
$part = "snippet";
$this->url = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&key={$this->config["key"]}&part=$part&order={$this->config[$nom.'sortingresults']}&maxResults={$this->config[$nom.'number']}&q={$this->config[$nom.'catevideos']}&videoSyndicated=true&type=video";
// Get Data
$data = $this->http(TRUE);
$html = '';
foreach ($data->items as $yt) {
$html .= $this->listQueryVideo($yt);
}
return $html;
}
S
На сайте с 19.11.2014
Offline
72
#55
Smirnof:
Ничего не изменилось, у меня и так все работает уже так как было задумано.
Вот это работает

То есть со всеми изменениями работает?

S
На сайте с 13.11.2012
Offline
72
#56

Да. Все работает отлично со всеми изменениями что были внесены.

Может где-то есть ошибки но работает

Теперь буду думать, что еще там можно уменьшить...

Спасибо!

S
На сайте с 19.11.2014
Offline
72
#57
Smirnof:
Да. Все работает отлично со всеми изменениями что были внесены.
Может где-то есть ошибки но работает
Теперь буду думать, что еще там можно уменьшить...
Спасибо!

Ну думайте :)

K
На сайте с 03.06.2015
Offline
45
#58
Smirnof:
$store = array(
'zerocatename' =>$_POST ["zerocatename"],
'zerocatesearch' =>$_POST ["zerocatesearch"],
'zerocatevideos' =>$_POST ["zerocatevideos"],
'zeronumber' =>$_POST ["zeronumber"],

Похоже неоперабельный случай.

Кстати есть теория что когда человек приносит на форум очередной баян - то не для того, чтобы поменять на фортепиано, а чтобы заставить этот баян играть. То есть форумы по определению - склад такого рода баянов. Все кто баянов не хочет - на форумы их не таскает, не доносит, так скидывает в мусор, мимо форумов.

MYSQL PHP JS HTML CSS SEO TXT США СССР
S
На сайте с 13.11.2012
Offline
72
#59
kostyanet:
Все данные сохраняйте в файле .php и тогда никто просто так из браузера его не откроет, а от запуска спасает либо банальная проверка на заранее установленную переменную в точке входа, либо нормальное перемещение файла в недоступную для публичного доступа папку.

Вполне легко открывается, все тоже самое что и с использованием .txt - сам удивился :(

Пробовал .htaccess в папку кидать, тогда вообще панель управления не открывается, полностью доступ запрещен.

Прописываю в начале файла

<?php defined('APP') or die('Hacking attempt!'); ?>
....YTo3NTp7.......

тогда система не читает сохраненные в нем данные, хотя от открытия в браузере спасает.

---------- Добавлено 01.08.2015 в 18:51 ----------

kostyanet:
Похоже неоперабельный случай.

Кстати есть теория что когда человек приносит на форум очередной баян - то не для того, чтобы поменять на фортепиано, а чтобы заставить этот баян играть. То есть форумы по определению - склад такого рода баянов. Все кто баянов не хочет - на форумы их не таскает, не доносит, так скидывает в мусор, мимо форумов.

Очень познавательно. Видимо на форум приходят только Гуру, чтобы друг другу мозг выносить.

K
На сайте с 03.06.2015
Offline
45
#60

По той же теории на форумы ходят обмениваться идеями. У вас такая идея чтобы других идей не рассматривать, но чтобы все работало как у людей, а не через одно место. Так вот надо слушать и понимать что люди советуют, их идеи, и не жалеть своих, вымученных потом и кровью, и тогда будет работать не хуже чем у людей, а то и получше.

Никогда браузер не откроет файл из папки закрытой для публичного доступа, а серверный скрипт откроет запросто, потому что у него права другие. Если никак нельзя закрыть файл по правам, то остается только проверять как он открывается - опосредованно или непосредственно. Последний способ самый древний, дубовый и универсальный.

---------- Добавлено 02.08.2015 в 20:26 ----------

Хорошо, задам вопрос: зачем вы переписываете вручную все что пришло в массиве $_POST в другой массив?

По безопасности. Я сам как-то потратил целый день пытаясь разобраться в этом деле и могу выдать сводку.

1. фундаментальный способ - держать все данные в папке выше публичного доступа. Например на сервере у вас такая структура

..

cgi

conf

docs

log

php

stat

сайт лежит в docs или там в httpdocs или это может быть конкретно www папка. Только она определена как корневая для сайта, остальных просто нет для браузера. Но для скрипта, например index.php - который запущен из docs - папка php доступна.

Реализация этого способа может упереться в тупого хостера или тупой тариф.

2. положить в специальную папку ниже уровнем файл .htaccess со строчкой

Deny from all

3. проверять заведомую глобальную переменную

Так вот все 3 способа подразумевают наличие точки входа, то есть технологию когда все и любые запросы идут через единственный публичный файл - index.php

Больше ни одного файла, ну вообще ни одного кроме там картинок, стилей и жаба-скриптов - то есть статики - в публичном доступе нет.

1. index.php имеет права доступа к папке выше уровнем - к dirname(__FILE__).'../../php/'

2. index.php имеет права доступа к папке ниже уровнем, которая закрыта от любых внешних воздействий на уровне сервера

3. index.php определят ту самую глобальную переменную, которую затем все скрипты проверяют.

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