Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
на С++ намного проще - объявили переменную какого-то класса и проверяем нул она или нет, а тут надо извращаться

писали на c++ клиент-серверные приложения? это тоже самое. видео посмотрите, там подробно все

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 10:56 14-10-2017
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
Спасибо за видик.
Если Вас не затруднит,чтобы не засорять топик - ответьте в ПМ в нескольких словах,в чем тогда смысл и задачи пхп - если тупо генерировать страницы - не проще взять Ангулар и делать все на клиенте. Cоздать базу можно и в phpMyAdmin.
Заранее благодарен за ответ

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 11:25 14-10-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
не проще взять Ангулар и делать все на клиенте

Нет, когда вам нужно работать с динамической информацией, одинаковой для разных посетителей - то есть сохраняемой и изменяемой на сервере. К тому же очень минимальный js контент индексируется поисковиками.
Ну создадите вы базу, а как будете информацию в ангуляре получать/сохранять?
 
Ну и серверные языки позволяют избегать многих ограниченний наложенных на браузерные скрипты.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 11:30 14-10-2017 | Исправлено: Mavrikii, 11:35 14-10-2017
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mavrikii
У меня есть, возможно плохая черта, сначала задавать вопрос а потом искать уже готовую инфу, просто приятно пообщаться с умными людьми, и зачастую в статьях много лишнего,не имееющего отношения к моей конкретной проблеме. По Вашей ссылки на видик перешел на статью и там все прекрасно описано зачем нужен пхп.
И еще один вопрос - в умной книге написано, что html разметку лучше не выносить за теги <?php..?>
Какова правильная/более удобная организация пхп файла?

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 12:05 14-10-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
Какова правильная/более удобная организация пхп файла?  

Как удобно и понятно вам. Для серьезных проектов лучше использовать MVC фреймворки.
 
Добавлено:

Цитата:
там все прекрасно описано

Не все правильно и точно

Цитата:
В этом случае веб-сервер, дойдя до открывающего тэга PHP (<?php) передаст управление PHP-интерпретатору. После же закрытия блока PHP-кода (?>) интерпретатор PHP прекращает свою работу.

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

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 12:08 14-10-2017
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
MVC фреймворки

В сети много сравнительных обзоров что лучше, а какой Вы посоветуете?

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 15:53 14-10-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol

Цитата:
какой Вы посоветуете

Пока никакой - разберитесь с основами php, html, js, иначе совсем запутаетесь.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 19:04 14-10-2017
Tarkas

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А для того чтобы разобраться с основами php, html, css, js лучше создайте например сайт-визитку (причем лучше всего, как мне кажется, для понимания этих технологий использовать cms modx revolution).

Всего записей: 11 | Зарегистр. 05-11-2018 | Отправлено: 18:09 15-11-2018
spidometrs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, всех!
 
Есть контент, который набирается в редакторе, пишется в базу и выглядит в итоге так:
 
<p>
    Продается <a href="https://site.com">мотик</a> не <strong>битый</strong> не крашеный.
</p>
<p>
    https://site.com/index.php/2.html
</p>
 
То есть перенос строки осуществляется с помощью парного тега p.
 
$goods_body - переменная, контента из базы, которая содержит этот контент.
 
Есть код, который обрабатывает вывод:
preg_replace('/(?:<|&lt;).*?(?:>|&gt;)/', '', $goods_body)
 
Хочу получить контент без html тегов, без https:// и без http:// с переносом строки.
 
В итоге я получаю контент без html тегов, с https:// в тексте, переноса строки конечно нет, а два предложения склеенные после точки первого предложения:
 
Продается мотик не битый не крашеный.https://site.com/index.php/2.html
 
Нужно как-то убирая теги </p> вместо его вставлять <br/>, убрать из текста https://, и склеивать site.com в sitecom
 
PHP7.2
 
Может кто такое осилить?

Всего записей: 101 | Зарегистр. 10-01-2008 | Отправлено: 14:24 01-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spidometrs

Цитата:
Нужно как-то

пример конечный покажите, не словами.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:49 01-05-2019
spidometrs

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Должно получиться так:
 
Продается мотик не битый не крашеный.
sitecom/index.php/2.html  
 
Второй вариант:
 
Продается мотик не битый не крашеный.
sitecom/indexphp/2html
 
Но не понимаю, как отличать текст, в которых должны быть точки в конце предложений и как убирать точки в ссылках.
 
Ещё хороший вариант:
Продается мотик не битый не крашеный.
sitecom
 
как-то распознавать ссылку и резать её.
 
Так лучший вариант, самый предпочтительный, вообще убивать ссылки в тексте, даже если они хитрые и не имеют http или https:
 
Продается мотик не битый не крашеный.
 
 
В последнем варианте, на примере, нет второй строки для переноса. Но если будет текст, а не ссылка, то должен быть перенос строки.
 
Например так должно получиться:
 
Продается мотик не битый не крашеный.
Есть запасное сиденье.

Всего записей: 101 | Зарегистр. 10-01-2008 | Отправлено: 15:20 02-05-2019 | Исправлено: spidometrs, 15:33 02-05-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
spidometrs

Цитата:
Так лучший вариант, самый предпочтительный, вообще убивать ссылки в тексте,

это и еще проще.
 

Код:
<?php
$str =<<<TEXT
<p>  
    Продается <a href="https://site.com">мотик</a> не <strong>битый</strong> не крашеный.  
</p>  
<p>  
    https://site.com/index.php/2.html  
    Строка 2
</p>
TEXT;
 
$str = strip_tags($str);
$str = preg_replace('#https?:[^\s]+#i', '', $str);
$str = preg_replace('#^\s+|\s+$#m', '', $str);
echo $str;

 
будет плохо работать, если в ссылке есть пробел. можно будет поправить, если ссылка целиком занимает строку без нужного текста на ней.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:35 03-05-2019 | Исправлено: Mavrikii, 02:54 03-05-2019
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, помогите заставить код работать. Суть следующая - на странице в цикле выводятся данные, их нужно обновлять у клиента динамически при изменении на сервере, тут для простоты примера использую date() .

Код:
 
<?php $datas = [0,1]; ?>
 
<?php foreach ($datas as $data): ?>
    <?php $time = date('H:i:s'); ?>
    <?php Pjax::begin(); ?>
    <?= Html::a("Обновить", ['site/index'], ['class' => 'btn btn-lg btn-primary', 'id' => 'refreshButton'.$data]) ?>
    <h1>Сейчас: <?= $time ?></h1>
    <?php Pjax::end(); ?>
<?php
$script.$data = <<< JS
$(document).ready(function() {
    setInterval(function(){ $("#refreshButton$data").click(); }, 1000);
});
JS;
$this->registerJs($script.$data);
?>
<?php endforeach; ?>
 

Это Yii2, можно и без примочек Yii - лишь бы работало, но сейчас работает только таймер с $data[1] - нижний.
 
Добавлено:
При нажатии кнопки все работает, но как бы сделать без кнопок?

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 16:32 10-09-2019 | Исправлено: Kaber, 16:33 10-09-2019
taba555



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу разобраться! Прошу помощи!
 
В корне сайта создал 2 текстовых документа (txt) с названиями ip.txt и codes.txt
В файл ip.txt будут записываться ip пользователей которые нажали на кнопку получить ключ.
В файле codes.txt вы должны вписать ключи steam (или ещё что нибудь) которые будут отображаться пользователям которые нажали на кнопку "Получить ключ". и ключи после выдачи будут автоматически удаляться и файла codes.txt.
 
 
 
Создал файл в корне сайта key-generation.php
 
В нем:
 
<?php
function key_generation()
{
$ip=$_SERVER['REMOTE_ADDR']; // Получаем IP
$file=file_get_contents('ip.txt'); // Файл с IP
$row_number = 0;    // Первая строка файла с кодами
$file_out = file("codes.txt"); // Файл с кодами
$f = fopen("ip.txt", "a"); // Открываем файл с IP
if(strstr($file,$ip)) // Проверяем наличие IP в файле
{
echo '<center><h2> оставь другим</h2>'; // Выводим если айпи есть
}
else // Если нет то...
{
echo "<center><h2>$file_out[$row_number]</h2>" ; // Отображаем код
unset($file_out[$row_number]); // Удаляем отображенный код
}
file_put_contents("codes.txt", implode("", $file_out)); // Перезаписываем остатки
fputs($f, $_SERVER["REMOTE_ADDR"].PHP_EOL); //Записываем IP в файл
if($GLOBALS['game_profile'] == 'minecraft')
fclose($f);
}
?>
 
------------------------------------------------------------------------------------------------
Потом страницу  
в ней:
 
[head=title]Получить ключ[/head]
[status=waiting]
 
<style>
   .outline {
    border: 2px solid #f05f40;
    padding: 0 10px;
    height: 55px;
    width: 300px;
   }
  </style>
 
    
    <center><div class="progress_text">
        
[status=obtaining]
    {tasks}<br>{settings-profile}<br>
    <center><form method="post"><input type="submit" name="keys" class="button_r" value="Получить ключ" /></form>
[/status]
 
-------------------------------------------------------------------------------------------------------
 
В файл functions.php добавил строку
 
// *** Генерация ключа *** //
{
    include 'key-generation.php';
}
?>
 
 

Всего записей: 9 | Зарегистр. 09-07-2015 | Отправлено: 18:02 10-09-2019 | Исправлено: taba555, 18:04 10-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
их нужно обновлять у клиента динамически при изменении на сервере,  

ну, либо периодически обновляете страницы (жать на кнопку при этом необязательно - достаточно вызвать js функцию location.reload();
либо через ajax делаем периодические запросы к серверу и когда тот говорит, что есть новые данные - обновляем страницу или получаем их в качестве ответа от сервера и вставляем в страницу.
 
taba555
вопрос то в чем?

Цитата:
strstr

для 1.1.1.1 выдаст совпадение если в списке есть
1.1.1.10
1.1.1.11
и так далее. тогда уж искать нужно с добавленным переносом строки.
 

Код:
$f_ips = 'ips.txt';
$f_codes = 'codes.txt';
$ips = file(f_$ips, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (in_array($_SERVER['REMOTE_ADDR'], $ips))
  die('IP уже есть');
$codes = file($f_codes, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if (count($codes) == 0)
  die('Ключей нет');
echo $codes[0];
unset($codes[0]);
file_put_contents($f_codes, join("\n", $codes));
file_put_contents($f_ips, $_SERVER['REMOTE_ADDR'] . "\n", FILE_APPEND);

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:18 10-09-2019 | Исправлено: Mavrikii, 20:41 10-09-2019
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
либо через ajax делаем периодические запросы

Завтра попробую WebSocket раскурить, щас посмотрел - вроде ничего сложного с первого взгляда и по производительности норм.

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 20:34 10-09-2019
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Завтра попробую WebSocket раскурить, щас посмотрел - вроде ничего сложного с первого взгляда и по производительности норм.

Кому интересно: Ссылка

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 16:59 12-09-2019 | Исправлено: Kaber, 16:59 12-09-2019
LineykaSBK



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ищу исполнителя на одно задание за печеньки
На PHP (вроде) есть обращение к webservice, поднятом на 1с.  
Надо передать обращение к webservice, с 1 параметра(типа строка) на  2 параметра (строка) и сериализованный в xml массив.

Всего записей: 405 | Зарегистр. 29-05-2008 | Отправлено: 10:28 28-09-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LineykaSBK
Работа для веб/мастера/программиста (от РАБОТОДАТЕЛЕЙ)

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 10:30 28-09-2019
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Для отправки почты используется скрипт, код которого приведен ниже, отправляющий письма через сокеты. И при этом обнаружилось странное свойство: если в тексте самого письма встречается двоеточие, то письмо приходит пустым. Как удалось выяснить, так происходит по той причине, что в этом случае текст воспринимается как почтовая директива и виден в заголовках сообщения (скриншот https://i.postimg.cc/fyZp1jLM/1.jpg).
 
Если же двоеточие убрать, то текст попадает в тело письма, где он и должен быть (скриншот https://i.postimg.cc/SNMRqcmc/image.jpg).
 
Не пойму, как обеспечить попадание в тело письма любого произвольного текста, в том числе и с двоеточием?
 
 
    function smtpmail($mail_to, $subject, $message, $from_name){
 
    // Атрибуты соединения с сервером
    $smtp_server     = "smtp.beget.ru";    //  smtp.server.ru реальные данные
    $login             = "subscribe@site.ru";      //  login соответствующего
    $password         = "B8jBu7o?";        //  password реального ящика
    $domen            = "site.ru";
    $port            = 2525;                //  порт для отправки писем
 
        $from_mail = $login;
 
        $encoding = "utf-8";
 
        $socket = @fsockopen($smtp_server, $port, $errno, $errstr, 30);
        if(substr(@fgets($socket,256),0,3) != 220) die("Сервер $smtp_server не найден");
        usleep(1000);
 
        fputs($socket, "EHLO $smtp_server\r\n");
        if(substr(@fgets($socket,256),0,3) != 250) die("Сервер не принял команду идентификации EHLO");
        usleep(1000);
 
        fputs($socket, "AUTH LOGIN\r\n");
        if(substr(@fgets($socket,256),0,3) != 250) die("Сервер отклонил аутентификацию AUTH LOGIN");
        fgets($socket,256);
        usleep(1000);
 
        fputs($socket, base64_encode($login)."\r\n");
        if(substr(@fgets($socket,256),0,3) != 250) die("Не принят логин");
        fgets($socket,256);
        usleep(1000);
 
        fputs($socket, base64_encode($password)."\r\n");
        if(substr(@fgets($socket,256),0,3) != 250) die("Пароль неверен");
        fgets($socket,256);
        usleep(1000);
 
        $SEND  = "Date: ".date("r")."\r\n";
        $SEND .= "From: =?$encoding?B?".base64_encode($from_name)."?= <$from_mail>\r\n";
        $SEND .= "X-Priority: 3 (Normal)\r\n";
        $SEND .= "Message-ID: <" . mt_rand(123456789, 987654321) . "575496646." . date("YmjHis") . "@$domen>\r\n";
 
        $SEND .= "List-Subscribe: <http://site.ru/subscribe>\r\n";
 
        $SEND .= "List-Unsubscribe: <http://site.ru/unsubscribe/?adr=$mail_to>\r\n";
 
        $SEND .= "To: $mail_to\r\n";
        $SEND .= "Subject: =?$encoding?B?".base64_encode($subject)."?=\r\n";
        $SEND .= "MIME-Version: 1.0\r\n";
        $SEND .= "Content-Type: text/html; charset=$encoding\r\n";
 
        $SEND .= "Content-Transfer-Encoding: quoted-printable\r\n";
        $SEND .= quoted_printable_encode($message) ."\r\n";
 
        unset($flag);
 
        fputs($socket, "MAIL FROM: <$from_mail>\r\n");
        if(substr(fgets($socket,256),0,3) != 250) $flag = "Ошибка адреса отправителя MAIL FROM";
        fgets($socket,256);
        usleep(1000);
 
        fputs($socket, "RCPT TO: <$mail_to>\r\n");
        if(substr(fgets($socket,256),0,3) != 250) $flag = "Ошибка адреса получаетеля mail_to";
        fgets($socket,256);
        usleep(1000);
 
        fputs($socket, "DATA\r\n");
        if(substr(fgets($socket,256),0,3) != 250) $flag = "Ошибка инициации почтовых данных DATA";
        fgets($socket,256);
        usleep(1000);
 
        fputs($socket, $SEND."\r\n.\r\n");
        if(substr(fgets($socket,256),0,3) != 334) $flag = "Ошибка передачи письма";
        fgets($socket,256);
        usleep(1000);
 
        fputs($socket, "QUIT\r\n");
        if(substr(fgets($socket,256),0,3) != 334) $flag = "Ошибка звершения сеанса";
        fgets($socket,256);
        usleep(1000);
 
        fclose($socket);
 
    }
 
    $email = "mem@1xxxx7.ru";
    smtpmail($email, "Тема smtpmail.php", "Parol: 1SWt", "ВБК");
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 13:06 25-03-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru