читать текстовый файл из php с постом

В чем проблема с моим кодом? У меня есть два файла в одной папке: index.php и pass.txt:

Это pass.txt:

qwerty

И это index.php:

<?php

$password=file_get_contents('pass.txt');

session_start();
if (isset($_SESSION['timeout'])) {
if ($_SESSION['timeout'] + 10 < time()) {
session_destroy(); } }
else {
$_SESSION['pass']="" ;  $_SESSION['timeout']=time(); }


if (isset($_POST["pass"])) {
$_SESSION['pass']=$_POST['pass'] ;
}

if($_SESSION['pass'] == $password)  {
echo 'you are logged in';
} else {
echo'<form method="POST" action="">
<input type="password" name="pass">
</form>';
}

?>

ПРОБЛЕМА: Когда я пишу «qwerty» в поле ввода и отправляю сообщение, оно не отображает «ваш эль вошел в систему»

Это просто вопрос синтаксиса для дальнейшего развития, не предназначенный для защиты чего-либо.

Другие ответы на вопросы не решили мою проблему.

4

Решение

Я думаю, что проблема могла быть в file_get_contents — Я попробовал следующее, и это, кажется, работает правильно. (ой, забыл session_start() для этого примера)

<?php
session_start();

if( isset( $_SESSION['timeout'] ) && $_SESSION['timeout'] + 10 < time() ) session_destroy();
else {
$_SESSION['pass']="" ;
$_SESSION['timeout']=time();
}

$password=file_get_contents( realpath( __DIR__.'/pass.txt' ), FILE_TEXT | FILE_SKIP_EMPTY_LINES );
echo 'The password from the text file: '. $password;


if( isset( $_POST["pass"] ) ) $_SESSION['pass']=$_POST['pass'] ;

if( strlen( $password ) > 0 && trim( $_SESSION['pass'] ) === trim( $password ) )  {
echo 'you are logged in';
} else {
/* for dev I use a local file, aliased as /stackoverflow/ */
echo'<form method="POST" action="">
<input type="password" name="pass">
<input type="submit" value="login">
</form>';
}
?>
1

Другие решения

В начале вашего index.php начать сеанс session_start();
Для сравнения строк в php используйте http://php.net/manual/en/function.strcmp.php strcmp();

if (strcmp($_SESSION['pass'], $password))  {
echo 'you are logged in';
} else {
echo'<form method="POST" action="">
<input type="password" name="pass">
</form>';
}
1

Используйте этот код

<?php

$password=file_get_contents(realpath( __DIR__.'/pass.txt' ),FILE_TEXT | FILE_SKIP_EMPTY_LINES);

if (isset($_POST["pass"])) {
$_SESSION['pass']=$_POST['pass'] ;
}

if($_SESSION['pass'] == $password)  {
echo 'you are logged in';
} else {
echo'<form method="POST" action="">
<input type="password" name="pass">
</form>';
}

?>
0
По вопросам рекламы [email protected]