繁体   English   中英

MAMP / XAMPP(本地)和$ _POST的问题

[英]Issue with MAMP/XAMPP (local) and $_POST

注意:此问题似乎与在运行El Capitan的Macbook Pro上运行MAMP / XAMPP有关。 相同的数据库/源文件可以在Windows计算机上完美运行。

注意2:这不是生产应用程序。 请不要批评代码,是的,它很容易受到攻击。

注意3:原始POST数据:

file_get_contents("php://input"); = author=1&title=1&category=1&year=1&isbn=1



print_r($_POST); = Array()

资料来源:《学习PHP,MySQL和Javascript第4版》。 这是示例10-6。 当我提交表单以添加其他行时,实际上没有任何内容发布到数据库。

在另一本书的另一个示例中,查询运行器出现了完全相同的问题。 $ _POST数组为空,但原始发布数据显示带有正确信息的字符串。 $ _GET确实有效。 这似乎仅限于此计算机上的MAMP / XAMPP 我一生都无法弄清楚这一点。 遇到类似问题的大多数人建议验证php.ini文件中的最大帖子大小变量设置得太低。 默认值为128M,对于此脚本而言,这应该是完全过大了。

没有人有任何建议,它似乎与配置有关。

 <?php // sqltest.php /** * Created by PhpStorm. * User: kg3 * Date: 12/27/15 * Time: 12:34 AM */ require_once 'connect.php'; if (isset($_POST['delete']) && isset($_POST['isbn'])) { $isbn = get_post($conn, 'isbn'); $query = "DELETE FROM classics WHERE isbn='$isbn'"; $result = $conn->query($query); if (!$result) echo "DELETE failed: $query<br>" . $conn->error . "<br><br>"; } if (isset($_POST['author']) && isset($_POST['title']) && isset($_POST['category']) && isset($_POST['year']) && isset($_POST['isbn'])) { $author = get_post($conn, 'author'); $title = get_post($conn, 'title'); $category = get_post($conn, 'category'); $year = get_post($conn, 'year'); $isbn = get_post($conn, 'isbn'); $query = "INSERT INTO classics VALUES" . "('$author', '$title', '$category', '$year', '$isbn')"; $result = $conn->query($query); if (!$result) echo "INSERT failed: $query<br>" . $conn->error . "<br><br>"; } echo <<<_END <form action="sqltest.php" method="post"><pre> Author <input type="text" name="author"> Title <input type="text" name="title"> 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> _END; $query = "SELECT * FROM classics"; $result = $conn->query($query); if (!$result) die ("Database access failed: " . $conn->error); $rows = $result->num_rows; for ($j = 0 ; $j < $rows ; ++$j) { $result->data_seek($j); $row = $result->fetch_array(MYSQLI_NUM); echo <<<_END <pre> Author $row[0] Title $row[1] Category $row[2] Year $row[3] ISBN $row[4] </pre> <form action="sqltest.php" method="post"> <input type="hidden" name="delete" value="yes"> <input type="hidden" name="isbn" value="$row[4]"> <input type="submit" value="DELETE RECORD"></form> _END; } $result->close(); $conn->close(); function get_post($conn, $var) { return $conn->real_escape_string($_POST[$var]); } 

弄清楚了。

最终它不是Apache,PHP版本,我的代码或我之前提到的任何其他内容。 我使用PHPStorm IDE,并在不久前使用MAMP进行了设置。 该安装的端口与我当前的安装不同,我没有意识到。 一些网络流量正在通过该端口,但是$ _POST不是。 在更正URL中的端口并更新PHPStorm之后,现在一切正常。 2天就可以弄清楚了.... DOH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM