another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Почему вот этот код не работает? Где тут проблема?

if (isset($_GET['add-entry'])){
    if ($_POST['submit']==true) {
        $name = $_POST['name'];
        $ur_name= $_POST['ur_name'];
        $startdate = $_POST['startdate'];
        $globalinput = $_POST['globalinput'];
        $globaloutput = $_POST['globaloutput'];

        $mysqli->query("INSERT INTO projects VALUES(0,'$name','$ur_name','$startdate','$globalinput','$globaloutput')") or die ("Your bunny wrote, ne dobavlyaet! >_<");
    }

Код вытаскивает из формы все введенные данные, и вставляет их в базу в том порядке, в котором они и должны идти. Но дело в том, что запрос и не выполняется и не выдает die.
Вот код формы:
echo '
    <br />
    <form method="POST" action ="/admin/admin.php";
     <label>Название</label>
    <input type="text" name="name"><br />
    <label>Юридическое название</label>
    <input type="text" name="ur_name"><br />
    <label>Дата запуска проекта</label>
    <input type="date" name="startdate"><br />
    <label>Общий приход</label>
    <input type="text" name="globalinput"><br />
    <label>Общий расход</label>
    <input type="text" name="globaloutput"><br />
    <input type="submit" name="submit" value="Добавить"><br />
    </form>
    ';
  • Вопрос задан
  • 2917 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Что будет в вашем запросе, если ему передать
$globaloutput = "0'); DROP TABLE IF EXISTS `users`;--"

Сделайте лучше через bind, так гораздо безопаснее и не надо вручную эскейпить строки.
$req = $mysqli->query("INSERT INTO projects VALUES(0, ?, ?, ?, ?, ?)");
$req->bind_param("issss", $name, $ur_name, $startdate, $globalinput, $globaloutput);
$req->execute();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Nc_Soft
Нельзя такой код писать, он подвержен sql инъекции.
Посмотрите что получается из
"INSERT INTO projects VALUES(0,'$name','$ur_name','$startdate','$globalinput','$globaloutput')" вместо запроса просто выведите на экран
и вот этого не видно нигде $_GET['add-entry']
Ответ написан
another_dream
@another_dream Автор вопроса
Backend-разработчик, Laravel/ZF2/Yii2
В общем. Все сделал. Вот как надо было
<?php if (isset($_GET['add-entry'])): ?>
<br />
<center>
    <form method="POST" action ="/admin/admin.php";
    <label>Название</label>
    <input type="text" name="name"><br />
    <label>Юридическое название</label>
    <input type="text" name="ur_name"><br />
    <label>Дата запуска проекта</label>
    <input type="date" name="startdate"><br />
    <label>Общий приход</label>
    <input type="text" name="globalinput"><br />
    <label>Общий расход</label>
    <input type="text" name="globaloutput"><br />
    <input type="submit" name="submit" value="Добавить"><br />
    </form>
</center>
<?php endif ?>
<?php
    if ($_POST['submit']==true) {
        $name = $_POST['name'];
        $ur_name= $_POST['ur_name'];
        $startdate = $_POST['startdate'];
        $globalinput = $_POST['globalinput'];
        $globaloutput = $_POST['globaloutput'];

        $mysqli->query("INSERT INTO projects VALUES(0,'$name','$ur_name','$startdate','$globalinput','$globaloutput')") or die ("Your bunny wrote, ne dobavlyaet! >_<");
}
    ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы