Çözüldü PHP kodlamada hata nerede?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

xRahim

Centipat
Katılım
22 Aralık 2019
Mesajlar
180
Sistemde bunlar kurulu: Apache 2.4.46, mariadb 10.4.17, PHP 8.0.1, phpmyadmin 5.0.4, openssl 1.1.1.
Kodlamada hata nerede?

PHP:
<?php.

include 'db_conn.php';

?>

<!DOCTYPE html>

<html>

<head>

<link rel="stylesheet" type="text/css" href="css/style.css">

<title>Login</title>

</head>

<body>

<?php.

if(empty($_POST['login']))

{

echo'

<form action="" method="POST">

Name.

<input type="text" name="login" required><br>

Parol.

<input type="password" name="pass" required><br>

<input type="submit" value="Login">

</form>';

}

else.

{

$newURL = '/index.php';

$post_login = trim(htmlspecialchars(($_POST['login'])));

$post_pass = trim(htmlspecialchars(($_POST['pass'])));

$sql = "SELECT `id`, `login`, `pass` FROM `users` WHERE `id`='".$post_login."' OR `login`='".$post_login."' LIMIT 1";

$result = $conn->query($sql);

$row = mysqli_fetch_assoc($result);

$pass = $row["pass"];

if ($pass == $post_pass) ///// sanırım burada hata var.

{

setcookie("id", $row["id"]);

header('Location: '.$newURL);

} else {

echo 'Wrong pass or login<br />';

echo'<a href=""><input value="Back" type="button" /></a>';

}

}

?>
 
Çözüm
Bağlantı başarılı
MySQL sorgunda hata var. Bunu dener misin?

SQL:
SELECT id, login, pass FROM users WHERE login='".$post_login."' AND pass='".$post_pass."' LIMIT 1

Aslında hata değil ama bu şekilde sorgulaman daha iyi olur. Bu şekilde olursa "$row" null olduğunda hatalı olduğunu bilirsin.
Yani bu şekilde;

PHP:
$newURL = '/index.php';

$post_login = trim(htmlspecialchars(($_POST['login'])));

$post_pass = trim(htmlspecialchars(($_POST['pass'])));

$sql = "SELECT id, login, pass FROM users WHERE login='".$post_login."' AND pass='".$post_pass."' LIMIT 1";

$result = $conn->query($sql);

$row = mysqli_fetch_assoc($result);

if ($row != null) ///// sanırım burada hata var.

{

setcookie("id", $row["id"]);

header('Location: '.$newURL);

} else {

echo 'Wrong pass or login<br />';

echo'<a href=""><input value="Back" type="button" /></a>';

}

Davas

Kilopat
Katılım
24 Temmuz 2019
Mesajlar
5.311
Makaleler
16
Çözümler
118
Yer
İstanbul
"db_conn.php" dosyanı da atar mısın?

Ek olarak 28. satırdan sonrasını bu şekilde yapmayı deneyebilirsin.

PHP:
//üst taraf...

?>
<form action="" method="POST">

Name.

<input type="text" name="login" required><br>

Parol.

<input type="password" name="pass" required><br>

<input type="submit" value="Login">

</form>
<?php

//alt taraf...
 
KS
xRahim

xRahim

Centipat
Katılım
22 Aralık 2019
Mesajlar
180
"db_conn.php" dosyanı da atar mısın?
Bağlantı başarılı.
PHP:
<?php
$servername = "localhost";
$dbname ="rahim";
$username = "root";
$password = "";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
?>
Ek olarak 61. satır için böyle hata alıyorum: "Trying to access array offset on value of type null in".
 

Davas

Kilopat
Katılım
24 Temmuz 2019
Mesajlar
5.311
Makaleler
16
Çözümler
118
Yer
İstanbul
Bağlantı başarılı
MySQL sorgunda hata var. Bunu dener misin?

SQL:
SELECT id, login, pass FROM users WHERE login='".$post_login."' AND pass='".$post_pass."' LIMIT 1

Aslında hata değil ama bu şekilde sorgulaman daha iyi olur. Bu şekilde olursa "$row" null olduğunda hatalı olduğunu bilirsin.
Yani bu şekilde;

PHP:
$newURL = '/index.php';

$post_login = trim(htmlspecialchars(($_POST['login'])));

$post_pass = trim(htmlspecialchars(($_POST['pass'])));

$sql = "SELECT id, login, pass FROM users WHERE login='".$post_login."' AND pass='".$post_pass."' LIMIT 1";

$result = $conn->query($sql);

$row = mysqli_fetch_assoc($result);

if ($row != null) ///// sanırım burada hata var.

{

setcookie("id", $row["id"]);

header('Location: '.$newURL);

} else {

echo 'Wrong pass or login<br />';

echo'<a href=""><input value="Back" type="button" /></a>';

}
 
Çözüm
KS
xRahim

xRahim

Centipat
Katılım
22 Aralık 2019
Mesajlar
180
MySQL sorgunda hata var. Bunu dener misin?

SQL:
SELECT id, login, pass FROM users WHERE login='".$post_login."' AND pass='".$post_pass."' LIMIT 1

Aslında hata değil ama bu şekilde sorgulaman daha iyi olur. Bu şekilde olursa "$row" null olduğunda hatalı olduğunu bilirsin.
Yani bu şekilde;

PHP:
$newURL = '/index.php';

$post_login = trim(htmlspecialchars(($_POST['login'])));

$post_pass = trim(htmlspecialchars(($_POST['pass'])));

$sql = "SELECT id, login, pass FROM users WHERE login='".$post_login."' AND pass='".$post_pass."' LIMIT 1";

$result = $conn->query($sql);

$row = mysqli_fetch_assoc($result);

if ($row != null) ///// sanırım burada hata var.

{

setcookie("id", $row["id"]);

header('Location: '.$newURL);

} else {

echo 'Wrong pass or login<br />';

echo'<a href=""><input value="Back" type="button" /></a>';

}
Tamamdır artık çalışıyor. Teşekkürler :)
13. satırda cookie olarak save etmiyor onu sorunu nasıl çözebilirim?

PHP:
<?php
include 'db_conn.php';
?>
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="css/style.css" />
    <title>chat</title>
  </head>
<body>

    <?php
    if($inf['id'])
    {
        Mesaj bolumu
    }
    else
    {
        $newURL = 'auth.php';
        header('Location: '.$newURL);
    }
    ?>

</div>
</body>
</html>
 
Son düzenleme:

Davas

Kilopat
Katılım
24 Temmuz 2019
Mesajlar
5.311
Makaleler
16
Çözümler
118
Yer
İstanbul
Yukarı