Php 如何将表单数据提交到数据库并将某人重定向到URL?
PHP新手:关于表单和PHP的快速问题 Html页面中的表单Php 如何将表单数据提交到数据库并将某人重定向到URL?,php,Php,PHP新手:关于表单和PHP的快速问题 Html页面中的表单 <form class="form" id="form" onsubmit="return validateForm()" method="post" action="submitdatabase.php"> 我可以成功地将数据插入数据库,但如何将它们定向到某个URL 如果有帮助,下面是我的PHP,不用说它不起作用: <?php $con = mysql_connect("loca
<form class="form" id="form" onsubmit="return validateForm()" method="post" action="submitdatabase.php">
我可以成功地将数据插入数据库,但如何将它们定向到某个URL
如果有帮助,下面是我的PHP,不用说它不起作用:
<?php
$con = mysql_connect("localhost","root","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);
$sql="INSERT INTO leads (fname, lname, address, phone, email)
VALUES ('$_POST[fname]','$_POST[lname]','$_POST[address]','$_POST[phone]','$_POST[email]')";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
mysql_close($con)
header("Location: URLREDIRECTION.com")
?>
此处出现语法错误:
mysql_close($con)
您需要添加分号:
mysql_close($con);
如果脚本在header()
语句之前生成任何输出,则不会发生重定向。警告、错误和有意输出都会导致header()
语句失败
如果您重定向到另一个站点,请考虑使用“http://'或'http://'前缀以清晰:
header("Location: http://urlredirection.com");
如果要重定向到自己的站点,只需使用前导斜杠:
header("Location: /your/url.php");
<>最后,考虑更新您的代码以使用MySQL或PDO,而不是弃用的<代码> MySqL**/Cuff>函数。< /P>
显然,这是不安全的。OP知道这一点,并选择这样做
事情是这样的。如果他真的想故意做事
错,我没问题
阅读此答案的任何其他人都应该记住这是
这是一个可怕的练习,我只是给出了一个答案,因为它是
显然是他想要的。不要用这个
在实际应用程序中,至少应该使用mysql\u real\u escape\u string()
从
用户输入,或者(更好的)结合使用MySQLi或PDO
使用预先准备好的语句,以消除SQL注入的机会。
你漏了一个分号。
此外,您更改了标题行,而不是离开您试图重定向到的位置。我们应该如何调试一个我们甚至看不见的脚本?试试这里的帖子,看看它是否能把你带到谷歌。如果不是的话,那就有别的事情发生了。如果是,则您键入的header()
函数错误,但我们无法判断,因为您没有向我们显示它
试试这个:
<?php
$con = mysql_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
mysql_select_db("database", $con);
$sql="INSERT INTO leads (fname, lname, address, phone, email)
VALUES
('$_POST[fname]','$_POST[lname]','$_POST[address]','$_POST[phone]','$_POST[email]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header("Location: http://www.google.com");
?>
PHP新手。。这应该有效
总是使用这个来转义字符串mysql\u escape\u string($var)
此外,mysql\u connect()
也会贬值,请改用mysqli\u connect('host'、'user'、'password'、'database')
。<?php
$con = mysql_connect("localhost","root","");
if (!$con){
die('Could not connect: ' . mysql_error());
}
$fname = mysql_escape_string($_POST['fname']);
$lname = mysql_escape_string($_POST['lname']);
$address = mysql_escape_string($_POST['address']);
$phone = mysql_escape_string($_POST['phone']);
$email = mysql_escape_string($_POST['email']);
mysql_select_db("database", $con);
$sql="INSERT INTO leads (fname, lname, address, phone, email)
VALUES
('$fname','$lname','$address','$phone','$email')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
header("Location: http://yoursite.com");
此代码。。。是有点乱,有点旧。第一件事:不要使用mysql_*函数。您还必须转义用户的数据。为了将两者简化为一体,我将使用PDO。另外,正如其他人所说,您还需要关闭几个分号
<?php
/* Create a PDO object */
$DB = new PDO("mysql:host=localhost;dbname=database",'root','');
/* Prepare the statement you want to do, in this case, an INSERT */
$con = $DB->prepare("INSERT INTO leads (fname, lname, address, phone, email)
VALUES (?,?,?,?,?)");
/* Execute the previous statement with the corresponding values for each '?' */
$con->execute(array($_POST['fname'],
$_POST['lname'],
$_POST['address'],
$_POST['phone'],
$_POST['email']));
/* Redirect the user */
header("Location: http://www.example.com/");
?>
试试这个……这个100%就行了
<?php
$fname=$_POST['fname'];
$lname=$_POST['lname'];
$phn=$_POST['phn'];
$email=$_POST['email'];
$street=$_POST['street'];
$city=$_POST['city'];
$state=$_POST['state'];
$con=mysqli_connect('localhost','root','','database');
$insert= "INSERT INTO table (id,name,phone,email,street,city,state) VALUES('','$fname $lname','$phn','$email','$street','$city','$state')";
$run=mysqli_query($con,$insert);
if($run)
{
header('location:https://google.com');
}
?>
。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。另外,$\u POST[fname]
是无效语法$\u POST['fname']
是,但是这样使用它会使您非常容易受到SQL注入的攻击。您的头()是否不起作用?并把代码>在mysql关闭($con)
之后,这是否有效?在mysql\u close()
您有正确的使用方法后,您缺少了一个分号。当你运行你的脚本时会发生什么?这家伙是一个php新手,这可能会让他困惑..:):这就是为什么我添加了教程和所有这些评论(;我希望他理解斯萨·莫拉莱斯,如果你在阅读教程后不理解这里的内容,请不要犹豫,在评论中要求一些澄清(:谢谢!!!!!成功了。我知道你刚刚又为某人节省了3个小时的生命。不,这会使你的数据库被破坏,有人很容易入侵。请逃脱(清理)你的代码。太好了!从现在开始,当你遇到问题时,你应该使用一些东西来验证你的代码。因为这确实会引发错误。此外,如果你在这里-1给出了另一个答案,那么它与我的答案完全相同,这一点你也知道。@FrankPresenciaFandos我们已经讨论过了。请将你的评论放在他的问题下。将它放在我的答案下会让你感到惊讶看起来是我造成了这个漏洞,而事实上这是他的剧本。我所做的只是向他展示如何让它发挥作用。是的,我知道,但因为我不喜欢-1看到每个没有提到漏洞的答案,我试图取消否决票。但为时已晚。我不知道为什么有人否决了你的答案。事实上,这和我的答案是一样的更详细。对他来说,这不是一个剪切/粘贴工作。+1来自我!我认为这是一个很好的答案。但是如果你打算重新编写他的大部分脚本,为什么不使用mysqli()
。他现在确实有了一个更好的答案,但你做的工作与让他一路走到那里所需的工作量相同,但只让他走了一半。