1

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

5 回答 5

2

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");
于 2013-05-16T21:41:47.517 回答
1

这段代码......是......有点混乱和陈旧。首先要做的事情:不要使用 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/");

?>
于 2013-05-16T21:46:45.037 回答
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()功能已经正式贬值。尽管无论如何它应该可以工作。

于 2013-05-16T21:36:47.137 回答
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');
  }
?>
于 2019-07-18T11:12:21.887 回答
-1

你在这里有一个语法错误:

mysql_close($con)

您需要添加一个分号:

mysql_close($con);

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

如果您要重定向到另一个站点,请考虑使用“http://”或“https://”前缀以清楚起见:

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

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

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

最后,考虑更新您的代码以使用 mysqli 或 PDO 代替已弃用的mysql_*函数。

于 2013-05-16T21:36:05.047 回答