Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-用户从表单中搜索TXT文件$\u post_Php_Forms_File_Post_Input - Fatal编程技术网

php-用户从表单中搜索TXT文件$\u post

php-用户从表单中搜索TXT文件$\u post,php,forms,file,post,input,Php,Forms,File,Post,Input,我有点小问题 我有一个txt文件,我可以写用户名。 没关系 但是我试图通过用户输入($\u POST['username'])搜索txt文件。 我的用户并不总是存在 有人能给我一些建议吗 我的txt文件包含: 管理员 谢尔顿 佩妮 代码如下: $user = $_POST['username']; function CreateAccount($user){ if($_POST['reg']){ $file = 'test.txt'; $data = $user ."\n

我有点小问题

我有一个txt文件,我可以写用户名。 没关系

但是我试图通过用户输入($\u POST['username'])搜索txt文件。 我的用户并不总是存在

有人能给我一些建议吗

我的txt文件包含:
管理员
谢尔顿
佩妮

代码如下:

$user = $_POST['username'];

function CreateAccount($user){

if($_POST['reg']){

    $file = 'test.txt';
    $data = $user ."\n";
    fopen($file, 'a');
    file_put_contents($file, $data, FILE_APPEND);

}


}

function userSearch($user){

if($_POST['read']){

    $file = 'test.txt';
    $searchUser = $user;
    fopen($file, 'r');
    $content = file_get_contents($file);

    if(strpos($content, $user)){
        echo "exist";
    }else{
        echo "nope..";
    }

}
}

strpos
的字符串位置从0开始,而不是从1开始。因此,如果位置为0,则等于false

对if语句的简单修复可能会有所帮助

if(strpos($content,$user)!==FALSE){

此函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。有关详细信息,请阅读布尔值部分。使用===运算符测试此函数的返回值


t.txt:

管理
谢尔顿
伦纳德

t.php

<?php
$file = "t.txt";
$name = "Sheldon";
$string = file_get_contents($file);
$array = file($file, FILE_IGNORE_NEW_LINES);

if(in_array($name,$array)){
    echo "found ";
}else{
    echo "nope ";
}

if(strstr($string,$name)){
    echo "found ";
}else{
    echo "nope ";
}
?>

输出:
found-found

看起来像是db-to-meth的工作。这只是一个关于如何通过用户帖子读取文本文件的小实验。我可能会使用
file()
,然后在数组中使用
myself我也会使用Dagon的方法,但在这种情况下为什么不使用strstr()呢?你也不必在文件获取内容之前打开文件以获得100%的准确度,然后检查布尔值是否为false:
if(strpos($content,$user)!==false)
可以做到,我几年前就养成了检查的习惯>-1我尝试了if(strpos($content,$user)!==false),但我仍然得到“不…”以这个为例。我用文件中的内容的字符串表示形式替换了读取的文件。感谢您的回答!at字符串表示形式可以很好地使用,但我希望它与用户从表单中发布的名称一起使用。可能是因为这只是您提供了一些代码,而不是结构化的答案或信息另外,如果文件只包含php,最好不要关闭php标记,以避免空白注入。您的答案也会替换OP的代码,并且不会用原始代码帮助他们。