Ответы пользователя по тегу PHP
  • Почему работает GET, но не работает POST?

    @Vitsliputsli
    попробуйте поискать в выводе var_dump(file_get_contents("php://input"))
    Ответ написан
    Комментировать
  • Почему не записывается текст в файл в связке JS + PHP?

    @Vitsliputsli
    Код php работает, он странный, он будет терять данные, если придет несколько одновременных запросов, но более-менее работает.
    На стороне клиента отправляйте через ajax (наверное jquery используете?), тогда все что нужно будет:
    <button onclick="$.get('/counter.php',{add:1})">button</button>
    Ответ написан
    Комментировать
  • Почему Ajax форма отправляет положительный ответ но не отправляет письмо на почту?

    @Vitsliputsli
    Учтите, что
    error: function(response) {
                alert(response); // ошибка
                }

    это обработчик ошибок при работе ajax, т.е. больше сетевая ошибка, или если DataType не соответствует передаваемым данным, с ошибкой отработки логики в php не связано.
    Т.е. даже неудачная отправка почты в php придет в success. Сделайте вывод полученного ответа от сервера в консоль отладки, или просто посмотрите его во вкладке Network инструментов разработчика в браузере.
    У вас ajax ничего не отправляет, используйте параметр data для отправки данных на сервер.
    Ответ написан
    Комментировать
  • Не отправляет форму в телеграм?

    @Vitsliputsli
    Вероятно эти незаполненные поля обязательны в API Телеграма. Если это допустимо в API передавайте их в ваш код пустыми. Или измените код на этот:
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    	$args = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
    	if (!empty($args['name'])){
    		$arr = [
    			"Имя пославшего: "=>$args['name'],
    			"Тема: "=>!empty($args['theme']) ? $args['theme'] : '',
    			"Тема - 2: "=>!empty($args['theme2']) ? $args['theme2'] : '',
    			"Почта: "=>!empty($args['mail']) ? $args['mail'] : '',
    			"Скайп или вайбер: "=>!empty($args['sk_viber']) ? $args['sk_viber'] : '',
    			"Название проекта: "=>!empty($args['name_project']) ? $args['name_project'] : '',
    			"Ссылка на сайт: "=>!empty($args['link__site']) ? $args['link__site'] : '',
    			"Характеристика товара: "=>!empty($args['kharakter_tovar']) ? $args['kharakter_tovar'] : '',
    			"Кол-во комментариев: "=>!empty($args['kolvo_komponent']) ? $args['kolvo_komponent'] : '',
    			"География доноров: "=>!empty($args['geography_donor']) ? $args['geography_donor'] : '',
    			"Аудитория: "=>!empty($args['auditoriya']) ? $args['auditoriya'] : '',
    			"Сообщение: "=>!empty($args['msg']) ? $args['msg'] : '',
    		];
    		$token = "XXXXXXXXXXXXXXXXXXXXXXX";
    		$chat_id = "xxxxxxx";
    		$txt="";
    		foreach($arr as $key => $value) {
    		  $txt .= "<b>".$key."</b> ".$value."%0A";
    		};
    		$sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");
    		if ($sendToTelegram) {
    			echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
    			return true;
    		} else {
    			echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
    		}
    	} else {
    		echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
    	}
    } else {
    	header ("Location: /");
    }
    Ответ написан
    1 комментарий
  • Как сделать мультиязычность сайта?

    @Vitsliputsli
    А готовые решения не нашли?
    В любом случае, этот кусок будет лучше работать в таком виде:
    if (empty($_SESSION['lang'])) {
    	preg_match('/^\w{2}/',$_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
    	switch (strtolower($matches[0])){
    		case "ru": 
    			$_SESSION['lang']="ru";
    			break;
    		case "en": 
    		case "uk": 
    		case "us": 
    		default: 
    			$_SESSION['lang']="en";
    			break;
    	}
    }
    require_once './lang/' . $_SESSION['lang'] . '.php';
    Ответ написан
    1 комментарий
  • Как исправить 2 ошибки "Undefined offset" и "Only variables" в коде?

    @Vitsliputsli
    "PHP Notice: Only variables should be passed by reference in /var/www/mysite/data/www/mysite.io/core/Classes/Lang.php on line 90"
    $lang = array_shift(explode(',', $raw))
    исправьте на
    $array=explode(',', $raw);
    $lang = array_shift($array);
    Дело в том, что array_shift не только возвращает элемент массива, но и изменяет оригинальный массив, поэтому данные в эту функцию нужно передавать по ссылке, а если вы не объявляли переменную, то будет передано значение, а не ссылка.

    PHP Notice: Undefined offset: 1 in /var/www/mysite/data/www/mysite.io/core/Classes/Router.php on line 29, referer: mysite.io/en/
    list($lang, $requestUrl) = explode('/', $root, 2);
    Проверяете массив $root, вероятно после explode он имеет только один элемент, а необходио 2.
    Пройдите это место дебаггером, и все сразу станет понятно.
    Ответ написан
    8 комментариев
  • PHP - PHPQuery код - который вернет поле с HTML страницы JS товара?

    @Vitsliputsli
    PHP тут совсем не при чем, вы же сами пишите, что нужно чтобы отработал javascript на странице, используйте решения исполняющие javascript: Selenium, PhantomJS или что-то вроде этого.
    Либо, возьмите запрос, который делает ajax, отправляйте его из PHP и обрабатывайте ответ.
    Ответ написан
    Комментировать
  • Как обновить часть информации из базы данных на странице не перезагружая ее?

    @Vitsliputsli
    Как минимум, вы ничего не делаете с данными пришедшими через Ajax.
    success: function(data) {
    console.log(data);
    }})
    Это выведет полученные данные в отладочные консоль браузера и только. Кстати, воспользуйтесь ей и увидите ответ сервера
    Ответ написан
    Комментировать