2014-06-27 59 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