<?php
$url = 'http://192.168.1.8/cgi-bin/mjpg/video.cgi?channel=1&subtype=1';
// Функция для digest-авторизации
function digest_parse($txt)
{
$needed_parts = array('nonce'=>1, 'realm'=>1, 'qop'=>1);
$data = array();
$keys = implode('|', array_keys($needed_parts));
preg_match_all('@('.$keys.')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);
foreach ($matches as $m) {
$data[$m[1]] = $m[3] ? $m[3] : $m[4];
unset($needed_parts[$m[1]]);
}
return $needed_parts ? false : $data;
}
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
// получения заголовков www-Authenticate
$response = curl_exec($ch);
// разбор заголовк а WWW-Authenticate
if (preg_match('/^WWW-Authenticate: Digest (.*)$/im', $response, $matches)) {
$digest_parts = digest_parse($matches[1]);
// Создание заголовка Authorization
// Здесь также надо сгенерить правильный ответ на основе полученных данных и вашего логина и пароля
// наподобие этого
$digest_response = ''; // ответ
// Установка опций для cURL с заголовком Authorization
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Digest username="adminka", realm="'.$digest_parts['realm'].'", nonce="'.$digest_parts['nonce'].'", uri="/cgi-bin/mjpg/video.cgi?channel=1&subtype=1", response="'.$digest_response.'", qop='.$digest_parts['qop'].', nc=00000001, cnonce="d41d8cd98f00b204e9800998ecf8427e"'));
}
// Удаление предыдущих заголовков
curl_setopt($ch, CURLOPT_HEADER, 0);
// Передача потока клиенту
curl_exec($ch);
curl_close($ch);
?>
<img src="вашскрипт.php" width="720" height="480">
sudo chown -R www-data:имя_пользователя /home/dkfire/code/php/dkfire
sudo chmod -R 755 /home/dkfire/code/php/dkfire
$sql = "UPDATE `list`
SET count1 = CASE WHEN id = ? AND ? = 1 THEN count1 - ? ELSE count1 END,
count2 = CASE WHEN id = ? AND ? = 2 THEN count2 - ? ELSE count2 END,
count3 = CASE WHEN id = ? AND ? = 3 THEN count3 - ? ELSE count3 END
WHERE id = ?";
$stmt = $conn->prepare($sql);
foreach ($data as $id => $value) {
$idParts = explode("-", $id);
$count = $value['count'];
$stmt->execute([$idParts[0], $idParts[1], $count, $idParts[0], $idParts[1], $count, $idParts[0], $idParts[1], $count, $idParts[0]]);
}
function replaceHashtagsWithLinks(html) {
// Регулярное выражение для поиска хештегов
const hashtagRegex = /(?<!\<code\>|\<pre\>)#\w+/g;
// Функция для замены найденных хештегов на ссылки
function replaceHashtagWithLink(match) {
const hashtag = match.substring(1); // Убираем # из хештега
return `<a href="https://example.com/hashtag/${hashtag}">${match}</a>`;
}
// Заменяем хештеги на ссылки
const replacedHtml = html.replace(hashtagRegex, replaceHashtagWithLink);
return replacedHtml;
}
const processedHtml = replaceHashtagsWithLinks(html);
console.log(processedHtml);
<p>Это #хэштег в тексте, а это <code>#код</code>.</p>
<pre>#Это тоже код</pre>
<p>Другой #тег и другая жизнь</p>
<?php
$url = 'http://my-ip/cgi-bin/eventManager.cgi?action=attach&codes=[All]&heartbeat=5';
$context = stream_context_create([
'http' => [
'method' => 'GET',
'header' => 'Connection: close\r\n'
]
]);
$resource = fopen($url, 'r', false, $context);
while (!feof($resource)) {
$line = fgets($resource);
if (strpos($line, '--myboundary') !== false) {
// Начало нового ответа
$response = '';
while (!feof($resource)) {
$line = fgets($resource);
if (strpos($line, '--myboundary') !== false) {
// Конец ответа
break;
}
$response .= $line;
}
// Обработка ответа
echo $response;
}
}
fclose($resource);
?>
public function user_exist($email){
$sql = "SELECT email FROM users WHERE email = :email";
$stmt = $this->conn->prepare($sql);
$stmt->execute(['email'=>$email]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result ? true : false;
}
// Новый юзер
public function register($name, $email, $password){
$sql = "INSERT INTO users (name, email, password) VALUES (:name, :email, :pass)";
$stmt = $this->conn->prepare($sql);
$stmt->execute(['name'=>$name, 'email'=>$email, 'pass'=>$password]);
return $stmt->rowCount() > 0;
}
$arr = file("reviews.dat");
$res = array_slice($arr, 0, 2);
foreach ($res as $str) {
echo $str;
}
$arr = file("reviews.dat");
$arr = array_reverse($arr);
$res = array_slice($arr, 0, 2);
foreach ($res as $str) {
echo $str;
}
var maps = [];
var placemarks = [];
let coordListMap2 = document.getElementsByClassName("contacts-title")
for(let i = 0; i < coordListMap2.length; i++) {
(function(i) {
ymaps.ready(function(){
var mapId = 'map' + coordListMap2[i].dataset.id;
maps[i] = new ymaps.Map (mapId, {
center: [coordListMap2[i].dataset.coord],
zoom: 10
});
placemarks[i] = new ymaps.Placemark([coordListMap2[i].dataset.coord], {
iconContent: 'Москва',
balloonContent: 'Столица России'
}, {
preset: 'twirl#blueStretchyIcon'
});
});
})(i);
}
export default {
data() {
return {
isModalAddVisible: false,
activeId: null,
};
},
watch: {
isModalAddVisible(newValue) {
if (newValue || this.activeId) {
document.body.style.overflow = 'hidden';
} else {
document.body.style.overflow = 'auto';
}
},
activeId(newValue) {
if (this.isModalAddVisible || newValue) {
document.body.style.overflow = 'hidden';
} else {
document.body.style.overflow = 'auto';
}
},
},
};
function check_mobile_device() {
$mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
foreach ($mobile_agent_array as $value) {
if (strpos($agent, $value) !== false) return true;
}
return false;
}
if (check_mobile_device()) {...}