douji9734 2016-10-30 06:53
浏览 509
已采纳

将<form>插入正确的位置

I try to insert a register form in my code but i broke always my template. Where i must but the code in the right way? i found a register script and i wanna push it inside. in the input tags i add the id flags but this destroyed every time my template

<div class="loginbox-or">
<div class="or-line"></div>
<div class="or">OR</div>
</div>
<div class="form-group">
<label>Email: <span class="required">*</span></label>
<input placeholder="" class="form-control" type="email">
</div>
<div class="form-group">
<label>Password: <span class="required">*</span></label>
<input placeholder="" class="form-control" type="password">
</div>
<div class="form-group">
<label>Confirm Password: <span class="required">*</span></label>
<input placeholder="" class="form-control" type="password">
</div>
<div class="loginbox-forgot">
<input type="checkbox"> I accept <a href="">Term and consitions?</a>
</div>
<div class="loginbox-submit">
<input type="button" class="btn btn-default btn-block" value="Register">
</div>
<div class="loginbox-signup"> Already have account <a href="login.html">Sign in</a> </div>
</div>
</div>
</div>
</div>
</div>
</section>



<script type="text/javascript">
$(".full-page").height($(window).height());
$(window).resize(function() {
$(".full-page").height($(window).height());
});
</script>

</div>
</body>

here i downloaded my register script.

<div class="signin-form">

<div class="container">


<form class="form-signin" method="post" id="register-form">

<h2 class="form-signin-heading">Sign Up</h2><hr />

<div id="error">
</div>
<div class="form-group">
<input type="email" class="form-control" placeholder="Email address" name="user_email" id="user_email" />
<span id="check-e"></span>
</div>

<div class="form-group">
<input type="password" class="form-control" placeholder="Password" name="password" id="password" />
</div>

<div class="form-group">
<input type="password" class="form-control" placeholder="Retype Password" name="cpassword" id="cpassword" />
</div>
<hr />

<div class="form-group">
<button type="submit" class="btn btn-default" name="btn-save" id="btn-submit">
<span class="glyphicon glyphicon-log-in"></span> &nbsp; Create Account
</button>

PHP-PART

<?php

        require_once 'dbconfig.php';

        if($_POST)
        {
        $user_email = mysql_real_escape_string($_POST['user_email']);
        $user_password = mysql_real_escape_string($_POST['password']);
        $joining_date = date('Y-m-d H:i:s');

        //password_hash see : http://www.php.net/manual/en/function.password-hash.php
        $password = password_hash( $user_password, PASSWORD_BCRYPT, array('cost' => 11));

        try
        {
        $stmt = $db_con->prepare("SELECT * FROM tbl_users WHERE user_email=:email");
        $stmt->execute(array(":email"=>$user_email));
        $count = $stmt->rowCount();

        if($count==0){
        $stmt = $db_con->prepare("INSERT INTO tbl_users(user_email,user_password,joining_date) VALUES(:email, :pass, :jdate)");
        $stmt->bindParam(":email",$user_email);
        $stmt->bindParam(":pass",$password);
        $stmt->bindParam(":jdate",$joining_date);

        if($stmt->execute())
        {
        echo "registered";
        }
        else
        {
        echo "Query could not execute !";
        }

        }
        else{

        echo "1"; // not available
        }

        }
        catch(PDOException $e){
        echo $e->getMessage();
        }
        }

        ?>
  • 写回答

1条回答 默认 最新

  • donglie9067 2016-10-30 22:55
    关注

    You have a few issues going on here. You should not be mixing database libraries (PDO and mysql_). mysql_* needs to just be removed entirely. Next, you should put the business logic before your page loads, not in the middle. You should have functions (class/methods would be better) that isolate tasks for reuse and flexibility. Here is just a basic idea:

    1) I suggest you have a config.php file located in the root of you site that has common helpful defines.

    /config.php

    define('DS',DIRECTORY_SEPARATOR);
    define('ROOT_DIR',__DIR_);
    define('FUNCTIONS',ROOT_DIR.DS.'functions');
    define('DB_HOST','localhost');
    define('DB_NAME','databasename');
    define('DB_USERNAME','root');
    define('DB_PASSWORD','password');
    

    2) Make a connection function/class. Look up the different options for the connection (UTF-8, turn off prepare emulation, etc).

    /functions/connect.php

    function connect()
        {
            try {
                $con = new \PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
                return $con;
            }
            catch(PDOException $e) {
                die('An error has occurred.');
            }
        }
    

    /functions/autoload.php

    3) Cut down on resources by loading functions only when you need them

    function autoload($array)
        {
            foreach($array as $name) {
                if(!function_exists($name))
                    require_once(FUNCTIONS.DS.$name.'.php');
            }
        }
    

    /functions/query.php

    4) Create a query function with auto-bind option

    function query($con,$sql,$bind=false)
        {
            if(!empty($bind)) {
                foreach($bind as $key=>$value) {
                    $bKey = ":{$ey}";
                    $bindArr[$bKey] = $value;
                }
    
                $query = $con->prepare($sql);
                $query->execute($bindArr);
    
                return $query;
            }
            else {
                return $con->query($sql);
            }
        }
    

    /functions/fetch.php

    5) Just do a generic return to simplify things. Once you get more advanced, you can build this out

    function fetch($query)
        {
            while($row = $query->fetch(PDO::FETCH_ASSOC)){
                $result[] = $row;
            }
    
            return (!empty($result))? $result : false;
        }
    

    /functions/addUser.php

    6) Make a function that adds a user, and that's all it does

    function addUser($con,$username,$password)
        {
            $joined = date('Y-m-d H:i:s');
            $password = password_hash($password, PASSWORD_BCRYPT, array('cost' => 11));
    
            try{
                query("INSERT INTO tbl_users(user_email,user_password,joining_date) VALUES(:0, :1, :2)",array($username,$password,$joined));
                return true;
            }
            catch(PDOException $e) {
                return false;
            }
        }
    

    /functions/userExists.php

    7) Create a check user function with a human-readable name. Makes your if/else conditionals easier to follow.

    function userExists($con,$username)
        {
            $countUser = query($con,"SELECT COUNT(*) as count FROM tbl_users WHERE user_email=:0",array($username));
            $count = fetch($countUser);
            return ($count[0]['count'] > 0);
        }
    

    /signup.php

    Put all the elements together using includes and our autoload function

    <?php
    # Add our config file
    require_once(__DIR__.DIRECTORY_SEPARATOR.'config.php');
    # Add our autoload file
    require_once(FUNCTIONS.DS.'autoload.php');
    # Use our autoload to define our functions we will be using
    autoload(array('connect','query','fetch','userExists','addUser'));
    # Create your connection
    $con     = connect();
    # Check for sign up
    if(!empty($_POST['signup'])) {
        # Since our names are human-readable, you can easily follow what is happening...
        if(!userExists($con,$_POST['user_email'])){
            if(!addUser($con,$_POST['user_email'],$_POST['password'])){
                $error = 'Error occurred.';
            }
            else {
                $success = true;
            }
        }
        else {
            $error = 'User exists';
        }
    }
    ?><!DOCTYPE html>
    ....etc.
    <!-- Down in the body, you can echo the error or success -->
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘