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

时间:2013-05-16 21:32:02

标签: php

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")
?>

5 个答案:

答案 0 :(得分:1)

PHP新手..这应该工作
总是使用它来转义字符串mysql_escape_string($ var);
同样mysql_connect()折旧,请改用mysqli_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");

答案 1 :(得分:1)

这段代码......有点乱,老了。首先要做的事情是:不要使用mysql_ *函数。您还必须转义用户的数据for sure。为了简化两者,我将使用PDO。 Here you have a tutorial (just click here)。另外,正如其他说明的那样,你还需要关闭几个分号。

<?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/");

?>

答案 2 :(得分:0)

这里有语法错误:

mysql_close($con)

您需要添加分号:

mysql_close($con);

如果您的脚本在header()语句之前生成任何输出,则不会发生重定向。警告,错误和故意输出都会导致header()语句失败。

如果您要重定向到其他网站,请考虑使用“http://”或“https://”前缀以明确:

header("Location: http://urlredirection.com");

如果您要重定向到自己的网站,只需使用前导斜杠:

header("Location: /your/url.php");

最后,考虑更新代码以使用mysqli或PDO而不是弃用的mysql_*函数。

答案 3 :(得分:0)

  

显然这不安全。 OP知道这一点并且选择来做   这样的事情。如果他真的希望有意做事   错了我没问题。

     

任何阅读此答案的人都应该记住这是   可怕的做法,我只是作为一个答案,因为它是   显然他想要什么。不要使用它。

     

在实际的应用程序中,您应该至少使用mysql_real_escape_string()来逃避$_POST变量   用户输入,或(更好),结合使用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");
?>

此外,正如少数人所指出的那样,mysql()功能已正式折旧。虽然它应该是有效的。

答案 4 :(得分:0)

尝试一下。这可以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');
  }
?>