Çö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

Hectopat
Katılım
22 Aralık 2019
Mesajlar
200
Daha fazla  
Cinsiyet
Erkek
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>';

}
"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...
 
"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".
 
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
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?

[CODE lang="php" highlight="13"]<?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>[/CODE]
 
Son düzenleme:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı