PHP задачи с собеседований
3.05K subscribers
469 photos
6 videos
11 files
359 links
Задачи, тесты и теоретические вопросы по PHP.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
👨🏻‍💻Вопрос от пользователя

Как настроить файл .htpasswd и .htaccess для запуска проекта на openserver

Всем привет! У меня появилась проблема что я никогда не работал с проектом на php. Теперь мне надо сделать некоторые правки на проекте. Мне прислали проект и я запустил его на open-server. Но оказывается там есть файл .htaccess который не дает мне запустить.

PHP задачи с собеседований
Fatal error: Uncaught Error: Class "Endroid\QrCode\Builder\Builder

Отдает ошибку: Fatal error: Uncaught Error: Class "Endroid\QrCode\Builder\Builder" not found in

На локалке все работает, на сервере не хочет. Я думаю что psr-4, на локальном это есть в composer.json а на сервере нет. Но при добавлении и обновлении композера и очистки кеша, ничего не помогает.

Переустановил все пакеты, композер заново поставил вместе с psr-4 - результат тот же.

PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Передать строку запроса в PHP


Я только начал изучать php,html, js! есть php -->

$host='10.20.30.40';
$user='root';
$password='pass';
$database='db';

$conDB = new mysqli($host, $user, $password, $database);
$conDB->query("SET NAMES 'utf8'");
if (!$conDB) {
die('Не могу подключиться!');
}
if ($conDB) {
$query=$_POST['string_query'];//string_query сформирована js
$result = mysqli_query($conDB, $query);
$result= mysqli_fetch_all($result);
}


Возможно ли передать сюда строку запроса, сформированную на стороне клиента джаваскриптом,и получить ответ?

let string_query="SELECT * FROM `users` WHERE `id` > '5' AND `name` = 'Nik'";


//эта строка сформирована js//

п.с. создать универсальный пхп для запросов к разным таблицам с разными условиями! Ответом получать всегда массив! Спасибо!

PHP задачи с собеседований
Страница сайта выдает ошибку 500

Пишу сайт, который запускается на apache. Отладку сайта произвожу через встроенный в VS Code PHP built-in server. Все страницы сайта отображаются корректно как через встроенный в PHP сервер так и через Apache.

Все - кроме одной.

Использую маршрутизацию. Когда в поисковой строке указано localhost/view/calendar - то на PHP сервере все работает исправно, а на apache при попытке загрузить страницу получаю ошибку 500.

Проблема в том что когда я занимаюсь отладкой кода включается встроенный PHP сервер, на котором все работает и из-за этого я не могу посмотреть что в коде ломается при загрузке через apache.

Вопрос: Как установить в качестве сервера отладки - apache, чтобы можно было увидеть поломку???

P.S. Ubuntu 22.04

PHP задачи с собеседований
👨🏻‍💻Вопрос от пользователя

Выполнить код, если оператор if равен заданному числу


У меня есть 2 массив $arr1 $arr2 если рандом дает цифру 1 в цикле выполняется $arr1 если 2 то выполняется $arr2

$arr1 = [
[
'id' => 1,
'name' => 'Name',
'link1' => 'fb.com',
'link2' => 'vk.com',
'link3' => 'ok.ru'
],
[
'id' => 2,
'name' => 'Name',
'link1' => 'fb.com',
'link2' => 'vk.com',
'link3' => 'ok.ru'
]

];

$arr2 = [
[
'id' => 1,
'name' => 'Name',
'link1' => 'fb.com',
'link2' => 'vk.com',
'link3' => 'ok.ru'
],
[
'id' => 2,
'name' => 'Name',
'link1' => 'fb.com',
'link2' => 'vk.com',
'link3' => 'ok.ru'
]

];

shuffle($arr);

shuffle($arr2);

$rand = rand(1,2);

if($rand == 1) {

for($i = 0; $i < 2; $i++) {

echo $arr[$i]['name'].PHP_EOL;
echo $arr[$i]['id'].PHP_EOL;
echo $arr[$i]['link1'].PHP_EOL;
echo $arr[$i]['link2'].PHP_EOL;
#если итерпция 2 выполняется нужно добавлять еще один ключ 'link3' в итерации 2 будет 3 ссылки.
if($i = 2) {
echo $arr[$i]['link3'].PHP_EOL;
}
}
}

if($rand == 2) {

for($i = 0; $i < 2; $i++) {

echo $arr2[$i]['name'].PHP_EOL;
echo $arr2[$i]['id'].PHP_EOL;
echo $arr2[$i]['link1'].PHP_EOL;
echo $arr2[$i]['link2'].PHP_EOL;
#если итерпция 2 выполняется нужно добавлять еще один ключ 'link3' в итерации 2 будет 3 ссылки.
if($i = 2) {
echo $arr2[$i]['link3'].PHP_EOL;
}
}
}


в итерация 1 будет 2 ссылки 'link1' 'link2' в итерация 2 будет 3 ссылки 'link1' 'link2' 'link3'

Я нуб, просто эксприментирую. Спасибо за помощь.

PHP задачи с собеседований
👨🏻‍💻Почему у меня не отображается phpinfo в мною созданной папке (Linux)
Путь папки: /home/user/project/index.php В index.php:

<?php
phpinfo();


Права у папки: rwxr-xr-x Права у файла: -rw-r--r--

Указываю путь в /etc/apache2/sites-enabled/

ls => 000-default.conf


Путь: /home/user/project

Добавляю папку в конфиг apache2.conf
ps.Естественно я не забываю делать service apache2 restart после проделанных действий, и я получаю Forbiden 403.


PHP задачи с собеседований
Нужно сделать обновление данных на странице, которые подтягиваются с сокета и что бы обновление данных было раз в 1с

А еще лучше что бы раз в 20мс Использую Laravel в этом деле Код сокета.

public function index()
{
error_reporting(E_ALL ^ E_WARNING);
set_time_limit(0);
ob_implicit_flush();
date_default_timezone_set('Asia/Krasnoyarsk');



$address = '....';
$port = ....;

try {

echo 'Создание сокета ... ';
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "выполнено.\n";
}


echo 'Соединение с сокетом ... ';
$result = socket_connect($socket, $address, $port);
if ($result === false) {
throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
} else {
$connect = "Установлено";
}

echo 'Отправка данных: ';
$byteOut = socket_send($socket, chr(15), 1, 0);
if ($byteOut === false) {
echo " Ошибка.";
throw new Exception('socket_send() failed: '.socket_strerror(socket_last_error())."\n");
} else {
echo "отправлено ".$byteOut." байт.\n";
}

echo 'Приём данных: ';

$byte = socket_recv($socket, $in, 898, 0);
if ($byte === false) {
echo " Ошибка.";
throw new Exception('socket_recv() failed: '.socket_strerror(socket_last_error())."\n");
} else {

//переменные которые вытаскиваются с сокета
$id1 = unpack("S*", substr($in, 0, 34));
$id42 = unpack("S*", substr($in, 226, 2));
$id45 = unpack("S*", substr($in, 244, 2));
$id48 = unpack("S*", substr($in, 262, 2));
$id51 = unpack("S*", substr($in, 280, 6));
$id57 = unpack("S*", substr($in, 310, 8));
$id65 = unpack("S*", substr($in, 350, 8));
$id74 = unpack("S*", substr($in, 398, 10));

}
catch (Exception $e) {
echo "\nError: ".$e->getMessage();
}
if (isset($socket)) {
echo 'Close socket ... ';
socket_close($socket);
echo "OK\n";
}
}
}


html

<p class="m-1 quantity-details" >
<span>{{ $id42[1] }}</span>
</p>



PHP задачи с собеседований
👨🏻‍💻 Отобразить содержимое страницы по ссылке WordPress

Вот код

<?
$activeCity = do_shortcode( '[city]' ); // этот результат выдает плагин BelingoGeo
if($activeCity == "Москва") {
$link = get_field('main_p_moskow','options');
}
if($activeCity == "Санкт Петербург") {
$link = get_field('main_p_saint_p','options');
}
if($activeCity == "Иркутск") {
$link = get_field('main_p_irk','options');
}
?>


Зная ссылку на страницу определенного города мне нужно вывести ее содержимое. Как это можно сделать средствами WordPress?

PHP задачи с собеседований
👨🏻‍💻 Необходимо аждую секунду проверять, существует ли уже пользователь с таким логином

Есть страница регистрации. На ней должен работать программа, который каждую секунду берёт из формы данные, и обычным sql проверяет, существует ли уже юзер с такими же.

Как узнавать данные из формы?
Как делать это каждую секунду?
А может быть, лучше сделать js скрипт, который каждую секунду добавляет iframe с check.php?login=nnn?

PHP задачи с собеседований
Проверить если таблица существует mySQL PHP

Вот код PHP

<?
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
global $wpdb;
$serv = $wpdb->dbhost;
$user = $wpdb->dbuser;
$pass = $wpdb->dbpassword;
$name = $wpdb->dbname;
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli($serv, $user, $pass, $name);
$val = mysql_query("SHOW TABLES LIKE `linkName`");
if($val !== FALSE)
{
$sql = "SELECT link FROM linkName";
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<div id='linkTitle'>".$row["link"]."</div>";
}
}
}
$mysqli->close();
?>
Не работает эта строка


if($val !== FALSE)


Даже контент страницы не загружается после этого кода php. Нужно проверить если таблица linkName существует то выполнить следующий код

"SELECT link FROM linkName"


Где тут ошибка?

PHP задачи с собеседований
👨🏻‍💻 Не могу подключиться к базам данных


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

файлы: index.php:

<!DOCTYPE html>
<html xml:lang="ru" lang="ru">
<head>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE-edge">
<meta name="viewport" content="width-device-width? initial- scale-1.0">

<title>CSS</title>

<link rel="stylesheet" href="css/style.css" />
</head>

<body>

<header>
<section>
<form action="/php/register.php" method="post">
<label for="login">Логин</label><br>
<input type="txt" name="login" id="login"><br><br>
<label for="password">Пароль</label><br>
<input type="txt" name="password" id="password"><br><br>
<label for="email">E-mail</label><br>
<input type="txt" name="email" id="email"><br><br>
<button class="button-a">Зарегистрироваться</button>
</form>
</section>
</div>
</header>
</body>
</html>


register.php:

<?php

| require_once('db.php');
$login = $_POST['login'];
$password = $_POST['password'];
$email = $_POST['email'];

?>

db.php:

<?php

$servername = "localhost";
$username = "root";
$password = "";
$bdname = "users";

$conn = mysqli_connect($servername, $username, $password, $bdname);

if (!$conn){
due("Сonnection file". myesquel_connect_error());
} elso {
echo "Успех";
}
?>

может быть что то необходимо подключить, потому что делаю с 0.

PHP задачи с собеседований
Как внутри <?if (!isset($_COOKIE[сюда])){?> вставить php echo

Подскажите, как внутри <?if (!isset($_COOKIE[сюда надо вставить])){?> вставить вот такой код: <?php echo $this->href_to('karma_vote', $profile['id']); ?> Такая конструкция нужна для того, чтобы в $_COOKIE[] на каждой странце был уникальный код, который в другом месте этой страницы выводится с помощью <?php echo $this->href_to('karma_vote', $profile['id']); ?>. Если вставлять как есть - страница не открывается, ошибка 500. Наверное, решение на уровне азов PHP, но я как раз решил постигать их опытным путем и пока не могу сам найти рабочий способ.

PHP задачи с собеседований
Как можно редактировать или удалять сообщения без указания их id на странице?

Есть чат на чистом PHP и Js. У каждого сообщения в атрибутах указан id сообщения из бд. По нему я редактирую или удаляю сообщения. На сервер отправляется id сообщения. На сервере убеждаюсь, что это владелец сообщения, и что-то с ним делаю. Как можно это сделать без указания id сообщения на странице?

PHP задачи с собеседований
Не могу сделать два запроса одновременно в MySQL через php

Вот код

if(isset($_POST['name'])) {
$nameLink = $_POST['name'];
}
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
global $wpdb;
$serv = $wpdb->dbhost;
$user = $wpdb->dbuser;
$pass = $wpdb->dbpassword;
$name = $wpdb->dbname;
$conn = new mysqli($serv, $user, $pass, $name);
$sql = "CREATE TABLE linkName (link VARCHAR(30) NOT NULL)";
$sql .= "INSERT INTO linkName (link) VALUES (".$nameLink.")";
mysqli_close($conn);

Наверное не срабатывает эта строка

$sql .= "INSERT INTO linkName (link) VALUES (".$nameLink.")";

Не могу создать таблицу linkName и вторым действием записать значение $nameLink. Что тут не так?
PHP задачи с собеседований