2017-06-02 11 views
-5

ログインスクリプトを動作させるにはどうすればよいですかスクリプトをチェックしてください。何か問題がないとわかりません。ログインしようとすると、私のPHP/mysqlスクリプトが動作しません

<?php 
$conn = mysql_connect("localhost","root","") or die("could not connect to server"); 
mysql_select_db("users",$conn) or die("could not connect to database"); 
?> 
<?php 
if (isset($_POST['save'])){ 
ob_start(); 
$UserName = clean($_POST['UserName']); 
$Password =(md5($_POST['Password'])); 

    $qry="SELECT FROM userstable WHERE UserName='$UserName' AND Password='$Password' AND status=1"; 
    $result=mysql_query($qry); 

if($result) { 
     if(mysql_num_rows($result) > 0) { 
      session_regenerate_id(); 
      $member = mysql_fetch_assoc($result); 
      session_start(); 
      $_SESSION['SESS_MEMBER_ID'] = $member['id']; 
      $_SESSION['loggedin'] = 1; 
      session_write_close(); 
      header("location: home.php"); 
     }else {header("location: login.php"); exit(); } 
    }else { die("Query failed");} 
} 
?> 
+2

を使用することができ、エラーとは何ですか? mysql..use mysqliの使用をやめてください。 md5関数を誤って使用しています。 –

+3

**廃止予定の 'mysql_ * 'APIを使用して**停止してください。 'mysqli_ *'または 'PDO'を使用してください – Jens

+1

SQL注入を防ぐ準備文について学ぶ – Jens

答えて

1

あなたはより多くのあなたは内の選択したい列を修正する必要が確保されるようにしかし、あなたのSQL文で、この「*」が欠けていますあなたの声明

$qry="SELECT UserName, Password FROM userstable WHERE UserName='$UserName' AND Password='$Password' AND status=1"; 
    $result=mysql_query($qry); 

しかし、 ted mysql_ * API。

* mysqli_使用するか、PDO

あなたはこの

<?php 
if (isset($_POST['save'])){ 
session_start(); 
if(isset($_SESSION['SESS_MEMBER_ID']) && $_SESSION['SESS_MEMBER_ID']!=''){header("Location:home.php");} 
$dbh=new PDO('mysql:dbname=dbname;hostdbhost', 'dbusername', 'dbpassword');/*Change The Credentials to connect to database.*/ 
$username=$_POST['username']; 
$password =(md5($_POST['pass'])); /*Encrpt your password with md5.*/ 
if(isset($_POST) && $username!='' && $password!=''){ 
$sql=$dbh->prepare("SELECT id,password,username FROM tablename WHERE username=?"); 
$sql->execute(array($username)); 
while($r=$sql->fetch()){ 
    $p=$r['password']; 
    $u=$r['username']; 
} 

if($p==$password){ 
      $_SESSION['SESS_MEMBER_ID']=$id; 
      $_SESSION['SESS_USERNAME'] = $u; 

    header("Location:home"); 
}else{ 
    header("Location: login.php?error=1"); 
} } 
} 

?> 
1

あなたが選択したい列を欠場:非推奨mysql_* APIを使用して停止

SELECT col1, col2 , ... FROM userstable WHERE UserName='$UserName' AND Password='$Password' AND status=1"; 

を。 mysqli_*またはPDO

SQLインジェクションを防ぐために準備された文について学んでください。

はまた、選択したテーブルの少なくとも1つの列を選択するSQL関数に

+0

ちょうどロールバックした非常に便利な情報です。 –

+0

@MasivuyeCokileより質問にコメントとして追加してください。 – Jens

+0

私はあなたの答えを変更しなかった、私はそれを改善しました。これはコミュニティネットワークです。 –

1

を実行した後にエラーをチェック。

SELECT col1, col2 , ... 
FROM userstable 
WHERE UserName='$UserName' AND Password='$Password' AND status=1"; 

また、お客様のmd5機能を修正してください。

変更この

$Password =(md5($_POST['Password'])); 

から$Password =md5($_POST['Password']);

関連する問題