is_user_logged_in
это какая-то странная константа. Подозреваю, что хотели вызвать функцию is_user_logged_in()
, но забыли скобкиforeach($ws_worker->connection as $connection) {
$connection->send("connect client");
}
$ws_connection = new AsyncTcpConnection('ws://ws.eodhistoricaldata.com/ws/crypto?api_token=demo');
Читал, что при использовании JOIN индексирование бесполезно
function russianDate(int $timestamp) {
list($year, $month, $day) = explode("-", date("Y-n-j", $timestamp));
$monthsHandbook = [
1 => "января",
2 => "февраля",
3 => "марта",
4 => "апреля",
5 => "мая",
6 => "июня",
7 => "июля",
8 => "августа",
9 => "сентября",
10 => "октября",
11 => "ноября",
12 => "декабря"
];
$monthName = $monthsHandbook[$month];
return "{$day} {$monthName} {$year} года";
}
> Надо как-то проверять маил ящики до отправки письма на почту и до добавления данных в бд, как это можно сделать?
/* Попытаемся сделать всё что нам надо*/
try {
$email = $request->getRequired("email"); // вытащим email из запроса
$validator->checkEmail($email); // сделаем базовую проверку на то что email корректный. Пример реализации ты как раз описал в вопросе
$password = $userComponent->generatePassword(); // сгенерируем пароль
$user = $userComponent->createUser($email, $password); // создадим пользователя, используя известные нам логин и пароль
$mailer->sendRegistrationEmail($user); // отошлём пользователю email c паролем
$response->setHeader(200); // укажем в ответе, что всё прошло успешно
/* Но в каждой строчке из блока try может пойти что-то не так. Надо предусмотреть это и обработать такие случаи */
} catch (MalformedRequestException) { // могут не передать email в запросе
$response->setHeader(400); // укажем в ответе, что именно пошло не так, выбрав правильный код ошибки
} catch (ValidationException) { // email может быть корявым. Ну, например "test1111"
$response->setHeader(422); // укажем в ответе, что именно пошло не так, выбрав правильный код ошибки
} catch (ComponentException $e) { // при попытке создать пользователя что-то может пойти не так
$logger->write("warning", "An error occurred during creation of the user.") // вообще, интересно бы узнать, что именно пошло не так, поэтому данную информацию надо залоггировать
$logger->writeExceptionInfo("debug", $e); // ... и максимально подробно. Чтобы при переключении системы в
$response->setHeader(500); // укажем в ответе, что именно пошло не так, выбрав правильный код ошибки
} catch (MailerException $e) { // при попытке отправить email что-то может пойти не так. ВОТ ОНО РАДИ ЧЕГО ВСЁ ЗАТЕВАЛОСЬ
$logger->write("warning", "Unable to send registration email to {$user->email}"); // первым делом залоггирем ошибку
$logger->writeExceptionInfo("debug", $e); // подробности ошибки тоже залоггируем
// раз отправить пароль не удалось, то регистрация не прошла успешно. И свежесозданного пользователя можно смело удалять. Можно использоватль для этого механизм транзакций, но этот пример у нас простой и такие сложности ни к чему
try { // да, в момент удаления тоже что-то может пойти не так, поэтому опять используем try...catch
$userComponent->deleteUser($user->id);
} catch(\Throwable $e) { // если не удалось удалить пользователя, то просто запишем информацию в лог
$userId = $user->id ?? "Not Specified";
$logger->write("warning", "Unable to delete user {$userId}" during rollback caused by MailerException);
$logger->writeExceptionInfo("debug", $e);
}
$response->setHeader(502); // укажем в ответе, что именно пошло не так, выбрав правильный код ошибки
}
$response->send(); // отошлём ответ пользователю
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'smtp.example.com'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = 'user@example.com'; //SMTP username
$mail->Password = 'secret'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
echo "<span style=\"color:#093;\">Заявка принята. Спасибо!</span><br /><br />";
echo "Вы можете отправить ещё одну заявку в <a href=\"http://www.dfl.org.ru/competitions/order/\">разделе \"Online-заявка\"</a>.";
exit();
}
}
//print_r($request);
if (empty($send)) {
$send = "";
}
if (empty($request)) {
$user = "";
}
if (($send == "yes") && ($request['tour'] == "0"))
echo "<span style=\"color:#f00;\">Вы не указали турнир, в котором желаете участвовать!</span><br />";
if (($send == "yes") && empty($request['team']))
echo "<span style=\"color:#f00;\">Вы не написали название команды!</span><br />";
if (($send == "yes") && ($request['year'] == "0"))
echo "<span style=\"color:#f00;\">Вы не указали год рождения игроков команды!</span><br />";
if (($send == "yes") && empty($request['city']))
echo "<span style=\"color:#f00;\">Вы не указали город!</span><br />";
if (($send == "yes") && empty($request['phone']))
echo "<span style=\"color:#f00;\">Вы не указали контактный телефон для связи с вами и подтверждения участия!</span><br />";
if (($send == "yes") && empty($request['name']))
echo "<span style=\"color:#f00;\">Вы не указали фамилию и имя контактного лица!</span><br />";
if (($send == "yes") && empty($request['email']))
echo "<span style=\"color:#f00;\">Вы не ввели контактный e-mail, чтобы мы с Вами связались!</span><br />";
SetEnvIf Origin ^(https?://.+\.mywebsite\.example(?::\d{1,5})?)$ CORS_ALLOW_ORIGIN=$1
Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN
Header merge Vary "Origin"
<div>Choose a browser from this list:</div>
<input list="countries" />
<datalist id="countries">
<option value="United States">
<option value="Canada">
<option value="Russian Federation">
<option value="Finland">
</datalist>
$numbers = [
123,
124,
125,
111,
222,
566,
777,
];
$shift = 0;
foreach ($numbers as $i=>$number) {
$digits = str_split((string)$number);
$first = $digits[0];
$same = true;
foreach ($digits as $digit) {
if ($digit !== $first) {
$same = false;
break;
}
}
if ($same) {
$shift++;
} else {
$numbers = array_merge(
array_slice($numbers, 0, $shift),
array_slice($numbers, $shift+1)
);
}
}
<?php
$numbers = [
123,
124,
125,
111,
222,
566,
777,
];
$numbers = array_filter($numbers, function($n){ $n = (string)$n; return $n[0] == $n[1] && $n[1] == $n[2];});
result = {}
info.forEach((team) => {
const country = team[0]
const sport = team[1]
const title = team[6]
const place = team[7]
const squad = team[8]
const peoples = team[9]
if (!result.hasOwnProperty(country)) {
result[country] = {}
}
if (sport === 'football') {
if (!result[country].hasOwnProperty('footballTeam')) {
result[country]['footballTeam'] = {}
if (!result[country]['footballTeam'].hasOwnProperty(title)) {
result[country]['footballTeam'][title] = {}
}
result[country]['footballTeam'][title]['place'] = place
result[country]['footballTeam'][title]['squad'] = squad
result[country]['footballTeam'][title]['peoples'] = peoples
}
}
})
function sumArrays(...$arrays) {
usort($arrays, fn($a, $b) => count($b) - count($a));
$biggest = $arrays[0];
$other = array_slice($arrays, 1);
$result = [];
foreach ($biggest as $rowIndex=>$row) {
$resultRow = [];
foreach ($row as $fieldIndex => $field) {
foreach ($other as $otherArray) {
if (array_key_exists($rowIndex, $otherArray)) {
$field += $otherArray[$rowIndex][$fieldIndex];
}
}
$resultRow[] = $field;
}
$result[] = $resultRow;
}
return $result;
}
var_dump(sumArrays($arr2, $arr3, $arr));
SELECT
magazin.id, -- укажи явно таблицу в выборке, потому что у тебя теперь есть две таблицы с полем id
magazin.name, -- укажи явно таблицу в выборке, потому что у тебя теперь есть две таблицы с полем name
gorod,
COUNT(otziv.id) AS 'quantity' -- добавь количество отзывов в выборку. Это не обязательно, работать будет и без этого шага
FROM
magazin
LEFT JOIN otziv ON (otziv.magaz_id = magazin.id) -- присоедини таблицу
WHERE
gorod=$gorods
GROUP BY
magazin.id -- добавь группировку
ORDER BY
COUNT(otziv.id) DESC -- поменяй сортировку
LIMIT
20