读取和写入文本文件时,PHP脚本不起作用
为了练习,我编写了这个小代码,用于将用户名和密码保存到文本文件中。代码如下:读取和写入文本文件时,PHP脚本不起作用,php,Php,为了练习,我编写了这个小代码,用于将用户名和密码保存到文本文件中。代码如下: $fh = fopen("de.txt", 'a+') or die(""); $text = "username =" . $uide . "password =" . $pwd ."\n"; $contents = fgets($fh); if( strpos($contents, '$uide') !== fals
$fh = fopen("de.txt", 'a+') or die("");
$text = "username =" . $uide . "password =" . $pwd ."\n";
$contents = fgets($fh);
if( strpos($contents, '$uide') !== false) &&
strpos($contents, '$pwd') !== false) )
{
break;
}
else {
fwrite($fh, $text) or die();
}
我基本上想做的是,从文本文件中读取检查用户名和密码是否已经存在,如果不存在,则保存它,如果已经存在,则丢弃它并执行进一步的脚本,但我这里有一点问题
它没有保存凭据,从我将此代码添加到脚本的那天起,我的整个脚本就停止工作。据我所知,我尝试了各种各样的解决办法,但似乎没有一个能解决这个问题。有人能帮我解决这个问题吗
编辑:我已经编辑了答案中给出的代码,它正在工作,但仍然存在问题。它只适用于第一个用户名和密码,其余的仍在复制中。我的意思是凭据以以下方式保存在文本文档中
用户名=蝙蝠侠密码=未找到
用户名=蜘蛛侠密码=胡椒
用户名=蜘蛛侠密码=胡椒
因此,我的意思是,第一行的凭证不会再次保存在文本中,但之后的所有内容仍在重复,有人能告诉我原因吗?
“$uide”
只是字符串“$uide”
,而不是变量,您应该删除单引号。“$uide”
只是字符串“$uide”,而不是变量,您应该删除单引号。尝试此代码。有帮助吗
<?php
$fh = fopen("de.txt", 'a+') or die("");
$text = "username =" . $uide . "password =" . $pwd ."\n";
$contents = fgets($fh);
if( strpos($contents, $uide) !== false && strpos($contents, $pwd) !== false ){
break;
} else {
fwrite($fh, $text) or die();
}
?>
试试这段代码。有帮助吗
<?php
$fh = fopen("de.txt", 'a+') or die("");
$text = "username =" . $uide . "password =" . $pwd ."\n";
$contents = fgets($fh);
if( strpos($contents, $uide) !== false && strpos($contents, $pwd) !== false ){
break;
} else {
fwrite($fh, $text) or die();
}
?>
一切正常,只需更换这两行
if( strpos($contents, $uide) !== false) &&
strpos($contents, $pwd) !== false) )
因为在这个例子中,变量被认为是一个带dollar的字符串,所有都是好的,只需替换这两行
if( strpos($contents, $uide) !== false) &&
strpos($contents, $pwd) !== false) )
因为在这种情况下,您的变量被视为带有美元的字符串,所以启用了错误报告功能吗?因为当我尝试使用您的代码时,错误非常明显: 分析错误:语法错误,中出现意外的“&&”(T_BOOLEAN_和) /第7行的Applications/MAMP/htdocs/test.php 如果我看第7行,我会看到:
if( strpos($contents, '$uide') !== false) &&
strpos($contents, '$pwd') !== false) )
第一个问题是括号不平衡。将其更改为此选项可修复立即出现的问题:
if( strpos($contents, '$uide') !== false &&
strpos($contents, '$pwd') !== false)
或者,如果您想为每个条件添加另一层括号,您可以这样做,但对于您现有的逻辑来说,这是不必要的:
if ((strpos($contents, $uide) !== false) &&
(strpos($contents, $pwd) !== false)) {
然后,代码中还有一些其他问题。例如,为什么要检查值为'$uide'
以及'$pwd'
的strpo
。当您这样放置单引号时,它是'$uide'
和'$pwd'
的文本值。因此,应将其更改为:
if(strpos($contents, $uide) !== false &&
strpos($contents, $pwd) !== false)
这是您的完整代码,其中包含一些格式清理:
$fh = fopen("de.txt", 'a+') or die("");
$text = "username =" . $uide . "password =" . $pwd ."\n";
$contents = fgets($fh);
if (strpos($contents, $uide) !== false &&
strpos($contents, $pwd) !== false) {
break;
}
else {
fwrite($fh, $text) or die();
}
格式化可能从来都不是什么大事,但像这样的简单代码语法错误通常会通过格式化代码来发现和清除。您是否启用了错误报告功能?因为当我尝试使用您的代码时,错误非常明显: 分析错误:语法错误,中出现意外的“&&”(T_BOOLEAN_和) /第7行的Applications/MAMP/htdocs/test.php 如果我看第7行,我会看到:
if( strpos($contents, '$uide') !== false) &&
strpos($contents, '$pwd') !== false) )
第一个问题是括号不平衡。将其更改为此选项可修复立即出现的问题:
if( strpos($contents, '$uide') !== false &&
strpos($contents, '$pwd') !== false)
或者,如果您想为每个条件添加另一层括号,您可以这样做,但对于您现有的逻辑来说,这是不必要的:
if ((strpos($contents, $uide) !== false) &&
(strpos($contents, $pwd) !== false)) {
然后,代码中还有一些其他问题。例如,为什么要检查值为'$uide'
以及'$pwd'
的strpo
。当您这样放置单引号时,它是'$uide'
和'$pwd'
的文本值。因此,应将其更改为:
if(strpos($contents, $uide) !== false &&
strpos($contents, $pwd) !== false)
这是您的完整代码,其中包含一些格式清理:
$fh = fopen("de.txt", 'a+') or die("");
$text = "username =" . $uide . "password =" . $pwd ."\n";
$contents = fgets($fh);
if (strpos($contents, $uide) !== false &&
strpos($contents, $pwd) !== false) {
break;
}
else {
fwrite($fh, $text) or die();
}
格式化可能从来都不是什么大事,但像这样的简单代码语法错误通常会通过格式化代码来发现和清除。如果您的代码在if条件下有语法错误,您的if条件没有正确关闭(请勾选额外的括号),它应该是:
if( strpos($contents, '$uide') !== false && strpos($contents, '$pwd') !== false)
您的代码在if条件中有语法错误,您的if条件未正确关闭(请检查附加括号),它应该是:
if( strpos($contents, '$uide') !== false && strpos($contents, '$pwd') !== false)
一些建议。1.定义“停止工作”,您是否有任何错误代码或观察结果?2.通过在每一行代码后面加上日志行来缩小你的问题范围,这样你就能确切地知道哪一行引起了麻烦。如果你想办法解决这两个问题,那么你可以自己解决是的,我是由cron执行这段代码的,每次我启动cron时,它都会失败,出现HTTP错误500。你能找出问题所在吗?没有详细的日志记录是什么或哪一行导致了问题,这就是为什么很难找到它me@Programmer请看我的答案。您的括号不平衡,这清楚地显示了错误报告。还有字符串与变量的问题。但是括号是导致错误的原因。一些建议。1.定义“停止工作”,您是否有任何错误代码或观察结果?2.通过在每一行代码后面加上日志行来缩小你的问题范围,这样你就能确切地知道哪一行引起了麻烦。如果你想办法解决这两个问题,那么你可以自己解决是的,我是由cron执行这段代码的,每次我启动cron时,它都会失败,出现HTTP错误500。你能找出问题所在吗?没有详细的日志记录是什么或哪一行导致了问题,这就是为什么很难找到它me@Programmer请看我的答案。您的括号不平衡,这清楚地显示了错误报告。还有字符串与变量的问题。但是括号是导致错误500的原因。这不是唯一的p