2014-01-13 4 views
0

Я пытаюсь создать простую форму входа/регистрации с помощью PHP/Html/MySql. Я успешно создал регистрационную форму (которая подчиняется моей базе данных), однако я не совсем уверен, как выполнить регистрацию. Ниже я попытался до сих пор.Простая страница входа в систему PHP - PHP, MySql, HTML

У меня есть две модели в дополнение к моей модели Database.php (содержит соединение db), Client Data.php и ClientDataSet.php Страница login.php и страница login.phtml.

ClientData.php выглядит следующим образом:

 <?php 
    require_once('Models/Database.php'); 
    require_once ('Models/ClientDataSet.php'); 

    class ClientData { 

    private $email, $password; 

    public function __construct($dbRow) { 
    $this->email = $dbRow['Email']; 
    $this->password = $dbRow['Password']; 
    }  

    public function getEmail() { 
    return $this->email; 
    } 

    public function getPassword() { 
    return $this->password; 
    } 
} 

ClientDataSet.php

 <?php 
require_once('Models/Database.php'); 
require_once ('Models/ClientData.php'); 

class ClientDataSet{ 
protected $_dbHandle, $_dbInstance; 

public function __construct() { 
    $this->_dbInstance = Database::getInstance(); 
    $this->_dbHandle = $this->_dbInstance->getdbConnection(); 
}   

    public function createClient($email, $password){ 
     $sqlQuery='INSERT INTO mydatabase_Client (Email, Password,) VALUES ('.  "'$email'".','. "'$password'".')'; 

    //echo $sqlQuery;// useful check to see what Query has been created 

    $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement 
    $statement -> execute(); 
    } 

    public function fetchClient($email, $password){ 
     $sqlQuery='SELECT * FROM mydatabase_Client WHERE (Email='. "'$email'".', Password='. "'$password'".')'; 

    //echo $sqlQuery;// useful check to see what Query has been created 

    $statement = $this->_dbHandle->prepare($sqlQuery); // prepare a PDO statement 
    $statement -> execute(); 
    } 
} 

login.php

 <?php 
require_once('Models/Database.php'); 
require_once('Models/ClientData.php'); 
require_once('Models/ClientDataSet.php'); 
session_start(); 

$view = new stdClass(); 
$view->pageTitle ='Login'; 

if(isset($_POST['submit'])) {  
     $clientDataSet= new ClientDataSet(); 
     $clientDataSet->fetchClient($_POST['Email'], $_POST['Password']); 
} ?> 

<?php 

require_once('Views/login.phtml'); 

login.phtml

<?php require('template/header.phtml') ?> 
<h3>Login Page</h3> 
<p>If you have not already Registered. <a href="register.php">Register Here.</a></p> 
    <p><strong>Login</strong> using your <strong>email address</strong> and password.</p> 
    <table class="inputtable"> 
     <tr> 
      <td class="label">Email:</td> 
      <td class="inputtd"> 
       <input name="Email" type="email" class="standardwidth" /></td> 
     </tr> 
     <tr> 
      <td class="label">Password:</td> 
      <td class="inputtd"> 
       <input name="Password" type="password" class="standardwidth" /></td> 
     </tr> 
    </table> 
    <div> 
     <input type="submit" value="Login" name="submit"/> <input type="reset" value="Reset" name="reset"/> 
    </div> 
+0

вы, кажется, хватает своего открытия и закрытия формы теги? –

+0

Ваше право, я добавил его :) – user2904529

ответ

1

Прежде всего, НЕ конкатенации строк создавать запросы. При использовании PDO с mysql вы должны использовать привязку параметров. То, как вы создаете свой SQL-запрос, дает вам широкое распространение для SQL-инъекций.

Смотрите здесь: How can I prevent SQL injection in PHP?

Теперь, на вашу конкретную проблему: Вы не используете форму HTML. Вы должны обернуть свои элементы ввода в форме с правильными параметрами формы, иначе ваш браузер не будет отправлять какие-либо данные на сервер.

Это будет выглядеть примерно так:

<form name="login" action="html_form_action.php" method="post"> 

Дальнейшее чтение: HTML forms

+0

Thankyou. Я не слишком беспокоюсь о нападениях как о своем личном проекте, над которым я работаю - вряд ли будет публично в ближайшее время :) – user2904529

+0

Хорошо, тогда это хорошая идея, чтобы строить хорошие привычки на случай, если вы когда-нибудь сделаете другой проект. Если часть

помогла, пожалуйста, примите ответ. – Shane

+0

это может быть частная и локальная, но наилучшая практика с самого начала не повредит, но улучшит знание и код. –

Смежные вопросы