Ответы пользователя по тегу PHP
  • Почему не удаётся запустить imagick на php 8.2, 8.3?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Попробуйте перекинуть сборку на чистую систему и перед запуском настройте одну из свежих версий. Должно работать. Ссылка, которая в вопросе на imagick указана, актуальна (ставил).

    так она стоит и работает отлично (в вопросе написано).


    Как вариант можно переименовать/удалить папки ранее используемых версий php ибо:

    PHP 8.1. вообще не захотела работать, как ни крутил


    какой-то конфликт между версиями есть, если 8.1 вовсе не стартовала...

    Ну и в переменных средах лучше по убирать все от прежних версий, если осталось.
    Железо, на всякий, тоже ребутните.
    Ответ написан
    1 комментарий
  • Как передать данные из contact form 7 через get запрос?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    отправляем на некий домен ($Domain_adress) поле name из формы ($post_name)
    $my_protection_string="blablabla";
    $sha1_hash=hash('sha1','my_super_request&'.$post_name.'&'.$my_protection_string);
    $paramsArray=array('sha1_hash'=>$sha1_hash,'post_name'=>$post_name,'notification_type'=>'my_super_request' );
    $vars=http_build_query($paramsArray);
    $options=array(
    	'http'=>array(
    		'method'=>'POST',
    		'header'=>'Content-type:application/x-www-form-urlencoded',
    		'user_agent'=>'Chain of requests from my server',
    		'content'=>$vars,));
    $context=stream_context_create($options);
    $result=file_get_contents($Domain_adress,false,$context);
    //если через 'method'=>'GET', тогда добавляем в ссылку get параметры:
    //$result=file_get_contents($Domain_adress.'?'.$vars,false,$context);
    //а в коде ниже меняем везде $_POST на $_GET


    на другой стороне проверяем наличие ключей хешируем с тем же секретным ключом $my_protection_string и сверям полученный хеш. если все окей обрабатываем полученные данные как было задумано

    $my_protection_string="blablabla";
    if(isset($_POST['notification_type'])&&$_POST['notification_type']=='my_super_request'&&isset($_POST['sha1_hash'])&&isset($_POST['post_name'])){
    $chek_hash=hash('sha1',$_POST['notification_type'].'&'.$_POST['post_name'].'&'.$my_protection_string);
    	if($_POST['sha1_hash']==$chek_hash){
    		//проверка пройдена обрабатываем полученные данные как было задумано
    	}
    }


    з.ы код примерный (не проверял)... на работе нет возможности
    Ответ написан
  • Как вывести описание для двух и более методов оплаты?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    $title = ($gateway->id=='enot') ? 'Описание-1.' : ( ($gateway->id=='Not enot') ? 'Описание-2' : 'Описание-3');
    //
    $title = ($gateway->id=='enot') ? 'Описание-1.' : ( ($gateway->id=='Not enot') ? 'Описание-2' : ( ($gateway->id=='Bla-Bla') ? 'Описание-3' : 'Описание-4' ) );
    Ответ написан
    Комментировать
  • Почему не обновляет метаданные пользователя через форму на сайте?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    1. не работает update_user_meta т.к. в строке выше ошибка - нету символа конца строки (точка с запятой)
    2. обновление по Вашей логике происходит после вывода на экран формы. (update_user_meta после тага form). а это значит, что если изначально мета пустое, то и поле будет пустое. что бы данные появились надо после внесения изменений обновить страницу, но у Вас проблема из первого пункта. Если мета изначально не пустое, то после отправки новых данных будет отображаться старое значение пока не обновите страницу.... лучше обрабатывать данные перед тегом form

    что-то по типу


    проверил - работает

    function update_basic_user_meta(){
    		global $current_user;
    		$communication_meta=!empty($_POST['communication_email'])?$_POST['communication_email']:'';
    		if(!empty($communication_meta)){update_user_meta($current_user->ID,'communication_email',sanitize_text_field($communication_meta));}
    		$communication_email=get_user_meta($current_user->ID,'communication_email',true);?>
    <form action="" method="POST" class="">
        <input type="text" id="communicationEmail" name="communication_email" class="" value="<?php echo !empty($communication_email)?$communication_email:''; ?>">
        <button class="" type="submit">Сохранять</button>
    </form><?php }
    update_basic_user_meta();

    Ответ написан