2014-06-27 97 views
2

最後編輯時間:一切正常,現在將發佈以下工作代碼,清理後,像idealcastle說和修正了一些語法錯誤一切正常,因爲它與JavaScript驗證一起應該謝謝大家PHP的聯繫表格插入到MySQL

HTML代碼在這裏:

<form name = "contact " id="contact_form" action="postcontact.php" method="post" onsubmit="return validateForm();"> 
       <div id ="boxc"> 
        <h3>Porosia juaj ?</h3> 
        <input name="orders" type="checkbox" value="veshje">Veshje 
        <input name="orders" type="checkbox" value="mbathje">Mbathje 
        <input name="orders" type="checkbox" value="stoli">Stoli 
       </div> 
       <div class="row"> 
        <label class="required" for="name" >Emri:</label><br /> 
        <input id="name" name="name" type="text" value="" size="30" placeholder = "Emri"/><br /> 
        <span id="name_validation" class="error"></span> 
       </div> 
       <label class="required" >Country/State:</label><br /> 
       <div class = "row"id="statecmb"><select name = "state"> 
        <option value="chose" selected>[choose yours]</option> 
        <option value="albania">Albania</option> 
        <option value="kosovo">Kosovo</option> 
        <option value="germany">Germany</option> 
        <option value="bangladesh">Bangladesh</option> 

       </select> 
       <span id="state_validation" class="error"></span></div> 
       <div class="row"> 
        <label class="required" for="email" >Email:</label><br /> 
        <input id="email" name="email" type="text" value="" size="30"placeholder = "Email" /><br /> 
        <span id="email_validation" class="error"></span> 
       </div> 
       <div class="row"> 
        <label class="required" for="message" >Mesazhi:</label><br /> 
        <textarea id="message" name="message" rows="7" cols="30" placeholder = "Mesazhi"></textarea><br /> 
        <span id="message_validation" class="error"></span> 
       </div> 

       <input name="submit" id = "sub"type="submit" value="Submit" /> 
       <div class="rating"> 
        <h3>Vlerso Sherbimin :</h3> 
        <input type="radio" name="rate" value="1">1 
        <input type="radio" name="rate"value="2">2 
        <input type="radio" name="rate" value="3">3 
        <input type="radio"name="rate" value="4">4 
        <input type="radio" name="rate" value="5">5 
       </div> 
      </form> 

JavaScript文件:

function validateForm() { 
    var valid = 1; 
    var email = document.getElementById('email'); 
    var email_validation = document.getElementById("email_validation"); 
    var name = document.getElementById('name'); 
    var name_validation = document.getElementById("name_validation"); 
    var message_validation = document.getElementById("message_validation"); 
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 

    if (name.value === "") { 
     valid = 0; 
     name_validation.innerHTML = "Ju lutem shenoni emrin tuaj"; 
     name_validation.style.display = "block"; 
     name_validation.parentNode.style.backgroundColor = "#FFDFDF"; 
    } else { 
     name_validation.style.display = "none"; 
     name_validation.parentNode.style.backgroundColor = "transparent"; 
    } 

    if (message.value === "") { 
     valid = 0; 
     message_validation.innerHTML = "Ju lutem plotesoni fushen e mesazhit"; 
     message_validation.style.display = "block"; 
     message_validation.parentNode.style.backgroundColor = "#FFDFDF"; 
    } else { 
     message_validation.style.display = "none"; 
     message_validation.parentNode.style.backgroundColor = "transparent"; 
    } 

    if (email.value === "") { 
     valid = 0; 
     email_validation.innerHTML = "Ju lutem shenoni email tuaj"; 
     email_validation.style.display = "block"; 
     email_validation.parentNode.style.backgroundColor = "#FFDFDF"; 
    } else { 
     email_validation.style.display = "none"; 
     email_validation.parentNode.style.backgroundColor = "transparent"; 
    } 

    if (!filter.test(email.value)) { 
     valid = 0; 
     email_validation.innerHTML = "Email juaj nuk eshte valid"; 
     email_validation.style.display = "block"; 
     email_validation.parentNode.style.backgroundColor = "#FFDFDF"; 
    } else { 
     email_validation.style.display = "none"; 
     email_validation.parentNode.style.backgroundColor = "transparent"; 
    } 
    if (!valid) 
     alert("KENI ERROR : Fushat duhen te plotesohen "); 

} 

php文件:

<?php 
$host = 'localhost'; 
$user = 'root'; 
$pass = ''; 
$db = 'herdesigns'; 
$con = mysqli_connect($host, $user, $pass,$db) or die(mysqli_error()); 
/* mysqli_select_db($con , $db); */ 
?> 

<?php 

if (isset($_POST['submit'])) 
{ 
$name = mysqli_real_escape_string($con, $_POST['name']); 
$email = mysqli_real_escape_string($con, $_POST['email']); 
$message = mysqli_real_escape_string($con, $_POST['message']); 
$rate = mysqli_real_escape_string($con, $_POST['rate']); 
$orders = mysqli_real_escape_string($con, $_POST['orders']); 
$state = mysqli_real_escape_string($con, $_POST['state']); 
/*$con = mysqli_connect($host, $user, $pass,$db) or die(mysqli_error());*/ 
/*mysqli_select_db($con , $db);*/ 
$sql = "INSERT INTO contacts (
orders, 
name, 
state, 
email, 
message, 
rate 
) 
VALUES (
'$orders', 
'$name', 
'$state', 
'$email', 
'$message', 
'$rate' 
)"; 
if (!mysqli_query($con,$sql)) { 
die('Error: ' . mysqli_error($con)); 
} 
echo "Mesazhi juaj eshte postuar me sukses"; 
header('Location:contact.php'); 

mysqli_query($con, $sql); 

mysqli_close($con); 
} 
?> 
+0

'validateForm()'的代碼是什麼?它可能會阻止表單發佈。另外,使用SQL準備好的語句來防止SQL注入。 –

+1

**危險**:您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068)並應使用[現代替換](http:// php。淨/手動/ EN/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin

+0

$ sql =「INSERT INTO contacts SET name ='test'」; (先運行測試,看看你是否可以手動插入任何東西到mysql) – timothymarois

回答

0

編輯: 什麼領域是NOW()?

如果沒有實際字段發送該日期時間,我會刪除該字段。或者爲此添加一個字段。嘗試提交的Mysql不NOW()它看起來像

$sql = "INSERT INTO contacts (
      name, 
      email, 
      message, 
      rate, 
      orders, 
      state 
     ) 
     VALUES (
      '$name', 
      '$email', 
      '$message', 
      '$rate', 
      '$orders', 
      '$state' 
     )"; 

首先件事我注意到的是PHP代碼被顯示在瀏覽器。如果您正在發送到文件://這是不好的,你應該使用

http//localhost/ 

(如果你是在本地測試),或使用服務器的URL,如果活當然。

這裏找到
Browser is showing PHP code instead of processing it

, 你應該清理被輸入您的MySQL數據。如果這些值中的任何一個用單/雙引號提交內容,則mysql查詢將失敗。

由於您使用的是舊版本的MySQL功能,這裏是逃生功能,應該工作

mysql_real_escape_string() 

我會做這個,

$sql = "INSERT INTO contacts (
      name, 
      email, 
      message, 
      rate, 
      orders, 
      state 
     ) 
     VALUES (
      '".mysql_real_escape_string($name)."', 
      '".mysql_real_escape_string($email)."', 
      '".mysql_real_escape_string($message)."', 
      '".mysql_real_escape_string($rate)."', 
      '".mysql_real_escape_string($orders)."', 
      '".mysql_real_escape_string($state)."', 
      NOW() 
     )"; 

我不知道,如果這些人是原因,但它們是你所發佈內容的紅旗。你應該經常清理(轉義)任何來自mysql查詢崩潰的輸入。

+0

剛剛嘗試過,當我點擊提交按鈕時,它只是發送給我postcontact.php在一個空白頁上,是的,我通過「localhost/contact.php」執行此操作 –

+0

空白頁是好的,這意味着PHP正在處理。任何發送到MySQL?將此添加到<?PHP error_reporting(E_ALL)中的該PHP頁面的頂部;現在再次點擊提交,你看到了什麼錯誤。 – timothymarois

+0

我編輯了這篇文章,讓我知道如果解決了MySQL問題。如果沒有看到我上面關於錯誤的評論。 – timothymarois

0

它可能是validform.php上的錯誤代碼500。

請在firefox上安裝firefug,它會爲您節省很多時間。鍵入[F12]重新加載頁面,網絡選項卡將顯示錯誤代碼。

也,你需要通過web服務器來得到這個頁面:http://localhost/dir/file代替c://shittyos_amp/dir/thing.php

另外,你應該很容易使用PDO的API,用於連接如與DB每個請求的pdo->準備將確保請求您。

不要擔心這很容易! 請參閱PHP: Is mysql_real_escape_string sufficient for cleaning user input?

不要說你不需要安全性:如果用戶在其中輸入sql命令,此輸入表單可能會擦除數據庫!

不再,如果文件是客戶端執行的,它將永遠不會保護任何東西,因爲JS可以被用戶禁用。

注:我仍然認爲自己是一個noob(這是我的第一個答案!),永遠不要忘記,網絡每天都在移動,作爲安全。前端=友好界面(代碼)後端= api(硬/低級代碼)

PS:閃存是醜陋的,並且是前端和後端是服務器端的應用程序角度。過時,Adobe產品不是免費的,因爲自由和他們的雲吸收^^(troll off)

它是你的嗎? http://www.her-design.com/

+0

就像我說的這是一個大學項目,我們的教授給了我們一些psd文件切片後切片他們,我們應該添加一些PHP,這就是爲什麼我說沒有必要的安全measueres –

+0

你可以:瞭解什麼是人支付向你學習,或者,從一開始就學會真正的好習慣 – tuxun

+0

ps:使用異常會顯示你的錯誤 – tuxun