[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]

Файл: airplane.png -(4 KB, 108x90, airplane.png)
No.203540  

<?

$error= false;

$errorText = "";

if (empty($_POST["name"])==true) {

$error=true;
$errorText = "У вас неправильно заполнено поле Имя";

}

if (empty($_POST["email"])==true){

$error=true;
$errorText = "У вас неправильно записан e-mail";

}

if (empty($_POST["message"])==true){

$error=true;
$errorText = "У вас не написано сообщение";

}

if($error==true){

$response = [
   "error" => true,
       "message" =>$errorText
];
echo json_encode($response);
die();

}

$servername = "localhost";

$username = "root";

$password = "";

// Create connection

$conn = new mysqli($servername, $username, $password, "bd1");

$sql = "INSERT INTO tab1 (name, email, message)

VALUES ('".$_POST["name"]."', '".$_POST["email"]."', '".$_POST["message"]."')";

if ($conn->query($sql) === TRUE) {

echo "New record created successfully <br>";
echo "<a href=index.html >Вернуться назад </a> </p>";
$query ="SELECT * FROM tab1";
$result = mysqli_query($conn, $query) or die("Ошибка " . mysqli_error($conn));
if ($result->num_rows > 0) {
// output data of each row
      while($row= $result->fetch_assoc()) {
                echo '<tr>';
              echo '<td style="padding:10px">' . $row['id'] . '</td>';
          echo '<td>' . $row['name'] . '</td>';
               echo '<td>' . $row['email'] . '</td>';
              echo '<td>' . $row['message'] . '</td>';
            echo '</tr>';
     }
} else {
       echo "0 results";
}
$conn->close();
// очищаем результат
mysqli_free_result($result);

} else {

echo "Error: " . $sql . "<br>" . $conn->error;

}

?>

>> No.203545  

Что это? Нет, в общих чертах способ использования и назначение достаточно наглядно. А конкретно что?
За каждое эхо нужно бить клавиатурой по рукам (с) Оптимизировать бы.

>> No.203546  

О господи, какой писец. За такой код надо расстреливать на месте. Зачемты это сюда принес?

>> No.203553  
Файл: Alice.Margatroid.full.151077.LOW.png -(374 KB, 1086x768, Alice.Margatroid.full.151077.LOW.png)
374

O'k. В целом всё хорошо. Теперь: 1) покройте тестами; 2) добавьте валидацию; 3) добавьте обработчик исключений; 4) перепишите с использованием MVC-паттерна.

>> No.203554  
Файл: тири4.jpg -(23 KB, 720x432, тири4.jpg)
23
>перепишите с использованием MVC-паттерна.

Помнится, в Сенсее (который унылый, а не Онизука) была серия про отмазки, оправдывающие собственную лажу. Целые улицы отмазок: для косоруких домохозяек — «по рецепту», для бездарных режиссёров — «по оригиналу» и так далее. Вот там не хватало переулка «по паттерну».

>> No.203556  

Если два рандомных php-кодера не макаки, они никогда не договорятся как правильно кодить. И даже в вопросе хорошо такое положение дел или нет.

>> No.203560  
Файл: sadface.jpg -(73 KB, 494x371, sadface.jpg)
73

>>203540
Эталонный говнокод. Я б так не смог.

>> No.203561  
Файл: Alice.Margatroid.full.461246.jpg -(692 KB, 800x1318, Alice.Margatroid.full.461246.jpg)
692

>>203554
Там не хватало кольцевой дороги, по которой улюлюкая нарезают круги ребятишки в педальных автомобильчиках.
>>203556
Отсутствие академического образования как раз и проявляется в наивной уверенности, что есть «правильный» способ. Ну и

>php-кодеры
>не макаки

на ноль делишь.
>>203560
Да ладно, сойдёт для ПТУ. Студент на занятие пришел, даже код какой-то написал. Сразу «отлично» можно ставить.

>> No.203564  

>>203560
Взгляни на это по другому. Это мог быть ООП в стиле си, формирующий xml для рендера через JS. Или даже собственный движок, дублирующий интерпретацию шаблонов встроенную в основы php. Как было сделано в кусабе.
>>203561
Да ладно, полно диванных самоучек кодящих на коленке в стол для удовольствия.

>> No.203631  

>>203540
Нужно проверять поля на наличие специальных символов, которые требуется экранировать при создании SQL-запроса, чтобы не позволить всем желающим получить контроль над базой данных. В выводе тоже надо не допускать HTML-тегов.

>> No.203632  

К комментирующим: санитизация инпута -- это очень и очень тупо, не надо так, это не решение проблемы, но заметание её под ковёр.

К ОПу:
В коде:

  • куча проверок, которые могут быть бесполезны.
  • отсутствие пула подключений
  • передача голых строк sql-запроса вместо параметризации
  • конструкция html из строк вместо использования темплейтов
  • отсутствие логгирования

Стоит:

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

Аспекты которые стоит учитывать:

  • Персистентность приложения
  • Нормальные треды, не поддверженные GIL'у
  • Развитая экосистема, имеющая решение для довольно большего спектра задач
  • Возможность использовать простой и вкусный spring-boot.
  • Возможность реализовать полноценную микросервисную архитектуру на spring-cloud.
  • Иметь доступ к адекватной сепарации косёрнов в spring-data.
  • Иметь ORM для реляционных баз через hibernate.

Имеет смысл так же выглянуть в окно и отказаться от серверного рендеринга всей разметки иначе как для бутстрапа твоего SPA -- попробуй лучше React. Только не делай монолита из UI теперь, используй project mosaic.

Потом, когда затрахаешься с конфигурацией кучи фреймворков - посмотри на go, gRPC, go-kit и go-micro и да будет тебе счастье в мире кооперативных тредов с преэмптивностью только на уровне ОС.

>> No.203635  

Долго не мог понять, что мне не нравится в советах этого человека >>203632 А потом увидел что он предлагает делать простой как лом из чугуния сайт на джаве с фремворками.
Ведь этот пост сплошь утрированный до абсурда сарказм, правда?
Скажите что так и есть или я потеряю веру в человечество.

>> No.203639  

>>203635
Нет ничего плохого в том чтобы брать лучший подходящий под задачу инструмент. Да, забить гвоздь можно и тяжёлым ботинком, но лучше молотком, специально для этого предназначенным. Твой аргумент, я так понимаю, сводится что ботинки могут лежать ближе, чем ящик с инструментами, но это едва ли повод лениться и не сходить в гараж за подходящими средствами, да прочитать книжку о технике безопасности, чтобы не отбить себе пальцы.

>> No.203640  

>>203639
Тогда почему бы не начать с того что посоветовать ему нанять команду заслуженных профессионалов? В числе которых будет маркетолог, дизайнер и креативный директор. Хотя по хорошему, их наймом должен заниматься начальник отдела кадров. Да и как всё это дело затевать, не имеючи хорошего бухгалтера? Не даром же в прямом эфире говорили, что создание самого простого сайта для бизнеса и гос.структур обходится не меньше пары-тройки миллионов.

Это как если бы человек обратился с советом как в холодную ночь прикрыть цветок на открытом грунте, а ему бы первым делом посоветовали заложить добротный ж\б фундамент для теплицы. Хотя хватило бы и стеклянной банки или даже кулька из газеты. Я тоже против кривой халтуры, но не до такой же дикой инверсии!

>> No.203641  

>>203639
Если нужно съездить в магазин за колбасой то начинать стоит со строительства автомобильного завода?

>> No.203655  

>>203639
А потом мы все удивляемся - чего это современный написанный по всем правилам говнокод так дико тормозит и жрёт ресурсы?

>> No.203661  
Файл: 88254a8f95599639adf9d339441d589113165168(...).jpg -(34 KB, 400x250, 88254a8f95599639adf9d339441d589113165168(...).jpg)
34

>>203540

> if($error==true){
>> No.203678  

>>203655
Полагаю, идея писать не говнокод слишком чужда для некоторых людей.

>> No.203687  

>>203678
Иногда стандарты написания являются строго обязательными. И за их несоблюдение по идейно-эстетическим принципам без разбирательств увольняют.




[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] [Архив-Каталог-RSS] [Главная]