Php - 如何根据网址调整内容

时间:2015-11-02 21:55:06

标签: php html mysql

这是我第一次在这里发帖,但我一直在使用这个网站几次。

我遇到了一个我似乎无法解决的问题。 我想将文本输入发送到另一个名为connect的php文件。检查数据库是否存在于那里,当存在= true时,它将用户发送到同一页面但内容不同。

目前我有索引:

<form action ="connect.php" method = "get">
    Name:   <input type="text"  class= "textfieldcss" style="width: 65%;" name = "name"><input type="submit" class= "button" value = "Connect!">
</form>
在连接中

<?php
include 'folder/folder.php';



            $conn = new mysqli($host,$username,$password,"name_database");

            // check connection 
            if ($conn->connect_error)
                {
                    echo "Connection failed: \n". $conn->connect_error;
                }

            $name = htmlspecialchars($_GET['name']);
            $sql = "select * from table where name ='".$name."'";

            $result = $conn->query($sql);
            $numrows = mysqli_num_rows($result);

            //echo $numrows." results found for ".$name."</br>"; random testin

                    while($row=mysqli_fetch_assoc($result)){
                    if($name == $row['name']){ //returns name in database
                    header('location: index.php?name='.$name);
                    }}

                    header('location: index.php?name=');

mysqli_close($conn);
?>

好吧我很喜欢if子句,我不知道如何正确地将值true / false编码到原始索引中。

我不打算使用href来创建多个站点,因为我打算在数据库中存储超过200个值

1 个答案:

答案 0 :(得分:0)

好的,你的脚本中有很多错误。

在检查MySQL连接是否失败后,允许脚本继续运行,您需要通过添加die()或类似语句退出。

您的最终if语句在找到匹配后不会停止循环,以下header调用将覆盖之前的break调用,因为它们都设置了相同的标题,您需要插入在if语句中设置标题后的$name语句。

您尚未正确转义可用于执行SQL注入的变量htmlspecialcharsif (!empty($_GET['name'])) { $name = $_GET['name']; $query = "SELECT name FROM table WHERE name = '" . mysqli_real_escape_string($name) . "'"; $rs = mysqli_query($dbc, $query); if (mysqli_num_rows($rs) > 0) { header('Location: index.php?name=' . urlencode($name)); die(); } } header('Location: index.php'); die(); 只是转义HTML字符,而不是诸如引号之类的恶意SQL字符,你需要使用MySQL转义方法。

最后,如果您只是检查记录的存在,则无需获取记录,您可以简单地执行此操作(注意我这里没有使用OOE方法,但逻辑是相同的)。

Jnetpcap
相关问题