Ответы пользователя по тегу PHP
  • Почему ничего нет при подключении к БД?

    dklight
    @dklight
    php кодер - level 2.5
    после
    $connect_to_db = mysql_connect($db_host, $db_username, $db_password) or die("Could not connect: " . mysql_error());

    используя var_dump или print_r посмотрите, что в
    $connect_to_db

    Как подсказал Андрей Буров включите вывод ошибок
    ### in php.ini 
    error_reporting = E_ALL
    display_errors = On
    Ответ написан
    Комментировать
  • Как занести в БД дату последнего входа пользователя?

    dklight
    @dklight
    php кодер - level 2.5
    замените поле, в которое нужно занести дату на DATETIME. Пробуйте
    Ответ написан
    Комментировать
  • Почему не работает код php?

    dklight
    @dklight
    php кодер - level 2.5
    если же оставить эти строки , то записывается 0 либо $ad_id
    что тут не так??

    Код, это конечно хорошо, но что вы хотите то на выходе получить?
    Ответ написан
    Комментировать
  • DiDom php, как спарсить сайт?

    dklight
    @dklight
    php кодер - level 2.5
    Необходимо скачать файл сертификата и прописать его в php.ini
    посмотрите мой ответ тут

    ваш код использует file_get_contents, можно и с его помощью сделать, но придется прописать, например отключение проверки ssl.
    Ответ написан
    Комментировать
  • Как получить тег с двумя классами используя xpath?

    dklight
    @dklight Автор вопроса
    php кодер - level 2.5
    решение найдено:
    $product = $xpath->query('//div[contains(@class, "catalog-items-list")]/div[@class="item"]/div[contains(@class, "catalog-item-inner")]');
    Ответ написан
    Комментировать
  • Является ли такое использование вводимых данных безопасным?

    dklight
    @dklight
    php кодер - level 2.5
    Для начала надо посмотреть, действительно ли POST запрос пришел?
    if ($_SERVER['REQUEST_METHOD'] !== 'POST'{
       die('error');
    }


    Перебирать все содержимое глобального массива тоже не есть хорошо.
    Вместо foreach ($_POST as $key => $value){
    Должен быть у вас список нужных ключей, которые вы будете в дальнейшем использовать. Например, если проверяется только 1 поле и ключ его 'id', то можно использовать функцию array_key_exists или filter_has_var:
    if ($_SERVER['REQUEST_METHOD'] === 'POST'{
       if (array_key_exists('id',$_POST)){
          // очистка входной переменной
       
       }
    }

    также вы должно знать что за тип данных будет числиться под конкретным ключом входного массива, число, строка, массив и тд. Для их валидации можно использовать функцию filter_input:
    filter_input(INPUT_POST,'id', FILTER_SANITIZE_NUMBER_INT);

    либо простое приведение типов, если это число:
    $id = (int) $_POST['id'];
    $id = intval( $_POST['id']);

    либо регулярные выражения, например вот так:
    $id = 0; // значение по умолчанию
    if (!preg_match("/^[1-9]\d+{1,9}$/")){
       die('ошибка');
    }else{
       $id = $_POST['id'];

    В вашем случае, вы хотите немного сократить труды пользователя, чтобы он не вводил данные еще раз.
    для этого обычно используются функции htmlspecialchars, htmlentities. Можно также регулярными выражениями почистить, либо чем нибудь еще, вариантов много.

    Напоследок приведу функцию, которая применяется для защиты строк в yii2,

    function encode($content, $doubleEncode = true){
    return htmlspecialchars($content, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', $doubleEncode);
    }

    тогда ваш код примет вид:
    <input  type="text" name="firstname"  value="<?=encode($_POST['firstname']) ?>" required>
    Ответ написан
    Комментировать
  • Как побороть ошибку с file_get_contents failed to open stream: HTTP request failed! HTTP/1.0 400 - https youtube?

    dklight
    @dklight Автор вопроса
    php кодер - level 2.5
    вопрос решен, однако через file_get_contents не получилось, пришлось использовать fopen:
    $scu = $url . '?' . http_build_query($data);
    $opts = array('http' =>
        array(
            'method' => 'GET',
            'max_redirects' => '0',
            'ignore_errors' => '1',        
        )
        , 'ssl' => array(
    		'verify_peer' => true,
    		'cafile' => '/SRV/php721/extras/ssl/' . "cacert.pem",
    		'ciphers' => 'HIGH:TLSv1.2:TLSv1.1:TLSv1.0:!SSLv3:!SSLv2',
    		'CN_match' => $cn_match,
    		'disable_compression' => true,
    	)
    );
    
    $context = stream_context_create($opts);
    $stream = fopen($scu, 'r', false, $context);
    
    // информация о заголовках, а также
    // метаданные о потоке
    echo Debug::d(stream_get_meta_data($stream),'stream_get_meta_data($stream)');
    
    // актуальная информация по ссылке $url
    echo Debug::d(stream_get_contents($stream),'stream_get_contents($stream)');
    fclose($stream);
    Ответ написан
    2 комментария