Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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
Php 如何将表单数据提交到数据库并将某人重定向到URL?_Php - Fatal编程技术网

Php 如何将表单数据提交到数据库并将某人重定向到URL?

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

PHP新手:关于表单和PHP的快速问题

Html页面中的表单

 <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()
。他现在确实有了一个更好的答案,但你做的工作与让他一路走到那里所需的工作量相同,但只让他走了一半。