За последние 24 часа нас посетили 22952 программиста и 1241 робот. Сейчас ищет 751 программист ...

Как быстро освоить PHP

Тема в разделе "PHP для новичков", создана пользователем fenix_63, 16 мар 2015.

  1. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Стоит, если уже знаешь язык
     
  2. Rexfan

    Rexfan Новичок

    С нами с:
    14 ноя 2018
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте.
    Хочу вкатиться в Веб-программинг с нуля. Владею только ANSI C в объеме практических приложений.
    С чего начать?
    Скачал книжку "Адам Трахтенберг, Дэвид Скляр - PHP. Рецепты программирования, 3-е издание - 2015"
    "PHP 5 полное руководство"
    Программу PHP Designer 7.2.5.
    Это то, что мне надо?
     
  3. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    PHP 5 не советую. Актуальная версия PHP 7.x и она значительно отличается.
     
  4. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Плохой совет, книги всегда выигрывают перед упрощённым курсом.
    Рецепты - это для тех, кто уже знает PHP. Лучше тоже Скляра, но вот эту: https://www.ozon.ru/context/detail/id/139127353/

    После C будет тяжело привыкнуть к тому, что всё нетипизированно в PHP, но, поскольку синтаксис почти тот же самый, можно освоить за неделю (я сам после C осваивал, через две недели сделал первый заказ за "спасибо", через месяц - за деньги)
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Выкинь. Поставь себе нормальную IDE типа phpStorm. Или NetBeans на худой конец.
     
  7. Rexfan

    Rexfan Новичок

    С нами с:
    14 ноя 2018
    Сообщения:
    3
    Симпатии:
    0
    Благодарю за ответы.
    Краткий курс изучаю, но замечаю некоторые неточности, после С это вызывает у меня недоверие то ли к автору курса, то ли к языку, то ли к технологии. Например, копирую пример в редактор, создаю html, открываю в браузере - и вижу кракозяблы. Оказывается, редактор должен поддерживать UTF-8, но про это не сказано.

    А случайно CodeBlocks не поддерживает PHP?

    И еще, существует ли полный актуальный справочник по тегам? потому что обучение строится на примерах, а мне, как творцу, хотелось бы иметь под рукой полный инструментарий. У меня где-то валялась книжка по HTML3, но она безнадежно устарела, да и я не знаю, где она сейчас.
     
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @Rexfan, не надо краткий курс, это для полных чайников, а вы же профи в C :) Вы же C не по краткому курсу изучали? Я вам книгу дал, где язык разобран с азов до проф. фреймворков. По тегам всегда пользовал, и до сих пор пользую htmlbook.ru. Вроде, у них есть обновлённая версия на другом домене, но я не помню.

    Плюс вам ещё нужен будет JavaScript обязательно, он тоже C-подобный, но есть несколько вещей, которые сводят в нём с ума :) До сих пор, хотя он у меня практически основным инструментом на работе сейчас стал. https://learn.javascript.ru - на мой взгляд, прекрасная штука.
    --- Добавлено ---
    По поводу кодировок - там всё сложнее, тут же у нас ещё одна переменная в игре - веб-сервер. Поэтому правило такое: исходники utf-8, в html <meta charset='utf-8'>, в заголовке ответа utf-8 (можно передать из php или настроить веб-сервер на отдачу заголовка), соединение с базой utf-8. Основные IDE для PHP это PHPStorm, Zend Studio (платные), NetBeans (бесплатный). Вроде Visual Code от мелкомягких тоже умеет, но я пока не научился настраивать.
     
  9. Rexfan

    Rexfan Новичок

    С нами с:
    14 ноя 2018
    Сообщения:
    3
    Симпатии:
    0
    @mkramer, спасибки, ушел изучать...
    Оказывается, у меня уже довольно много опыта в разных вещах, чтобы отличать хреновенький учебник от хорошего :)
     
  10. Bastonc

    Bastonc Новичок

    С нами с:
    27 ноя 2018
    Сообщения:
    12
    Симпатии:
    1
    Такой вопрос подхода. Как известно во фреймворках на основе MVC для доступа к базе используются модели. Ночто-то как-то у меня с ними не срослось. Я делаю следующим образом.
    Например из формы через роут прилетают данные в контролер, в котором осуществлем следующий финт ушами
    Код (Text):
    1. public function login(Request $request)
    2. {
    3. validate($request,["login"=>require|unique|aplpha|numeric,
    4. "pass"=>require]); //не суть важно - вобщем необходимые проверки полей с помощью валидатора
    5. $getAcces = new Login;
    6. $login= $getAcces->login($request->login, $request->pass);
    7. ...
    8. }
    А уже в самом классе Login обращаюсь к базе либо через "сырой запрос" фасада DB, либо используя функции фреймворка - в данном случае Ларавеля.
    Таким образом я имею возможность вернуть из Login->login любое значение которое мне нужно(я его могу запрограммировать) для приложения (обычно это массив из флага авторизация да/нет, юзернейма(хотя это не обязательно имя - устанавливается в сессии), каких то других аттрибутов - например для разделения прав пользователей).
    Плюс, при таком подходе я могу всю большую логику раскидать по методам классов, и сам контроллер получается худым - все как завещали создатели MVC
    Так вот насколько можно или нельзя использовать такой подход? И если нельзя, то собственно в чем криминал такого подхода? Просто убей не пойму, зачем придумали модели, если я могу написать свой класс в котором сосредоточить все необходимые приложению запросы в БД. Сейчас модели не юзаю вообще.
     
    #635 Bastonc, 11 дек 2018
    Последнее редактирование: 11 дек 2018
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @Bastonc, ваш класс - тоже модель, по сути. Если вы имеете в виду под моделями реализацию ActiveRecord (Eloquent, к примеру), то это просто удобно, когда большую часть запросов за тебя делает сам фреймворк, плюс отвечает за связи и т.п. Особенно для мелких приложений. Хотя, в крупном может создать проблемы. Тогда там используется DataMappper обычно.
    Твой подход тоже имеет право на существование, так делали в CodeIgniter, к примеру. Лично мне не нравится, но это ИМХО.
     
    Bastonc нравится это.
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    В модели реализуется осн. логика. Естественно, если это обработка данных в том числе и из БД, данные нужно получить из БД.

    Как выше написали, по сути это и есть типичная работа с моделью из контроллера:
    PHP:
    1. $getAcces = new Login;
    2. $login= $getAcces->login($request->login, $request->pass);
     
    Bastonc нравится это.
  13. Bastonc

    Bastonc Новичок

    С нами с:
    27 ноя 2018
    Сообщения:
    12
    Симпатии:
    1
    Спасибо. Теперь стало чуть понятнее.
     
  14. Full Stack

    Full Stack Новичок

    С нами с:
    14 ноя 2018
    Сообщения:
    5
    Симпатии:
    0
    Просто купи или скачай бесплатно на сливах платные курсы по PHP.
     
  15. GlebSharapov

    GlebSharapov Новичок

    С нами с:
    19 дек 2018
    Сообщения:
    25
    Симпатии:
    1
    Код (Text):
    1. <?php
    2. echo "<strong>$_POST array:</strong><br>";
    3. print_r($_POST);
    4. echo "<br><br><br>";
    5.  
    6. if (!empty($_POST)){
    7.  
    8.   $message = "Новая регистрация сервера: \n"
    9.  
    10.     . "Название сервера:" . $_POST['server_name'] . "\n"
    11.     . "Дата открытия:" . $_POST['server_date'] . "\n"
    12.     . "Рейты сервера:" . $_POST['server_rate'] . "\n"
    13.     . "Хроники сервера:" . $_POST['select_m'] . "\n"
    14.     . "Url сервера: " . $_POST['url_adr'];
    15.  
    16. $resultMail = mail("моя почта, "Регистрация сервера", $message );
    17.  
    18. if( $resultMail ) {
    19.  
    20.     echo "Сообщение отправленно!!";
    21.  
    22. } else {
    23.  
    24.     echo "Что то пошло не так!!!";
    25. }
    26.  
    27.  
    28. }
    29.  
    30.  
    31. ?>
    32.  
    33. ------------------------------------------------------------
    34.  
    35. $(document).ready(function() {
    36.  
    37.     $("#form").submit(function() {
    38.         $.ajax({
    39.             type:"POST",
    40.             url: "../libs/submit.php",
    41.             data: $(this).serialize()
    42.         }).done(function() {
    43.             $('#contact_form').html("<div id='message'></div>");
    44.             $('#message').html("<h2>Регистрация прошла успешно.</h2>")
    45.             .append("<p>Ваш сервер пройдет модерацию и вскоре будет добавлен.</p><br><p>Удачерного дня!</p>")
    46.             .hide()
    47.             .fadeIn(1600, function() {
    48.             });
    49.         });
    50.         return false;
    51.     });
    52. });
    53.  
    54. вместо большого нолика))  блок с формой закрывается полностью))
    55.  
    56. #message {
    57.   display: -webkit-flex;
    58.   display: -moz-flex;
    59.   display: -ms-flex;
    60.   display: -o-flex;
    61.   display: -webkit-box;
    62.   display: -ms-flexbox;
    63.   display: flex;
    64.   -webkit-flex-direction: column;
    65.   -moz-flex-direction: column;
    66.   -ms-flex-direction: column;
    67.   -o-flex-direction: column;
    68.   -webkit-box-orient: vertical;
    69.   -webkit-box-direction: normal;
    70.   flex-direction: column;
    71.   -ms-align-items: center;
    72.   -webkit-box-align: center;
    73.   -webkit-align-items: center;
    74.   -ms-flex-align: center;
    75.   align-items: center;
    76.   width: 100%;
    77.   height: 100%;
    78.   padding: 10px;
    79.   -webkit-border-radius: 30px;
    80.   -moz-border-radius: 30px;
    81.   border-radius: 30px;
    82.   -webkit-box-shadow: 0 0 10px #000;
    83.   box-shadow: 0 0 10px #000;
    84.   background-color: #131519;
    85. }
    вот так)) форму я сам написал (после удаление скопипастенной) а вот ajax где то надыбал глубокой ночью)) я просто не знал что так можно)) я на любительской ступеньке сайтостроения)) в общем html, css, js и php с бд начал изучать с 17 числа того месяца или около того))

    всё работает и на почту отсылает....но вот меня не покидает ощущение что я допустил ошибку в php она как бы не даёт о себе знать сейчас но, когда-то аукнется)

    можете подсказать что я сделал не так?) php меня волнует)) с jquery всё нормально мне нравится результат) да и форму закрывает, по моей наивности я думаю это лишняя защита)))))

    печатая этот пост мне кажется я забыл защитить форму от инъекций)) я еще не знаю что это но вчера где то прочитал что такое есть))
    --- Добавлено ---

    https://html5book.ru/ кажется вот их обновлённая версия)


    Моё мнение дилетанта что если углубиться в css ничуть не легче чем php, а php для человека изучающего его без году неделя весьмя труден)) как я понял css идет в очень сильной связке с js и библиотеками
     
    #640 GlebSharapov, 28 дек 2018
    Последнее редактирование: 28 дек 2018
  16. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
  17. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну в вебе всё связано: php или другой серверный язык для логики сервера, js и его производные (TypeScript. CoffeeScript и прочее) для работы на клиенте, css для вёрстки.
     
  18. mainprofilemail

    mainprofilemail Активный пользователь

    С нами с:
    14 апр 2018
    Сообщения:
    101
    Симпатии:
    2
    Вроде все сделал как описано в ТЗ. Буду очень раз здравой критике, пожеланиям и советам.

    index.php
    PHP:
    1. <?php
    2.     require('db.php');
    3.    
    4.     $data = $_POST;
    5.    
    6.     if(isset($data['do_login'])){
    7.    
    8.         $errors = array();
    9.         $user = R::findOne('users', "login = ?", array(trim($data['login'])));
    10.        
    11.         if($user){
    12.             if(password_verify($data['password'], $user->password)){
    13.                 $_SESSION['logged_user'] = $user;
    14.                 header('Location: /');
    15.             }else{
    16.                 $errors[] = 'Пароль неверный';
    17.             }
    18.         }else{
    19.             $errors[] = 'Логин указан неверно';
    20.         }
    21.        
    22.         if(!empty($errors)){
    23.             $result = '<div class="result result_door" >'.array_shift($errors).'</div>';
    24.         }
    25.     }
    26.    
    27.     if(isset($data['do_counter'])){
    28.         $id = $_SESSION['logged_user'] -> id;
    29.         $counter = $_SESSION['logged_user'] -> counter;
    30.         $new_counter = $counter + 1;
    31.         $user = R::load('users', $id);
    32.         $user->counter = $new_counter;
    33.         $_SESSION['logged_user'] -> counter = $new_counter;
    34.         R::store($user);
    35.         header('Location: /');
    36.     }
    37. ?>
    38. <html>
    39. <head>
    40. <link rel="stylesheet" type="text/css" href="/style.css"/>
    41. <meta id="metaviewport" name=viewport content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
    42. </head>
    43. <body>
    44.     <?php echo $result;?>
    45. <div class="page page_door" >
    46.  
    47. <?php if(isset($_SESSION['logged_user'])) :?>
    48. <div class="account" >
    49.     Привет, <?php echo $_SESSION['logged_user'] -> login;?>!<br>
    50.     <form action="/index.php" method="post" >
    51.    
    52.     <span><?php echo $_SESSION['logged_user'] -> counter;?></span>
    53.    
    54.     <a><button type="submit" name="do_counter" >+1</button></a>
    55.    
    56.     </form>
    57.     <a href="logout.php" ><button class="button_2" >Выйти</button></a>
    58.    
    59. </div>
    60. <?php else :?>
    61.  
    62.  
    63.     <form action="/index.php" method="post" >
    64.        
    65.         <p><strong>Ник</strong>:</p>
    66.         <input type="text" name="login" value="<?php echo @$data['login'];?>" >
    67.  
    68.         <p><strong>Пароль</strong>:</p>
    69.         <input type="password" name="password" value="<?php echo @$data['password'];?>" >
    70.    
    71.         <a><button type="submit" name="do_login" >Войти</button></a>
    72.    
    73.     </form>
    74.     <a href="signup.php" ><button class="button_2" >Зарегаться</button></a>
    75.  
    76. <?php endif; ?>
    77. </div>
    78. </body>
    79. </html>
    signup.php
    PHP:
    1. <?php
    2.     require('db.php');
    3.    
    4.     $data = $_POST;
    5.    
    6.     if(isset($data['do_signup'])){
    7.    
    8.     $errors = array();
    9.        
    10.         if(trim($data['login']) == ''){
    11.             $errors[] = 'Неправильный ник';
    12.         }
    13.         if(R::count('users', "login = ?", array($data['login'])) > 0){
    14.         $errors[] = 'Такой Ник уже существует';
    15.         }
    16.         if($data['day'] == ''){
    17.             $errors[] = 'Выберите день';
    18.         }
    19.         if($data['month'] == ''){
    20.             $errors[] = 'Выберите месяц';
    21.         }
    22.         if($data['year'] == ''){
    23.             $errors[] = 'Выберите год';
    24.         }
    25.         $now = time(); // or your date as well
    26.         $day = $data['day'];
    27.         $month = $data['month'];
    28.         $year = $data['year'];
    29.         $your_date = strtotime("$year-$month-$day");
    30.         $datediff = $now - $your_date;
    31.        
    32.         $datareg = $datediff / (60 * 60 * 24) / 365;
    33.     //    echo '<br>';
    34.         //$datareg2 = round($datediff / (60 * 60 * 24));
    35.        
    36.         if($datareg < 0){
    37.         $errors[] = 'Вы еще не родились ;-)';
    38.         }
    39.         if($datareg <= 5){
    40.             $errors[] = 'Вы слишком молоды!';
    41.         }
    42.         if($datareg > 150){
    43.         $errors[] = 'Вы слишком взрослые!';
    44.         }
    45.         if(trim($data['password']) == ''){
    46.             $errors[] = 'Введите пароль!';
    47.         }
    48.         if(trim($data['password']) != trim($data['password_2'])){
    49.             $errors[] = 'Пароли не совпадают';
    50.         }
    51.    
    52.         if(empty($errors)){
    53.             $user = R::dispense('users');
    54.             $user->login = trim($data['login']);
    55.             $user->password = password_hash($data['password'], PASSWORD_DEFAULT);
    56.             $user->counter = 0;
    57.            
    58.             $userreg = '<div style="color:green">Регистрация прошла успешно!<br><a href="/">Перейти на страницу входа</a></div>';
    59.             R::store($user);
    60.        
    61.         }else{
    62.             $result = '<div class="result result_reg">'.array_shift($errors).'</div>';
    63.         }
    64.     }
    65.    
    66. ?>
    67. <html>
    68. <head>
    69. <link rel="stylesheet" type="text/css" href="/style.css"/>
    70. <meta id="metaviewport" name=viewport content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
    71. </head>
    72. <body>
    73.     <?php echo $result;?>
    74. <div class="page page_reg" >
    75.     <form action="/signup.php" method="post" >
    76.    
    77.     <p><strong>Ник</strong>:</p>
    78.     <input type="text" name="login" value="<?php echo @$data['login'];?>" >
    79.    
    80.     <p><strong>Когда вы родились?</strong>:</p>
    81.    
    82. <?php
    83. // устанавливаем первый и последний год диапазона
    84. $dayArray = range(1, 31);
    85. ?>
    86. <!-- выводим выпадающий список -->
    87. <select name="day">
    88.     <option value="">День</option>
    89.     <?php
    90.     foreach ($dayArray as $day) {
    91.         // если вы хотите выбрать конкретный год
    92.         $selected = ($day == @$data['day']) ? 'selected' : '';
    93.         echo '<option '.$selected.' value="'.$day.'">'.$day.'</option>';
    94.     }
    95.     ?>
    96. </select>
    97.  
    98. <?php
    99. // устанавливаем массив месяцев
    100. $formattedMonthArray = array(
    101.                     "1" => "01", "2" => "02", "3" => "03", "4" => "04",
    102.                     "5" => "05", "6" => "06", "7" => "07", "8" => "08",
    103.                     "9" => "09", "10" => "10", "11" => "11", "12" => "12",
    104.                 );
    105. ?>
    106. <!-- выводим выпадающий список -->
    107. <select name="month">
    108.     <option value="">Выберите месяц</option>
    109.     <?php
    110.     foreach ($formattedMonthArray as $month) {
    111.         // если вы хотите выбрать конкретный месяц
    112.         $selected = ($month == @$data['month']) ? 'selected' : '';
    113.         // если вы хотите добавить перед номером месяца дополнительный 0, раскомментируйте строку ниже
    114.         // $month = str_pad($month, 2, "0", STR_PAD_LEFT);
    115.         echo '<option '.$selected.' value="'.$month.'">'.$month.'</option>';
    116.     }
    117.     ?>
    118. </select>
    119.  
    120. <?php
    121. // устанавливаем первый и последний год диапазона
    122. $yearArray = range(2019, 1850);
    123. ?>
    124. <!-- выводим выпадающий список -->
    125. <select name="year">
    126.     <option value="">Выберите год</option>
    127.     <?php
    128.     foreach ($yearArray as $year) {
    129.         // если вы хотите выбрать конкретный год
    130.         $selected = ($year == @$data['year']) ? 'selected' : '';
    131.         echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>';
    132.     }
    133.     ?>
    134. </select>
    135.  
    136.     <p><strong>Пароль</strong>:</p>
    137.     <input type="password" name="password" value="<?php echo @$data['password'];?>" >
    138.    
    139.     <p><strong>Повторите пароль</strong>:</p>
    140.     <input type="password" name="password_2" value="<?php echo @$data['password_2'];?>" >
    141.  
    142. <center>
    143. <?php
    144. echo $userreg;
    145. ?>
    146. </center>
    147.  
    148.     <a><button type="submit" name="do_signup" >Зарегаться</button></a>
    149.    
    150.     </form>
    151.     <a href="/" ><button class="button_2" >Назад</button></a>
    152.    
    153. </div>
    154. </body>
    155. </html>
    logout.php
    PHP:
    1. <?php
    2.     require('db.php');
    3.     unset($_SESSION['logged_user']);
    4.     header('Location: /');
    5. ?>
    db.php
    PHP:
    1. <?php
    2.     //Подключаем РедБин
    3.     require('libs/rb.php');
    4.    
    5.     //Подключаемся к БД
    6.     R::setup('mysql:host=localhost;dbname=felicity', 'root', '');
    7.    
    8.     //Запкскаем сессии
    9.     session_start();
    10. ?>
    style.css
    Код (CSS):
    1. *{
    2. margin:0px;
    3. padding:0px;
    4. }
    5. button {
    6. text-decoration:none;
    7. height:40px;
    8. width:160;
    9.  
    10. cursor:pointer;
    11. background-color:green;
    12. position:absolute;
    13. top:100%;
    14. left:0;
    15. padding:0;
    16. }
    17. .button_2{
    18. left:50%;
    19. background-color:#696969;
    20. }
    21. .result{
    22. width:320px;
    23. height:50px;
    24. top:50%;
    25. left:50%;
    26. position:relative;
    27. background-color:red;
    28. border-radius:10px 10px 0px 0px;
    29. text-align:center;
    30. color:#fff;
    31. line-height:40px;
    32. }
    33. .result_door{
    34. margin:-150px 0px 0px -150px;
    35. }
    36. .result_reg{
    37. margin:-210px 0px 0px -150px;
    38. }
    39. .account{
    40. text-align:center;
    41. }
    42. span{
    43. font-size:100px;
    44. line-height:100px;
    45. }
    46. .page {
    47. background-color:#ccc;
    48. width:300px;
    49. padding:10px;
    50. border-radius:10px 10px 0px 0px;
    51. position:fixed;
    52. top:50%;
    53. left:50%;
    54. }
    55. .page_door{
    56. height:120px;
    57. margin:-110px 0px 0px -150px;
    58. }
    59. .page_reg {
    60. height:240px;
    61. margin:-170px 0px 0px -150px;
    62. }
    63. input {
    64. width:300px;
    65. height:30px;
    66. }
    67. p{
    68. text-align:left;
    69. }
    И последнее:
    libs/rb.php - нужно разместить фреймворк RedBeanPHP для безопасной работы с базой. Ссылка https://redbeanphp.com/index.php?p=/download

    Спасибо за внимание. Жду комментариев)
     
  19. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @mainprofilemail выложи на халявный хостинг какой-нибудь, никто не будет ставить твоё творение к себе на сервер, чтоб посмотреть. По коду. Во-первых, после header("Location ..") обязательно ставить die или exit. Всё равно при получении этого заголовка браузер всё остальное игнорирует, так зачем стараться? А может выполнится лишний код. Во-вторых, на мой взгляд, index.php перегружен разной логикой - и перезапись счётчика в базе, и прохождение аутентификации. Хоть кода и мало, лучше вынести в другие файлы. В-третьих, в сессии обычно хранят только id аутентифицированного юзера, и просто считывают его при каждом запросе. По ID база найдёт пользователя очень быстро.

    По проверке возраста - твой код пропустит меня, если мне 5 лет и 3 месяца, насколько я вижу. А не должен. Так же нет проверки на корректность даты (31 февраля, к примеру, чтоб отсекало). И есть такая прикольная вещь: https://secure.php.net/manual/ru/function.date-diff.php.
    Так не стоит делать, вообще, чем меньше собачки, тем лучше. В PHP 7.0 (а я надеюсь ты юзаешь php > 7) для таких вещей есть ??:
    PHP:
    1. <?= $data["login"] ?? ""; ?>
    По стилям - лучше смотреть в браузере, но в центре экрана я сомневаюсь.
     
    mainprofilemail нравится это.
  20. mainprofilemail

    mainprofilemail Активный пользователь

    С нами с:
    14 апр 2018
    Сообщения:
    101
    Симпатии:
    2
    Выкладывал код на zzz.com.ua но у него какие-то тёрки с РедБин'ом не хочет полноценно работать. Сейчас найду другой и скину ссылку) И да по поводу дат там есть лажа так как с ними я работать не умею. А насчёт 5 лет и 3 месяца то указано в задании если я неошибаюсь что не должно регистрировать если меньше 5-ти лет. Одним словом скину ссылку на сайт через некоторое время.
     
  21. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    mainprofilemail нравится это.
  22. mainprofilemail

    mainprofilemail Активный пользователь

    С нами с:
    14 апр 2018
    Сообщения:
    101
    Симпатии:
    2
  23. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Hostens выгоднее.

    К сожалению, сейчас почти нет времени. Но постараюсь заглянуть вечером.
     
    mainprofilemail нравится это.
  24. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
  25. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @Dimon2x, вот прямо эту задачу непременно надо решать MVC :) И ещё Laravel какой-нибудь взять :) Свет клином на MVC не сошёлся, код, не следующий этой парадигме буквально (особенно в традиционном понимании её реализации, с классами-контроллерами), не является априори плохим.
    --- Добавлено ---
    P.S. Я когда-то решил эту задачу в MVC-стиле, но у меня свои были мотивы - с новой версией фреймворка Slim поиграться, я на тот момент уже не был новичком.