2013-05-16 26 views
2

PHP新手在這裏:在形式和PHP快速的問題,如何將表單數據提交到數據庫並將某人重定向到URL?

形式在Html頁面中

<form class="form" id="form" onsubmit="return validateForm()" method="post"   action="submitdatabase.php"> 

我可以成功地將數據插入到我的數據庫,但我怎麼引導他們到某網址呢?

如果有幫助,下面是我的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") 
?> 
+1

[**請不要在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – ceejayoz

+2

另外,'$ _POST [fname]'是無效的語法。 '$ _POST ['fname']'是,但是像這樣使用它會讓你非常容易受到SQL注入的攻擊。 – ceejayoz

+1

是你的'header()'不工作?並在'mysql_close($ con)' – ROMMEL

回答

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"); 
+0

我認爲這是一個很好的答案。但是,如果你要重寫大部分腳本,爲什麼不使用'mysqli()'。他現在確實有一個答案,但你已經完成了同樣的工作量,可以讓他一路走到盡頭,但只能讓他走到一半。 – user1596138

0

你有一個語法錯誤的位置:

mysql_close($con) 

您需要添加一個分號:

mysql_close($con); 

如果你的腳本將產生header()語句之前的任何輸出重定向將不是H澳鵬。警告,錯誤和故意輸出都將導致您的語句失敗。

如果要重定向到另一個網站,可以考慮使用的「http://」或「https://」前綴清晰:

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

如果要重定向到自己的網站,只要使用領先的斜線:

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

最後,考慮更新你的代碼使用庫MySQLi或PDO來代替過時mysql_*功能。

+0

我不知道爲什麼有人投下你的答案。這與我的一樣,實際上它更詳細。對他來說,這不僅僅是一個剪裁/粘貼的工作。來自我的+1! – user1596138

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()功能正式貶值。儘管它應該工作無論如何。

+0

謝謝!!!!!這工作。知道你只是保存了另外3個小時的某人的生活 –

+0

不,這可以讓你的數據庫崩潰,並且有人很容易入侵它。請逃避(消毒)您的代碼。 –

+0

太棒了!遇到問題時,您應該立即使用某些內容來驗證代碼。因爲這確實會引發錯誤。另外,如果你在這裏輸入了另一個答案,那就和你一樣。 – user1596138

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

?> 
+0

這個人是一個PHP新手,這可能會讓他感到困惑。:):D – user1862764

+0

這就是爲什麼我添加了教程和所有這些評論(;我希望他了解 –

+0

Sua Morales,如果你在閱讀本教程後不理解某些內容,請不要猶豫,在此要求澄清評論(: –

相關問題