Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTML/php表单:提交链接时出错_Php_Html_Forms - Fatal编程技术网

HTML/php表单:提交链接时出错

HTML/php表单:提交链接时出错,php,html,forms,Php,Html,Forms,我有一个由php处理的HTML表单。表单有各种文本输入字段,其中一个字段要求用户输入包含http://的链接 问题是当我提交一个像http://www.google.com/表单在我的网站上显示来自不同php文件的随机内容,严重失败 这是我的代码简历: <form action="add.php" method="post"> <input type="text" name="link" /> <input type="submit" value="subm

我有一个由php处理的HTML表单。表单有各种文本输入字段,其中一个字段要求用户输入包含
http://
的链接

问题是当我提交一个像
http://www.google.com/
表单在我的网站上显示来自不同php文件的随机内容,严重失败

这是我的代码简历:

<form action="add.php" method="post">
    <input type="text" name="link" />
<input type="submit" value="submit" />


如果不提交包含
http://
的字符串,则可以正常工作。有人知道为什么会发生这种情况吗?

旁注:您将在更深处找到一个基于
mysqli.*
的版本

假设您已连接到数据库,则未在
值中用引号括起
$link

更改此行:

mysql_query("INSERT INTO mytable(link) values( $link )");
                                              ^     ^ <- missing quotes
测试并使用此示例:(表单设置为self)并使用
http://www.google.com/
作为输入,其他一些包含http://

<?php
define('DB_NAME', 'xxx');
define('DB_USER', 'xxx');
define('DB_PASS', 'xxx');
define('DB_HOST', 'xxx');

$dbh = mysql_connect(DB_HOST, DB_USER, DB_PASS);

if(!$dbh)
{
    die('Could not connect to database: ' . mysql_error());
}

$db_select = mysql_select_db(DB_NAME);

if(!$db_select)
{
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

if(isset($_POST['submit']) && !empty($_POST['link'])){
$link = mysql_real_escape_string($_POST['link']);
mysql_query("INSERT INTO mytable (link) values('$link')");
if(!mysql_query)
{
    die("sorry");
}
else{ echo "Success"; }

mysql_close();

}
?>


<!DOCTYPE html>
<html>
  <body>
    <title></title>
    <h3>Place your Link Below:</h3>
<form action="" method="post">
    <input type="text" name="link" />
<input type="submit" name="submit" value="submit" />
  </body>
</html>

“在我的网站上显示来自不同php文件的随机内容”
-这是。。。真奇怪。你确定这个代码是问题所在吗?进一步分析症状,当页面呈现时,是什么导致它显示来自其他文件的随机内容?在数据库表中插入记录肯定不会向用户显示随机内容。它不会向任何人展示任何东西。其他代码正在这样做。当您调试其他代码时,内容来自哪里?我的add.php文件中没有一条echo语句。它显示我的主index.php文件中的内容,该文件位于完全不同的文件夹中。更奇怪的是,该代码仅在web服务器上失败。我的电脑里有带xampp的apache,它运行得很好。不管怎样,我们都没有任何信息可以用来诊断或解决这个问题。发布的代码中没有任何内容会导致此行为。问题可能是这个代码和其他东西的组合,但我们不知道。据我们所知,这个“随机内容”可能只是response.SQL注入中的
iframe
?您使用的mysql api不推荐使用,您应该切换到pdo或mysqli并使用参数化查询。
mysql_query("INSERT INTO mytable(link) values('$link')");
<?php
define('DB_NAME', 'xxx');
define('DB_USER', 'xxx');
define('DB_PASS', 'xxx');
define('DB_HOST', 'xxx');

$dbh = mysql_connect(DB_HOST, DB_USER, DB_PASS);

if(!$dbh)
{
    die('Could not connect to database: ' . mysql_error());
}

$db_select = mysql_select_db(DB_NAME);

if(!$db_select)
{
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error());
}

if(isset($_POST['submit']) && !empty($_POST['link'])){
$link = mysql_real_escape_string($_POST['link']);
mysql_query("INSERT INTO mytable (link) values('$link')");
if(!mysql_query)
{
    die("sorry");
}
else{ echo "Success"; }

mysql_close();

}
?>


<!DOCTYPE html>
<html>
  <body>
    <title></title>
    <h3>Place your Link Below:</h3>
<form action="" method="post">
    <input type="text" name="link" />
<input type="submit" name="submit" value="submit" />
  </body>
</html>
<?php
define('DB_NAME', 'xxx');
define('DB_USER', 'xxx');
define('DB_PASS', 'xxx');
define('DB_HOST', 'xxx');

$dbh = mysqli_connect(DB_HOST, DB_USER, DB_PASS);

if(!$dbh)
{
    die('Could not connect to database: ' . mysqli_error());
}

$db_select = mysqli_select_db($dbh,DB_NAME);

if(!$db_select)
{
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
}

if(isset($_POST['submit']) && !empty($_POST['link'])){

$link = mysqli_real_escape_string($dbh,$_POST['link']);

mysqli_query($dbh,"INSERT INTO mytable (link) values('$link')");
if(!mysqli_query)
{
    die("sorry");
}
else{ echo "Success"; }

mysqli_close($dbh);

}
?>


<!DOCTYPE html>
<html>
  <body>
    <title>Home Page</title>
    <h3>Please Place your Order Below:</h3>
<form action="" method="post">
    <input type="text" name="link" />
<input type="submit" name="submit" value="submit" />
  </body>
</html>