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")
?>
答案 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');
}
?>