2011-03-10 64 views
0

我想提交一个PHP表单到数据库,但我希望当我点击提交按钮时页面刷新自己(而不必去到PHP页面我' m提交到)。我明白我必须使用JS来做这件事,而且我尝试了很多不同的方式,但没有取得任何成功。我使用三个文件,一个用于表单,一个用于JS,最后一个用于将数据发布到数据库中。我是新来的PHP和JS,任何帮助将非常欢迎,谢谢。这里如何使用JavaScript在后台运行PHP

PD的代码是我到目前为止有:

user.php的

<head> 
    ........ 

    <!--      Javascripts      --> 

    <!-- jQuery --> 
    <script type="text/javascript" src="resources/scripts/jquery-1.3.2.min.js"></script> 



    <script type="text/javascript" src="resources/scripts/newuser.form_jquery.js"></script> 

    </head> 

    <body> 
     ................................... 
      ...................................... 
        ...................................... 

      <form action="" id="newuserform" method="post"> 
       <h4>New user</h4> 
       <br /><br /> 

       <fieldset class="column-left">     
        <p> 
         <label>Email</label> 
         <input class="text-input medium-input" type="text" id="email" name="email" /> 

         <br /> 
        </p> 

        <p> 
         <label>First name</label> 
         <input class="text-input medium-input" type="text" id="fname" name="fname" /> 

         <br /> 
        </p>      
       </fieldset> 

       <fieldset class="column-right"> 
        <p> 
         <label>Password</label> 
         <input class="text-input medium-input" type="password" id="pwd" name="pwd" /> 

         <br /> 
        </p> 

        <p> 
         <label>Last Name</label> 
         <input class="text-input medium-input" type="text" id="lname" name="lname" /> 

         <br /> 
        </p> 
       </fieldset>    
        <p> 
         <input class="button" type="button" value="Create" id = "submit_btn"/> 
        </p> 
       <div id="errormsg" class="notification error png_bg"> 
        <div> 
         Invalid login, please check your username and password! 
        </div> 
       </div> 
      </form> 
       </body> 

newuser.form_jquery.js

$(document).ready(function() { 
    $("#errormsg").hide(); 
    $("#newuserform").keypress(function(e){ 
    if(e.which == 13){ 
     $("#errormsg").hide(); 
     jQuery('#submit_btn').focus().click(); 
     e.preventDefault(); 
     return false; 
    } 
}); 


$("#submit_butn").click(function() { 


    var e = '#email'; 
    var p = '#pwd'; 
    var f = '#fname'; 
    var l = '#lname'; 

    var _e = $(e).val(); 
    var _p = $(p).val(); 
    var _f = $(f).val(); 
    var _l = $(l).val(); 


    var postFile = 'application/post.newuser.php'; 
    var dataurl = 'users'; 

    $.post(postFile, { e: _e, p: _p, f: _f, l: _l}, function(data) { 
     if(data.status==true){ 
      window.location=dataurl; 
     } else { 

      $("#errormsg").show(); 

     } 
    } 

    ,'json'); 

}); 

    }); 

post.newuser.php *

public function newuser($e, $p, $f, $l) 
{ 
    //e: email, p: password, f: first_name, l: last_name 

    $return = false; 

    $sql = "INSERT INTO users (email, password, first_name, last_name, role, enabled)"; 
    $sql .= " VALUES ("; 
    $sql .= "'".$e."', "; 
    $sql .= "'".SHA1($p)."', "; 
    $sql .= "'".$f."', "; 
    $sql .= "'".$l."', "; 
    $sql .= "'2', "; 
    $sql .= "'1' "; 
    $sql .= ")"; 

    $mysql = new mysql(); 
    $mysql->connect(); 
    $q = $mysql->queryin($sql); 

    if ($q) 
    { 
     $return = true; 
    } 

    $mysql->end(); 

    return $return; 

} 

对不起,很长的文章。

回答

-3

尝试AJAX //在php你Wnt信号做,并返回你的价值json_decode($ yourvariable) //所有json_decode所做的是改变你的输出到一个数组的格式是什么。以便下面的函数可以读取它。

$.get("ajax.php", { id: hash }, //equivalent to ajax.php?id=hash 

function(out) 
{ 

}, "json"); 

退房我怎么用这个在我的网站: http://iadprint.com/products?product=product%201 (查看源代码,并滚动至底部)

+2

请只添加相关的代码到您的答案。 – 2011-03-10 07:45:56

0

如果要将信息发送到数据库并重新加载页面,则不需要JavaScript。只需在PHP文档中添加一条if语句来查看是否设置了$ _POST [],并确保通过的action属性提交数据到当前页面。

+2

咦?为什么你会推荐使用sha1()的md5()? – glomad 2011-03-10 06:29:31

+0

这是一场漫长的辩论。我不会详述。但是在散列它们之前,你绝对应该密码。我可以指导你到好的维基百科吗? http://en.wikipedia.org/wiki/Salt_(cryptography) – 2011-03-10 06:38:26

+1

MD5是比SHA-1更弱的加密算法。这只是一个事实,没有什么可争辩的。无论如何,它们都破碎了,没有盐就没用了。我很好奇为什么你会推荐一个较弱的算法,而不是'bcrypt'什么的。 – glomad 2011-03-10 06:48:53

1

当你想要做的背景,你必须使用AJAX所以从XMLHttpRequest对象的东西JavaScript会为你服务。你必须重建你已经有了使用AJAX的东西。这很漂亮。 去http://www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp并阅读有什么。这会花费大约10分钟的时间来理解。

1

页面刷新自身的原因是因为您没有停止浏览器提交表单的默认行为。这是我会推荐做的。

$("#newuserform").submit(function(event) { 
// handle processing 

// stop the form from submitting since you used Ajax to submit 
event.preventDefault(); 
}); 

而且我会考虑把你的JS代码绑定到提交方法而不是点击的方式来编写更好的代码。

此外,虽然它是好的,你哈希保存的密码,你是开放SQL Injections。 mysql_real_escape_string()是你的朋友。 :)