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

Yeni konular

Geri
Yukarı