❓Вопрос от пользователя
Не выводятся ACF поля через Ajax WordPress
Переменная $pvar выводится и меняется при выборе option в списке select - это работает. Но мне ещё нужно вывести значения всех ACF полей что у меня в functions.php - они не выводятся. При выборе в селекте нужно выводить всё из полей.
То что у меня в functions.php:
Я его локализовал в functions.php:
PHP задачи с собеседований
Не выводятся ACF поля через Ajax WordPress
Переменная $pvar выводится и меняется при выборе option в списке select - это работает. Но мне ещё нужно вывести значения всех ACF полей что у меня в functions.php - они не выводятся. При выборе в селекте нужно выводить всё из полей.
То что у меня в functions.php:
add_action('wp_ajax_nopriv_ajax_slide','ajax_slide');
add_action('wp_ajax_ajax_slide','ajax_slide');
function ajax_slide(){
$pvar = $_POST['hash'];
echo $pvar;
?>
<?php if( have_rows('dobavit_punkt')): ?>
<?php
$field = get_sub_field_object( 'vybor_napravleniya');
$value = $field['value'];
if($value == $pvar): ?>
<?php while ( have_rows('dobavit_punkt') ) : the_row(); ?>
<div> // тут поля </div>
<?php endwhile; ?>
<?php endif; ?>
<?php endif; ?>
<?php
wp_die();
}
Мой скрипт ajax-script.js:
jQuery(document).ready(function($){
$("select#selectedop").on( "change", function() {
let thisselval = $(this).val();
$.ajax({
type:"POST",
url: my_ajax_name.ajax_url,
data:{
'action':'ajax_slide',
'hash': thisselval
}, success: function (data){ //received content
$(".wr").empty();
$(".wr").append(data);
} });
});
});
Я его локализовал в functions.php:
wp_enqueue_script( 'service-ajax', get_template_directory_uri() . '/app/js/ajax-script.js', array( 'jquery' ), '0.0.2', true );
wp_localize_script( 'service-ajax', 'my_ajax_name', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
PHP задачи с собеседований
❓Вопрос от пользователя
Как хранить списки для каждого врача? PHP
Делаю API, и встал вопрос о том как хранить специальности и дополнительное образование врача в базе? В HTML это выводится так
Вот мой метод для добавления врача, я не понимаю как тут хранить списки чтобы их можно было например через , писать в форме админки. Использую RedBean
PHP задачи с собеседований
Как хранить списки для каждого врача? PHP
Делаю API, и встал вопрос о том как хранить специальности и дополнительное образование врача в базе? В HTML это выводится так
<div class="doctor-card__about--row">
<div class="doctor-card__about--title">
Дополнительное образование:
</div>
<div class="doctor-card__about--text">
2020 г. Профессиональная программа "Нейрохирургия", Сертификационный курс по специальности «нейрохирургия», Российская Медицинская Академия Последипломного образования <br>
2017 г. Профессиональная программа "Неотложная нейрохирургия" ФГБОУ ВО МГМСУ им. Ф. И. Евдокимова Минздрава России. <br>
2014 г. Реабилитация пациентов с различными заболеваниями и травмами позвоночника и спинного мозга», Московский НПЦ медицинской реабилитации, восстановительной и спортивной медицины
</div>
</div>
<div class="doctor-card__about--row">
<div class="doctor-card__about--title">
Специализация:
</div>
<div class="doctor-card__about--text">
<ul>
<li>Лечение геморроя метолом латексного лигирования геморроидальных узлов</li>
<li>Удаление хронической анальной трещины</li>
<li>Современные методы консервативной терапии трещин</li>
<li>Удаление тромбов из наружных геморроидальных узлов (тромбоэктопия)</li>
</ul>
</div>
</div>
Вот мой метод для добавления врача, я не понимаю как тут хранить списки чтобы их можно было например через , писать в форме админки. Использую RedBean
$additional_education = $_POST['additional_education'] ?? '';
$specialties = $_POST['specialties'] ?? '';
$doctor = R::dispense('doctors');
$doctor->photo = $photo; //Фото доктора
$doctor->fio = $fio; //ФИО доктора
$doctor->experience_about = $experience_about; //Какой стаж
$doctor->experience = $experience; //Стаж доктора
$doctor->specialty = $specialty; //Специализация
$doctor->price = $price; //Стоимось первичного приёма
$doctor->education = $education; //Образование
$clinic = R::load('clinics', $clinicId);
if ($clinic->id) {
$doctor->id_clinic = $clinic->id;
} else {
echo json_encode(['status' => 'error', 'message' => 'Клиника не найдена'], JSON_UNESCAPED_UNICODE);
exit;
}
$id = R::store($doctor);
echo json_encode(['status' => 'success', 'message' => 'Доктор успешно добавлен', 'doctor_id' => $id], JSON_UNESCAPED_UNICODE);
PHP задачи с собеседований
❓Вопрос от пользователя
Выводить поля повторителя где селект имеет value как у выбранного в селекте на странице - ACF Pro WordPress
Мне нужно чтобы я на странице выбрал в селекте пункт и появилось соответствующее содержимое. Сейчас проблема получить value выбранного пункта чтобы сравнить его с тем пунктом, который в репиторе каждого цикла. Сейчас там выводятся данные только последнего цикла. Этот селект один и тот же - что на странице выводится что в админке в репитере - vybor_napravleniya.
Вот это селект на странице выводится:
Этот код выводит данные, которые должны зависеть от выбранного селекта сверху:
PHP задачи с собеседований
Выводить поля повторителя где селект имеет value как у выбранного в селекте на странице - ACF Pro WordPress
Мне нужно чтобы я на странице выбрал в селекте пункт и появилось соответствующее содержимое. Сейчас проблема получить value выбранного пункта чтобы сравнить его с тем пунктом, который в репиторе каждого цикла. Сейчас там выводятся данные только последнего цикла. Этот селект один и тот же - что на странице выводится что в админке в репитере - vybor_napravleniya.
Вот это селект на странице выводится:
<?php if( have_rows('dobavit_kartochku') ): ?>
<?php
$select = get_sub_field_object('vybor_napravleniya');
$newvalue = $select['value'];
?>
<select name="selectedop">
<?php foreach( $select['choices'] as $k => $v ): ?>
<option <?php echo ($k === $newvalue) ? 'selected="selected"' : ''; ?>>
<?php echo $v; ?>
</option>
<?php endforeach; ?>
</select>
<?php endif; ?>
Этот код выводит данные, которые должны зависеть от выбранного селекта сверху:
<?php if( have_rows('dobavit_kartochku')): ?>
<div class="objects-slider">
<?php while ( have_rows('dobavit_kartochku') ) : the_row(); ?>
<?php
$field = get_sub_field_object( 'vybor_napravleniya' );
$value = $field['value'];
?>
<div class="slider-item">
<?php if( have_rows('dobavit_izobrazhenie') ): ?>
<?php while ( have_rows( 'dobavit_izobrazhenie') ) : the_row(); ?>
<?php if($value == $k): ?>
// Здесь выводится контент
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>
<?php endwhile; ?>
</div>
<?php endif; ?>
PHP задачи с собеседований
❓Вопрос от пользователя
Автоматически создаются 2 гб. core файлы
В корневой папке сайта на постоянно основе стали создаваться core файлы, размером по 2 гб.
При выполнении команды: file core.1234 всплывают 2 типа ошибок в различныйх core файлах.
1 тип ошибки:
ELF 64-bit LSB core file x86-64, version 1 (SYSV), too many program header sections (7986)
при выполнении команды gdb -c core.1234 всплывает ошибка:
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type ""show copying""
and ""show warranty"" for details.
This GDB was configured as ""x86_64-redhat-linux-gnu"".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
BFD: Warning: /var/www/mywebsite.ru/data/www/mywebsite.ru/core.8648 is truncated: expected core file size >= 2186629120, found: 679276 544.
[New LWP 8648]
[New LWP 8653]
[New LWP 8654]
[New LWP 8656]
[New LWP 8657]
[New LWP 8658]
[New LWP 8659]
[New LWP 8651]
[New LWP 8650]
[New LWP 8652]
[New LWP 8649]
Missing separate debuginfo for the main executable file
Try: yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/da/37b4f7e97055c3dffa80997ec003396f77e0f8
Failed to read a valid object file image from memory.
Core was generated by `node /var/www/mywebsite.ru/data/www/mywebsite.ru/node_modules/.bin/frontity serve -'.
Program terminated with signal 6, Aborted.
#0 0x00007fca16ba5387 in ?? ()
2 тип ошибки:
ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from 'npm start', real uid: 1011, effective uid: 1011, real gid: 1011, effective gid: 1011, execfn: '/var/www/mywebsite.ru/data/.nvm/versions/node/v16.20.2/bin/node', platform: 'x86_64'
при выполнении команды gdb -c core.1234 всплывает ошибка:
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
[New LWP 15613]
[New LWP 15617]
[New LWP 15616]
[New LWP 15618]
[New LWP 15615]
[New LWP 15614]
[New LWP 15620]
[New LWP 15621]
[New LWP 15623]
[New LWP 15619]
[New LWP 15622]
Missing separate debuginfo for the main executable file
Try: yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/da/37b4f7e97055c3dffa80997ec003396f77e0f8
Core was generated by `npm start '.
Program terminated with signal 6, Aborted.
#0 0x00007f1b53843657 in ?? ()
Конфигурации VPS:
PHP 8.1.17 (alt)
FastCGI (Nginx + PHP-FPM)
Node.js 16.20.0
сайт на WordPress
панель управления ispmanager 6.5
OS CentOS 7
Вопрос: откуда взялась эта проблема и как ее исправить? Желательно средствами ispmanager!
PHP задачи с собеседований
Автоматически создаются 2 гб. core файлы
В корневой папке сайта на постоянно основе стали создаваться core файлы, размером по 2 гб.
При выполнении команды: file core.1234 всплывают 2 типа ошибок в различныйх core файлах.
1 тип ошибки:
ELF 64-bit LSB core file x86-64, version 1 (SYSV), too many program header sections (7986)
при выполнении команды gdb -c core.1234 всплывает ошибка:
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type ""show copying""
and ""show warranty"" for details.
This GDB was configured as ""x86_64-redhat-linux-gnu"".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
BFD: Warning: /var/www/mywebsite.ru/data/www/mywebsite.ru/core.8648 is truncated: expected core file size >= 2186629120, found: 679276 544.
[New LWP 8648]
[New LWP 8653]
[New LWP 8654]
[New LWP 8656]
[New LWP 8657]
[New LWP 8658]
[New LWP 8659]
[New LWP 8651]
[New LWP 8650]
[New LWP 8652]
[New LWP 8649]
Missing separate debuginfo for the main executable file
Try: yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/da/37b4f7e97055c3dffa80997ec003396f77e0f8
Failed to read a valid object file image from memory.
Core was generated by `node /var/www/mywebsite.ru/data/www/mywebsite.ru/node_modules/.bin/frontity serve -'.
Program terminated with signal 6, Aborted.
#0 0x00007fca16ba5387 in ?? ()
2 тип ошибки:
ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from 'npm start', real uid: 1011, effective uid: 1011, real gid: 1011, effective gid: 1011, execfn: '/var/www/mywebsite.ru/data/.nvm/versions/node/v16.20.2/bin/node', platform: 'x86_64'
при выполнении команды gdb -c core.1234 всплывает ошибка:
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
[New LWP 15613]
[New LWP 15617]
[New LWP 15616]
[New LWP 15618]
[New LWP 15615]
[New LWP 15614]
[New LWP 15620]
[New LWP 15621]
[New LWP 15623]
[New LWP 15619]
[New LWP 15622]
Missing separate debuginfo for the main executable file
Try: yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/da/37b4f7e97055c3dffa80997ec003396f77e0f8
Core was generated by `npm start '.
Program terminated with signal 6, Aborted.
#0 0x00007f1b53843657 in ?? ()
Конфигурации VPS:
PHP 8.1.17 (alt)
FastCGI (Nginx + PHP-FPM)
Node.js 16.20.0
сайт на WordPress
панель управления ispmanager 6.5
OS CentOS 7
Вопрос: откуда взялась эта проблема и как ее исправить? Желательно средствами ispmanager!
PHP задачи с собеседований
❓Вопрос от пользователя
Замена фона темплейта Wordpress
Как поменять этот фон на мои картинки? Где он находиться? Или как его найти? (wordpress - тема astra - шаблон Bestselling Author)
PHP задачи с собеседований
Замена фона темплейта Wordpress
Как поменять этот фон на мои картинки? Где он находиться? Или как его найти? (wordpress - тема astra - шаблон Bestselling Author)
PHP задачи с собеседований
❓Вопрос от пользователя
Необходимо выводить новый текст сообщения после двух одинаковых
Я создаю чат бот на php. У меня есть скрипт вывода сообщений чат бота. Мне необходимо реализовать так, чтобы после двух сообщений чат бота "Я не понимаю вас!" выводилось другое сообщение.Например, "Если вы не можете найти вопрос, напишите нам в телеграмм". Пока только выводиться одно сообщение каждый раз после неудачных попыток.
PHP задачи с собеседований
Необходимо выводить новый текст сообщения после двух одинаковых
Я создаю чат бот на php. У меня есть скрипт вывода сообщений чат бота. Мне необходимо реализовать так, чтобы после двух сообщений чат бота "Я не понимаю вас!" выводилось другое сообщение.Например, "Если вы не можете найти вопрос, напишите нам в телеграмм". Пока только выводиться одно сообщение каждый раз после неудачных попыток.
<?php
require_once 'dbconfig/config.php';
$stmt = $db->quote($_POST['txt']);
$sql="SELECT answer FROM `chatbot_shop` WHERE client_question LIKE $stmt";
$result = $db->prepare($sql);
$result->execute();
if($result->rowCount() > 0){
$row = $result->fetch(PDO::FETCH_ASSOC);
$content = $row['answer'];
}else{
$content = "Я вас не понимаю";
}
$result->closeCursor();
$added_on=date('Y-m-d h:i:s');
$db->prepare("INSERT INTO message(message,type) VALUES('$content','consultant')");
$added_on=date('Y-m-d h:i:s');
$db->prepare("INSERT INTO message(message,type) VALUES('$stmt','client')");
echo $content;
echo " ";
?>
PHP задачи с собеседований
❓Вопрос от пользователя
PHP FFMPEG - не работает поток RTSP на IOS
World! Этот код выполняет команду для ffmpeg на получение потока с камеры, копирует его и выводит в mp4.
if (isset($_REQUEST["get"])) {
header('Accept-Ranges:bytes');
header('Connection:keep-alive');
if (ffmpeg_getVersion()[0] >= 5) {$timeout_opt = "-timeout {$timeout}";}else {$timeout_opt = "-stimeout {$timeout}";}
$rtsp = $ncrypt->decrypt($_REQUEST["a"]); // Ссылка на основной поток
if (substr($rtsp, 0, 7) !== "rtsp://") die('RTSP URL is invalid!');
$ffmpeg_base = "{$ffmpeg_path} -rtsp_transport {$rtsp_transport} -probesize 32 {$timeout_opt} -i \"{$rtsp}\" -loglevel quiet";
if (isset($_REQUEST["c"])) {
$rtsp_lq = $ncrypt->decrypt($_REQUEST["c"]); // Ссылка на доп поток
if (substr($rtsp_lq, 0, 7) !== "rtsp://") die('RTSP URL (sub/second stream) is invalid!');
$ffmpeg_base_lq = "{$ffmpeg_path} -rtsp_transport {$rtsp_transport} -probesize 32 {$timeout_opt} -i \"{$rtsp_lq}\" -loglevel quiet";
}else {
$ffmpeg_base_lq = $ffmpeg_base;
}
switch ($_REQUEST["get"]) {
case "mp4":
disableBrowserCaching();
header('Content-type: video/mp4');
passthru("{$ffmpeg_base} -t {$duration_limit} -c copy -an -movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof -f mp4 pipe:");
break;
}
}
Таким образом я подгружаю поток - просто гет запросом элементом
<video id="videobox" controlsList="nodownload nofullscreen " autoplay muted playsinline preload="metadata" poster="player_loading.png">
<source src="?get=mp4&a='.$rtsp_url.'&c='.$rtsp_lq_url.'" type="video/mp4">
<p>Ваш браузер не поддерживает видео в формате MP4.</p>
</video>
Это работает для десктопных браузеров (опера, хром, яндекс), а так же для android устройств, но если открывать это под IOS (тестирую на iphone 14) - ни с одного браузера не проигрывается. До этого пробовал через библиотеку Video.js, и там была ошибка о невозможности воспроизвести поток. Я предполагаю, что дело в команде для ffmpeg, может кто-то сталкивался с подобным?
UPD:
Обнаружил, что при выполнении команды без "-f mp4 pipe:" passthru("{$ffmpeg_base} -t {$duration_limit} -c copy -an -movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof XXXXXXXX"); если вместо XXXXX выводить out.mp4, после чего открыть файл в браузере на IOS - файл прекрасно воспроизводится, проблема именно при выдаче потока -f mp4 pipe:
PHP задачи с собеседований
PHP FFMPEG - не работает поток RTSP на IOS
World! Этот код выполняет команду для ffmpeg на получение потока с камеры, копирует его и выводит в mp4.
if (isset($_REQUEST["get"])) {
header('Accept-Ranges:bytes');
header('Connection:keep-alive');
if (ffmpeg_getVersion()[0] >= 5) {$timeout_opt = "-timeout {$timeout}";}else {$timeout_opt = "-stimeout {$timeout}";}
$rtsp = $ncrypt->decrypt($_REQUEST["a"]); // Ссылка на основной поток
if (substr($rtsp, 0, 7) !== "rtsp://") die('RTSP URL is invalid!');
$ffmpeg_base = "{$ffmpeg_path} -rtsp_transport {$rtsp_transport} -probesize 32 {$timeout_opt} -i \"{$rtsp}\" -loglevel quiet";
if (isset($_REQUEST["c"])) {
$rtsp_lq = $ncrypt->decrypt($_REQUEST["c"]); // Ссылка на доп поток
if (substr($rtsp_lq, 0, 7) !== "rtsp://") die('RTSP URL (sub/second stream) is invalid!');
$ffmpeg_base_lq = "{$ffmpeg_path} -rtsp_transport {$rtsp_transport} -probesize 32 {$timeout_opt} -i \"{$rtsp_lq}\" -loglevel quiet";
}else {
$ffmpeg_base_lq = $ffmpeg_base;
}
switch ($_REQUEST["get"]) {
case "mp4":
disableBrowserCaching();
header('Content-type: video/mp4');
passthru("{$ffmpeg_base} -t {$duration_limit} -c copy -an -movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof -f mp4 pipe:");
break;
}
}
Таким образом я подгружаю поток - просто гет запросом элементом
<video id="videobox" controlsList="nodownload nofullscreen " autoplay muted playsinline preload="metadata" poster="player_loading.png">
<source src="?get=mp4&a='.$rtsp_url.'&c='.$rtsp_lq_url.'" type="video/mp4">
<p>Ваш браузер не поддерживает видео в формате MP4.</p>
</video>
Это работает для десктопных браузеров (опера, хром, яндекс), а так же для android устройств, но если открывать это под IOS (тестирую на iphone 14) - ни с одного браузера не проигрывается. До этого пробовал через библиотеку Video.js, и там была ошибка о невозможности воспроизвести поток. Я предполагаю, что дело в команде для ffmpeg, может кто-то сталкивался с подобным?
UPD:
Обнаружил, что при выполнении команды без "-f mp4 pipe:" passthru("{$ffmpeg_base} -t {$duration_limit} -c copy -an -movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof XXXXXXXX"); если вместо XXXXX выводить out.mp4, после чего открыть файл в браузере на IOS - файл прекрасно воспроизводится, проблема именно при выдаче потока -f mp4 pipe:
PHP задачи с собеседований
❓Вопрос от пользователя
Где хранить изображения для сайта
Товарищи, пытаюсь сделать сайт с поиском обоев на php и столкнулся с проблемой: я храню информацию о обоях в json файле, а само изображение в ссылке каждого объекта json, и не могу понять где хранить эти самые изображения, чтобы от туда я мог без проблем получать их url. Помогите советом.
Вот если что пример json:
Может пригодится.
PHP задачи с собеседований
Где хранить изображения для сайта
Товарищи, пытаюсь сделать сайт с поиском обоев на php и столкнулся с проблемой: я храню информацию о обоях в json файле, а само изображение в ссылке каждого объекта json, и не могу понять где хранить эти самые изображения, чтобы от туда я мог без проблем получать их url. Помогите советом.
Вот если что пример json:
{
"id": "00001",
"url":"url",
"tags": [
],
"author": "zoch",
"category": [
],
"uploadDate": "",
"resolution": [
],
"numDown": "",
"isFavorite": "none"
},
Может пригодится.
PHP задачи с собеседований
laravel ui auth login перенаправляет на другую страницу после входа и обратно
Мой проект лежит на гитхабе. Я его скачиваю на другую машину. Выполняю composer install, проект дополнен необходимыми файлами, запускаю php artisan serve.
На странице /login после входа (испльзуется стандартный auth/ui) должен перенаправлять на /home, но после перенаправления, судя по Inspect из хрома, он снова возвращается на страницу /login.
Идет login 302, home 302 и возврат на login с 200. В чем может быть дело?
При каждом обновлении страницы обновляется и сессия, может в этом дело. В настройках стоит время сессии 120, сессия использует файловую систему.
Laravel 10.29
Мой проект лежит на гитхабе. Я его скачиваю на другую машину. Выполняю composer install, проект дополнен необходимыми файлами, запускаю php artisan serve.
На странице /login после входа (испльзуется стандартный auth/ui) должен перенаправлять на /home, но после перенаправления, судя по Inspect из хрома, он снова возвращается на страницу /login.
Идет login 302, home 302 и возврат на login с 200. В чем может быть дело?
При каждом обновлении страницы обновляется и сессия, может в этом дело. В настройках стоит время сессии 120, сессия использует файловую систему.
Laravel 10.29
❓Вопрос от пользователя
Удаление товара YITH Wishlist
Возникла проблема в удалении товара из "Избранных" с помощью плагина YITH Wishlist
Файл content-product.php
Ругается на $found_item->get_id(), так как она не определена. Как ее получить? Спасибо!
PHP задачи с собеседований
Удаление товара YITH Wishlist
Возникла проблема в удалении товара из "Избранных" с помощью плагина YITH Wishlist
Файл content-product.php
<?php if(YITH_WCWL()->is_product_in_wishlist($product->get_ID())):?>
<a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'remove_from_wishlist', $product->get_ID(), $base_url ), 'remove_from_wishlist' ) ); ?>"
class="delete_item <?php echo esc_attr( $link_classes ); ?> card__favorite card__favorite_set"
data-item-id="<?php echo esc_attr( $found_item->get_id() ); ?>"
data-product-id="<?php echo esc_attr( $product_id ); ?>"
data-original-product-id="<?php echo esc_attr( $parent_product_id ); ?>"
data-title="<?php echo esc_attr( apply_filters( 'yith_wcwl_add_to_wishlist_title', $label ) ); ?>"
rel="nofollow">
<svg>
<use xlink:href="#icon-favorite"></use>
</svg>
</a>
<?php else: ?>
<a href="<?php echo esc_url( wp_nonce_url( add_query_arg( 'add_to_wishlist', $product->get_ID(), $base_url ), 'add_to_wishlist' ) ); ?>"
class="<?php echo esc_attr( $link_classes ); ?> card__favorite yith-wcwl-add-button"
data-product-id="<?php echo esc_attr( $product_id ); ?>"
data-product-type="<?php echo esc_attr( $product_type ); ?>"
data-original-product-id="<?php echo esc_attr( $parent_product_id ); ?>"
data-title="<?php echo esc_attr( apply_filters( 'yith_wcwl_add_to_wishlist_title', $label ) ); ?>"
rel="nofollow">
<svg>
<use xlink:href="#icon-favorite"></use>
</svg>
</a>
<?php endif; ?>
Ругается на $found_item->get_id(), так как она не определена. Как ее получить? Спасибо!
PHP задачи с собеседований
❓Вопрос от пользователя
Не работает AccessControl на самописные роли RBAC в фреймворке YII2
Совсем новичок в yii2, пишу свой первый сайт. Я написал RBAC контроллер, написал нужные роли, правила и разрешения. Возникла проблема на моменте создания поведения для User контроллера: в behaviors() добавил AccessControl и прописал нужные доступы. Однако фильтр не пропускает самописные роли (user, admin). Пожалуйста, подскажите в чём проблема? Спасибо!
Код RBAC контроллера:
class RbacController extends Controller
{
public function actionInit()
{
$authManager = \Yii::$app->authManager;
// Create roles
$guest = $authManager->createRole('guest');
$user = $authManager->createRole('user');
$admin = $authManager->createRole('admin');
// Create simple, based on action{$NAME} permissions
$signin = $authManager->createPermission('/user/signin');
$logout = $authManager->createPermission('/user/logout');
$signUp = $authManager->createPermission('/user/signup');
$index = $authManager->createPermission('/user/index');
$history = $authManager->createPermission('/user/history');
$profile = $authManager->createPermission('/user/profile');
$usersList = $authManager->createPermission('/user/userlist');
// Add permissions in Yii::$app->authManager
$authManager->add($signin);
$authManager->add($logout);
$authManager->add($signUp);
$authManager->add($index);
$authManager->add($history);
$authManager->add($profile);
$authManager->add($usersList);
// Add rule, based on UserExt->group === $user->group
$userGroupRule = new UserGroupRule();
$authManager->add($userGroupRule);
// Add rule "UserGroupRule" in roles
$guest->ruleName = $userGroupRule->name;
$user->ruleName = $userGroupRule->name;
$admin->ruleName = $userGroupRule->name;
// Add roles in Yii::$app->authManager
$authManager->add($guest);
$authManager->add($user);
$authManager->add($admin);
// Add permission-per-role in Yii::$app->authManager
// Guest
$authManager->addChild($guest, $signin);
$authManager->addChild($guest, $signUp);
$authManager->addChild($guest, $index);
// user
$authManager->addChild($user, $profile);
$authManager->addChild($user, $history);
$authManager->addChild($user, $guest);
// Admin
$authManager->addChild($admin, $usersList);
$authManager->addChild($admin, $user);
}
}
Код behaviors() User контроллера
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'denyCallback' => function() {
if(Yii::$app->user->isGuest)
return $this->redirect('signin');
throw new ForbiddenHttpException('У вас нет доступа к этой странице');
},
'only' => [],
'rules' => [
[
'allow' => true,
'actions' => ['signin', 'signup'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['logout', 'profile', 'history'],
'roles' => ['user'],
],
[
'allow' => true,
'actions' => ['userlist'],
'roles' => ['admin'],
]
],
],
];
}
Не работает AccessControl на самописные роли RBAC в фреймворке YII2
Совсем новичок в yii2, пишу свой первый сайт. Я написал RBAC контроллер, написал нужные роли, правила и разрешения. Возникла проблема на моменте создания поведения для User контроллера: в behaviors() добавил AccessControl и прописал нужные доступы. Однако фильтр не пропускает самописные роли (user, admin). Пожалуйста, подскажите в чём проблема? Спасибо!
Код RBAC контроллера:
class RbacController extends Controller
{
public function actionInit()
{
$authManager = \Yii::$app->authManager;
// Create roles
$guest = $authManager->createRole('guest');
$user = $authManager->createRole('user');
$admin = $authManager->createRole('admin');
// Create simple, based on action{$NAME} permissions
$signin = $authManager->createPermission('/user/signin');
$logout = $authManager->createPermission('/user/logout');
$signUp = $authManager->createPermission('/user/signup');
$index = $authManager->createPermission('/user/index');
$history = $authManager->createPermission('/user/history');
$profile = $authManager->createPermission('/user/profile');
$usersList = $authManager->createPermission('/user/userlist');
// Add permissions in Yii::$app->authManager
$authManager->add($signin);
$authManager->add($logout);
$authManager->add($signUp);
$authManager->add($index);
$authManager->add($history);
$authManager->add($profile);
$authManager->add($usersList);
// Add rule, based on UserExt->group === $user->group
$userGroupRule = new UserGroupRule();
$authManager->add($userGroupRule);
// Add rule "UserGroupRule" in roles
$guest->ruleName = $userGroupRule->name;
$user->ruleName = $userGroupRule->name;
$admin->ruleName = $userGroupRule->name;
// Add roles in Yii::$app->authManager
$authManager->add($guest);
$authManager->add($user);
$authManager->add($admin);
// Add permission-per-role in Yii::$app->authManager
// Guest
$authManager->addChild($guest, $signin);
$authManager->addChild($guest, $signUp);
$authManager->addChild($guest, $index);
// user
$authManager->addChild($user, $profile);
$authManager->addChild($user, $history);
$authManager->addChild($user, $guest);
// Admin
$authManager->addChild($admin, $usersList);
$authManager->addChild($admin, $user);
}
}
Код behaviors() User контроллера
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::class,
'denyCallback' => function() {
if(Yii::$app->user->isGuest)
return $this->redirect('signin');
throw new ForbiddenHttpException('У вас нет доступа к этой странице');
},
'only' => [],
'rules' => [
[
'allow' => true,
'actions' => ['signin', 'signup'],
'roles' => ['?'],
],
[
'allow' => true,
'actions' => ['logout', 'profile', 'history'],
'roles' => ['user'],
],
[
'allow' => true,
'actions' => ['userlist'],
'roles' => ['admin'],
]
],
],
];
}
Добраться до текущего соединения
Для реализации http-метода CONNECT мне надо переслать все дальнейшие данные этого соединения в другой сокет. Хотел прочитать из php://input, но там пусто, поскольку connect-запрос не имеет тела. Мне надо каким-то образом добраться до tcp-сокета текущего http-запроса и потоково читать данные из него. Как это сделать?
Для реализации http-метода CONNECT мне надо переслать все дальнейшие данные этого соединения в другой сокет. Хотел прочитать из php://input, но там пусто, поскольку connect-запрос не имеет тела. Мне надо каким-то образом добраться до tcp-сокета текущего http-запроса и потоково читать данные из него. Как это сделать?
Запрос MYSQL из цикла в 1 запрос. Как и стоит ли?
Есть код:
for ($i = 0; $i < count($array_tip); $i++) {
$sql = "SELECT * FROM reestr WHERE tip LIKE '%$array_tip[$i]%' ORDER BY date DESC LIMIT 1";
$res = $conn->query($sql);
$numb_rows = $res->num_rows;
if (!$res) {
echo 'Не удалось подключиться к базе планов!';
} else {
if ($numb_rows == '0') {
$dateValueLast = '0';
} else {
while ($row0 = $res->fetch_assoc()) {
$dateValueLast = $row0('date');
}
}
$lastDateTip[] = $dateValueLast;
}
}
Есть 5 типов (отделов), в цикле запрашивается максимальная дата для каждого. Например, для 1 отдела последней датой окажется 10 августа, для 2 отдела - 13 августа и т.п.
Как сделать этот запрос без цикла? Вложенные запросы не поддерживают LIMIT, поэтому запрос выдаёт все записи (MAX(date) не работает). Есть ли смысл объединить этот запрос в 1 для оптимизации и ускорения загрузки?
Есть код:
for ($i = 0; $i < count($array_tip); $i++) {
$sql = "SELECT * FROM reestr WHERE tip LIKE '%$array_tip[$i]%' ORDER BY date DESC LIMIT 1";
$res = $conn->query($sql);
$numb_rows = $res->num_rows;
if (!$res) {
echo 'Не удалось подключиться к базе планов!';
} else {
if ($numb_rows == '0') {
$dateValueLast = '0';
} else {
while ($row0 = $res->fetch_assoc()) {
$dateValueLast = $row0('date');
}
}
$lastDateTip[] = $dateValueLast;
}
}
Есть 5 типов (отделов), в цикле запрашивается максимальная дата для каждого. Например, для 1 отдела последней датой окажется 10 августа, для 2 отдела - 13 августа и т.п.
Как сделать этот запрос без цикла? Вложенные запросы не поддерживают LIMIT, поэтому запрос выдаёт все записи (MAX(date) не работает). Есть ли смысл объединить этот запрос в 1 для оптимизации и ускорения загрузки?
PHP Телеграм АПИ Получить посты с количеством просмотров
не могу никак найти информацию как получить посты и количество просмотров через PHP
Сейчас публикую посты с помощью CURL:
function sendTelegram($method, $response)
{
$ch = curl_init('https://api.telegram.org/bot' . TOKEN . '/' . $method);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
$resulttg = sendTelegram(
'sendPhoto',
array(
'chat_id' => $telegramchatid,
'caption' => $message,
'photo' => $photofortg,
'parse_mode' => 'HTML',
'reply_markup' => json_encode(array('inline_keyboard' => $keyboardtg))
)
);
тем самым я публикую фото с комментарием методом sendPhoto
не могу найти как обойти канал и просмотреть посты с количеством просмотров.
не могу никак найти информацию как получить посты и количество просмотров через PHP
Сейчас публикую посты с помощью CURL:
function sendTelegram($method, $response)
{
$ch = curl_init('https://api.telegram.org/bot' . TOKEN . '/' . $method);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
return $res;
}
$resulttg = sendTelegram(
'sendPhoto',
array(
'chat_id' => $telegramchatid,
'caption' => $message,
'photo' => $photofortg,
'parse_mode' => 'HTML',
'reply_markup' => json_encode(array('inline_keyboard' => $keyboardtg))
)
);
тем самым я публикую фото с комментарием методом sendPhoto
не могу найти как обойти канал и просмотреть посты с количеством просмотров.