class SoapController extends Controller
{
/** @var \Artisaninweb\SoapWrapper\SoapWrapper */
protected $soap;
/** @var \Artisaninweb\SoapWrapper\Client */
protected $client;
public function __construct(SoapWrapper $soap)
{
$this->soap = $soap;
$this->client = null;
}
public function getComputers()
{
try {
$clientId = request()->get('clientId', 0);
$orgId = request()->get('orgId', 0);
$this->initSoap();
$response = $this->client->call('GetComps', [
[
'ClientId' => $clientId,
'OrgId' => $orgId,
],
]);
$computers = json_decode($response->GetCompsResult, true);
return response()->json($computers, 200);
} catch (\Throwable $e) {
return response()->json([
'message' => $e->getMessage(),
], 500);
}
}
/**
* @throws \Exception
*/
protected function initSoap()
{
$clientName = 'some_name';
$wsdl = config('app.soap_wsdl');
if (!$wsdl) throw new \Exception('Invalid wsdl');
$version = $this->getSoapVersion();
$this->soap->add($clientName, function (SoapService $service) use ($wsdl, $version) {
$service
->wsdl($wsdl)
->options(['soap_version' => $version]);
});
$this->client = $this->soap->client($clientName, function ($client) { return $client; });
}
/**
* @return int
* @throws \Exception
*/
protected function getSoapVersion()
{
switch (config('app.soap_version')) {
case '1.1':
return SOAP_1_1;
case '1.2':
return SOAP_1_2;
default:
throw new \Exception('Invalid SOAP version');
}
}
}
use App\Models\Route;
use App\Controllers\TestController;
return [
new Route('/test/uri', TestController::class, 'testFunc')
];
new $elem->controller
, то получается new TestController
, без неймспейса.::class
содержит полное имя класса в виде строки.new \App\Controllers\TestController
return [
new Route('/test/uri', '\\App\\Controllers\\TestController', 'testFunc')
];
$b = new B;
$b->show(); // true
A::noConstraints(function() use($b) {
$b->show(); // false
});
пароль htmlspecialchars для перестраховки
минимальную фильтрацию где это необходимо
разрешить в логин и имя только a-zа-яё0-9
Этот пользователь уже заблокирован
$alreadyBlocked = 'name1|||name2|||name3|||';
$array = explode('|||', $alreadyBlocked);
$utc = $_POST['username'];
if ( in_array($utc, $array) ) {
// Пользователь уже заблокирован
}
foreach ($array as $name){ // разбираю
if($name === $utc){ // пробую так, но почему-то проверяется только первое имя из массива $array то есть только
name1, остальные будто игнорятся
echo json_encode(['error' => 'Этот пользователь уже заблокирован'], JSON_UNESCAPED_UNICODE);
-exit;
+//exit;
}
...
}
$data = [1,2,3,4,5,6,7,8,9];
$perPage = 2;
$page = $_GET['page'] ?? 1;
$count = $page * $perPage;
$display = array_slice($data, 0, $count);
foreach ($display as $item) {
echo '<div>'.$item.'</div>';
}
echo '<a href="index.php?page='.($page+1).'">Показать ещё</a>';
$login = $_POST['login'];
$hash = password_hash($_POST['password']);
$login = $_POST['login'];
$password = $_POST['password']; // не хешируем
SELECT * FROM users WHERE login = '$login'
if (password_verify($password, $hash_from_db)) {
// пользователь аутентифицирован
} else {
// пара логин/пароль неверная
}
из-за того, что открывающий тег <?php связывается не с закрывающим тегом ?>, а со знаком >,
public function getThumbnail($photo, $type = 'medium')
{
$p = pathinfo($photo);
return $p['dirname'].'/'.$type.'-'.$p['basename'];
}
echo getThumbnail('public/users/avatar.webp'); // public/users/medium-avatar.webp
echo getThumbnail('public/users/avatar.webp', 'crop'); // public/users/crop-avatar.webp