2017-02-27 20 views
-4

不喜歡刪除此代碼上的sha1加密,所以我可以存儲我的密碼輸入數據庫而不是加密的代碼。是新來的編碼,所以我需要幫助有問題,從我的代碼中刪除sha1加密

代碼(settings_model.php)

<?php 
    $settings = new Datasettings(); 
    if(isset($_GET['q'])){ 
     $settings->$_GET['q'](); 
    } 

    class Datasettings { 

     function __construct(){ 
      if(!isset($_SESSION['id'])){ 
       header('location:../../'); 
      } 
     } 

     function changepassword(){ 
      include('../../config.php'); 
      $username = $_GET['username']; 
      $password = $_GET['password']; 
      $current = sha1($_POST['current']); 
      $new = sha1($_POST['new']); 
      $confirm = sha1($_POST['confirm']); 
      $q = "select * from userdata where username='$username' and password='$current'"; 
      $r = mysqli_query($db,$q); 
      if(mysqli_num_rows($r) > 0){ 
       if($new == $confirm){ 
        $r2 = mysqli_query($db,"update userdata set password='$new' where username='$username' and password='$current'"); 
        header('location:../settings.php?msg=success&username='.$username.''); 
       }else{ 
        header('location:../settings.php?msg=error&username='.$username.''); 
       } 
      }else{ 
       header('location:../settings.php?msg=error&username='.$username.''); 
      } 
     } 

     function addaccount(){ 
      include('../../config.php'); 
      $level = $_GET['level']; 
      $id = $_GET['id']; 
      $q = "select * from $level where id=$id"; 
      $r = mysqli_query($db,$q); 
      $row = mysqli_fetch_array($r); 
      if($level == 'student'){ 
       $username = $row['studid'];     
       $fname = $row['fname']; 
       $lname = $row['lname']; 
       $password = sha1($username.'-'.$fname); 
      }else{ 
       $username = $row['teachid'];     
       $fname = $row['fname']; 
       $lname = $row['lname']; 
       $password = sha1($username.'-'.$fname); 
      } 
      $verify = $this->verifyusername($username); 
      if($verify){ 
       $q2 = "insert into userdata values(null,'$username','$password','$fname','$lname','$level')"; 
       mysqli_query($db,$q2); 
       header('location:../'.$level.'list.php?r=added an account'); 
      }else{ 
        header('location:../'.$level.'list.php?r=updated'); 
      } 

     } 

     function verifyusername($user){ 
      $q = "select * from userdata where username='$user'"; 
      $r = mysql_query($q); 
      if(mysql_num_rows($r) < 1){ 
       return true; 
      }else{ 
       return false; 
      } 
     } 

     function getuser($search){ 
     include('../config1.php'); 
      $user = $_SESSION['id']; 
      $q = "select * from userdata where username !='$user' and username like '%$search%' order by lname asc"; 
      $r = mysqli_query($db, $q); 
      return $r; 
     } 


      function addaccounts(){ 
      include('../../config1.php'); 
      extract($_POST); 

      $q = "select * from $level where id=$id"; 
      $r = mysqli_query($db,$q); 
      $row = mysqli_fetch_array($r); 
      if($level == 'student'){ 
       $username = $row['studid'];     
       $fname = $row['fname']; 
       $lname = $row['lname']; 
       $password = sha1($username.'-'.$fname); 
      }else{ 
       $username = $row['teachid'];     
       $fname = $row['fname']; 
       $lname = $row['lname']; 
       $password = sha1($username.'-'.$fname); 
      } 
      $verify = $this->verifyusername($username); 
      if($verify){ 
       $q2 = "insert into userdata values(null,'$username','$password','$fname','$lname','$level')"; 
       mysqli_query($db,$q2); 
       header('location:../'.$level.'list.php?r=added an account'); 
      }else{ 
        header('location:../'.$level.'list.php?r=updated'); 
      } 

     } 



    } 
?> 

請幫忙馬上需要一個答案。謝謝。

+1

供參考:不要使用SHA1,這是老被破解。使用'password_hash()' –

+1

你也在混合不同的mysql apis;你不能那樣做。 –

+2

***專家提示:***不要採取行動,不要說你的要求是緊急的。回答問題的人是忙碌的志願者,就像你的一樣。 –

回答

-1

只是改變這一行

$confirm = sha1($_POST['confirm']); 

這個

$confirm = $_POST['confirm']; 
+0

據推測,OP也必須遷移已經存在的密碼。 –

+0

謝謝,我試了一下,但沒有奏效...... –

+0

沒有理由不應該這樣做,這不會改變任何現有的理由,但是任何新理念都會改變。 – ATechGuy