LINUX.ORG.RU

Не работает метод post в PHP7 на Ubuntu

 , ,


0

1

На локальном сервере apache2 под ubuntu 17.04 при попытке отправить данные в форме методом post, форма просто обновляется и ничего не происходит. Использую PHP7 с расширением mysqli. Файл login.php содержит переменные $db_hostname, $db_username, $db_password, $db_database. Сам код из файла sqltest.php.

<?php
require_once 'login.php';
$db_server = new mysqli($db_hostname, $db_username, $db_password, $db_database);

if($db_server->connect_errno) die("Невозможно подключиться к MySQL: " . $db_server->connect_error);

if(isset($_POST['delete']) && isset($_POST['isbn']))
{
	$isbn = get_post('isbn');
	$query = "DELETE FROM classics WHERE isbn='$isbn'";

	if(!$db_server->query($query))
		echo "Сбой при удалении данных: $query<br />" . $db_server->error . "<br /><br />";
}

if (isset($_POST['author']) &&
	isset($_POST['title']) &&
	isset($_POST['category']) &&
	isset($_POST['year']) &&
	isset($_POST['isbn']))
	{
		echo "YES! <br />"; // для проверки
		$author = get_post('author');
		$title = get_post('title');
		$category = get_post('category');
		$year = get_post('year');
		$isbn = get_post('isbn');

		$query = "INSERT INTO classics VALUES" . "('$author', '$title', '$category', '$year', '$isbn')";

		if(!$db_server->query($query))
			echo "Сбой при вставке данных: $query<br />" . $db_server->error . "<br /><br />";
	}

echo "<form action=\"sqltest.php\" method=\"post\"><pre>
Author 		<input type=\"text\" name=\"author\" />
Title 		<input type=\"text\" name=\"tittle\" />
Category 	<input type=\"text\" name=\"category\" />
Year 		<input type=\"text\" name=\"year\" />
ISBN 		<input type=\"text\" name=\"isbn\" />
<input type=\"submit\" value=\"ADD RECORD\" />
</pre></form>";

$query = "SELECT * FROM classics";
$result = $db_server->query($query);
if(!$result) die ("Сбой при доступе к базе данных: " . $db_server->error);

for($row_no = 0; $row_no < $result->num_rows; ++$row_no)
{
	$result->data_seek($row_no);
	$row = $result->fetch_assoc();
	echo "
	<pre>
Author:		" . $row['author'] . 
"<br />Title:		" . $row['title'] . 
"<br />Category:	" . $row['category'] . 
"<br />Year:		" . $row['year'] . 
"<br />ISBN:		" . $row['isbn'] . 
"</pre>
	<form action=\"sqltest.php\" method=\"post\">
	<input type=\"hidden\" name=\"delete\" value=\"yes\" />
	<input type=\"hidden\" name=\"isbn\" value=\"" . $row['isbn'] . "\" />
	<input type=\"submit\" value=\"DELETE RECORD\" />
	</form>
	";
}

$db_server->close();

function get_post($var)
{
	return mysqli_real_escape_string($_POST[$var]);
}
?>


Глупые ошибки по невнимательности. Проблему решил.

Blider
() автор топика

\"

Люди дали им одинарные кавычки — нет, всё равно хотим жрать двойные.

h578b1bde ★☆
()

Некрасивый код. :P Так не идеально, но лучше:

<?php

require_once 'login.php';
$entries = [];
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $db_server = new mysqli($db_hostname, $db_username, $db_password, $db_database);

    if(isset($_POST['delete'], $_POST['isbn'])) {
        $st = $db_server ->prepare('DELETE FROM classics WHERE isbn = ?');
        $st->bind_param('s', $_POST['isbn']);
        $st->execute();
    }

    if (isset($_POST['author'], $_POST['title'], $_POST['category'], $_POST['year'], $_POST['isbn']))
    {
        $st = $db_server->prepare('INSERT INTO classics VALUES (?, ?, ?, ?, ?)');
        $st->bind_param('sssss', $_POST['author'], $_POST['title'], $_POST['category'], $_POST['year'], $_POST['isbn']);
        $st->execute();
    }

    $result = $db_server->query('SELECT * FROM classics');
    while ($entry = $result->fetch_array(MYSQLI_ASSOC)) {
        $entries[] = $entry;
    }
    $db_server->close();
} catch (mysqli_sql_exception $e) {
    die($e->getMessage());
}

foreach ($entries as $entry):
    $row = array_map('htmlspecialchars', $entry);
    echo <<<EOL
<pre>
    Author: $row[author]<br />
    Title: $row[title]<br />
    Category: $row[category]<br />
    Year: $row[year]<br />
    ISBN: $row[isbn]
</pre>
<form action="sqltest.php" method="post">
    <input type="hidden" name="delete" value="yes" />
    <input type="hidden" name="isbn" value="$row[isbn]" />
    <input type="submit" value="DELETE RECORD" />
</form>
EOL;
endforeach;


anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.