Jump to content
Sign in to follow this  
Kritinzh

Php palīdzība nepiciešama...

Recommended Posts

Meklēju , kas spētu paskaidrot un izpalīdzēt nedaudz ar php izskaidrot pāris elementāras lietas, kurās es apjūku...



p.s paldies jau iepriekš...

Edited by Kritinzh

Share this post


Link to post
Share on other sites

<?php 

 

if (isset($_POST['pieslegsanas'])){

 

  require  'conn.php';

  global $conn;

 

  $email = $_POST['epasts'];

  $password = $_POST['parole'];  

 

  $sql = "SELECT * FROM user_acounts where e_pasts=?;";

  $stmt = mysqli_stmt_init($conn); // Inicializācija

 

 if(!mysqli_stmt_prepare($stmt, $sql)){

  header ('location: login.php?error');

  exit();

 

  }else{

    mysqli_stmt_bind_param($stmt, "s" ,$email);

    mysqli_stmt_execute($stmt);

    $result = mysqli_stmt_get_result($stmt); // Iegūst rezultātu

  }

  if ($row = mysqli_fetch_assoc($result)){ // Šeit gaidāma tikai viena atbilde 

    $password_check = password_verify($result, $row['parole']);

      if ($password_check == false){

        header ('location:login.php?password=false');

        exit();

      }else if ($password_check == true){

        session_start();

        header('location: index.php?register=true');

        exit();

      }

   }

   mysqli_stmt_close($stmt);

   mysqli_close($conn);

}

 

?>

 

 

 

Šis ir mans login pārbaude tikai visu laiku atgriež parole nepariez kaut gan parole ir pareiza!

 

@kapteinisVarētu paskaidrot kļudu manu? 

Edited by Kritinzh

Share this post


Link to post
Share on other sites
4 minutes ago, Kritinzh said:

Tas tik bija testam password_hash

Parole datubāzē jau hashota stāv, tpc ja salīdzini, nebūs vienāda. Cik es tā domāju.

Share this post


Link to post
Share on other sites

ja ir mysqli_stmt_get_result, tad

    $result = mysqli_stmt_get_result($stmt); // Iegūst rezultātu

un password_verify($result, $row['parole']);

 

Result nav ievadītā parole. Tur ir jābūt password_verify($password,$row["parole"];

Share this post


Link to post
Share on other sites
9 minutes ago, Chewie said:

ja ir mysqli_stmt_get_result, tad

    $result = mysqli_stmt_get_result($stmt); // Iegūst rezultātu

un password_verify($result, $row['parole']);

 

Result nav ievadītā parole. Tur ir jābūt password_verify($password,$row["parole"];

Tāpat rāda parole nepareiza! 

 

Plus kad stmt gribi uz ekrana izvadit rada ka neko neatgriež jeb $result

Edited by Kritinzh

Share this post


Link to post
Share on other sites
<?php

if (!isset($_POST['pieslegsanas'])) {
    header("login.php?error");
}

require  'conn.php';
global $conn;

$email = $_POST['epasts'];
$password = $_POST['parole'];

$sql = "SELECT * FROM user_acounts where e_pasts=?;";
$stmt = mysqli_stmt_init($conn);

if(!mysqli_stmt_prepare($stmt, $sql)){
    header ('location: login.php?error');
    exit();
}

mysqli_stmt_bind_param($stmt, "s" ,$email);
mysqli_stmt_execute($stmt);

$result = mysqli_stmt_get_result($stmt); // Iegūst rezultātu

if ($row = mysqli_fetch_assoc($result)){ // Šeit gaidāma tikai viena atbilde

    if (!password_verify($password, $row[0]['parole'])){
        header ('location:login.php?password=false');
        exit();
    }

    session_start();
    header('location: index.php?register=true');
    exit();
}

mysqli_stmt_close($stmt);

mysqli_close($conn);

Hz, Laikam tā. Ar mysqli un procedurālu vanilla PHP neesmu 100 gadi strādajis.

 

for ($row = mysqli_fetch_assoc($result)) {
    if (password_verify($password, $row['parole'])){
        header ('location:login.php?password=false');
        exit();
    }

    session_start();
    header('location: index.php?register=true');
    exit();
}

šitā laikam ir pareizāk. kā jau teicu hz.,,,

Edited by Chewie

Share this post


Link to post
Share on other sites
5 minutes ago, Chewie said:

<?php

if (!isset($_POST['pieslegsanas'])) {
    header("login.php?error");
}

require  'conn.php';
global $conn;

$email = $_POST['epasts'];
$password = $_POST['parole'];

$sql = "SELECT * FROM user_acounts where e_pasts=?;";
$stmt = mysqli_stmt_init($conn);

if(!mysqli_stmt_prepare($stmt, $sql)){
    header ('location: login.php?error');
    exit();
}

mysqli_stmt_bind_param($stmt, "s" ,$email);
mysqli_stmt_execute($stmt);

$result = mysqli_stmt_get_result($stmt); // Iegūst rezultātu

if ($row = mysqli_fetch_assoc($result)){ // Šeit gaidāma tikai viena atbilde

    if (password_verify($password, $row[0]['parole'])){
        header ('location:login.php?password=false');
        exit();
    }

    session_start();
    header('location: index.php?register=true');
    exit();
}

mysqli_stmt_close($stmt);

mysqli_close($conn);

Hz, Laikam tā. Ar mysqli un procedurālu vanilla PHP neesmu 100 gadi strādajis.

Tagad  met visu laiku True

Share this post


Link to post
Share on other sites
2 minutes ago, Kritinzh said:

Atradu citu kļudu kad hasho man paroli nesakrīt ar to pašu kas datubāze...

Tad nohasho pēc tā algoritma, ko tev izmanto tā sistēma, un tad salīdzini.

Share this post


Link to post
Share on other sites

Mācies debagot, draugs. password_verify un password_hash strādā pavisam vienkārši.

Sākumam, izveido mainīgo un hardkodē savu paroli iekš password_hash funkcijas, izdampo ārā, salīdzini vai strings sakrīt ar to, kas Tev tam jūzerim glabājas datubāzē kolonā "parole".

Atrodi kurā vietā tev ir password_hash un nocheko kādu algoritmu viņš izmanto, to arī liec PASSWORD_DEFAULT vietā sekojošajā piemērā:

$hash = password_hash("tavaparolebla1337", PASSWORD_DEFAULT);

var_dump($hash);

$checkpw = password_verify('tavaparolebla1337', $hash);

var_dump($checkpw);

Ja $checkpw atgriež true, tad skaties skaties vēlreiz uzmanīgi vai pareizi paņem vērtību no datubāzes, kas atnāk, izdampo $row, kā jau teicu.

Edited by Kwaithex

Share this post


Link to post
Share on other sites
On 8/11/2020 at 11:23 AM, Kwaithex said:

Mācies debagot, draugs. password_verify un password_hash strādā pavisam vienkārši.

Sākumam, izveido mainīgo un hardkodē savu paroli iekš password_hash funkcijas, izdampo ārā, salīdzini vai strings sakrīt ar to, kas Tev tam jūzerim glabājas datubāzē kolonā "parole".

Atrodi kurā vietā tev ir password_hash un nocheko kādu algoritmu viņš izmanto, to arī liec PASSWORD_DEFAULT vietā sekojošajā piemērā:


$hash = password_hash("tavaparolebla1337", PASSWORD_DEFAULT);

var_dump($hash);

$checkpw = password_verify('tavaparolebla1337', $hash);

var_dump($checkpw);

Ja $checkpw atgriež true, tad skaties skaties vēlreiz uzmanīgi vai pareizi paņem vērtību no datubāzes, kas atnāk, izdampo $row, kā jau teicu.

Salaboju atradu kļudu tikai tagad saskāros ar jautajumu zīmēm kur ir garumzīmes

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.