我有一个文件需要导入数据库.(我的数据库很好,我可以连接,我可以添加).现在我的问题是由于某种原因没有插入任何内容.
我有一个文件schooldatabase.txt用户/密码我需要添加到数据库.该文件有200行.
这是一个示例:
test|098f6bcd4621d373cade4e832627b4f6
test2|ad0234829205b9033196ba818f7a872b
Run Code Online (Sandbox Code Playgroud)
现在,对于这些行(学生用户名和密码)中的每一行,我必须将它们插入数据库中.
这是我的代码:
function addUser($user,$pass) {
// this code is good
}
function processUser($user,$pass) {
$pass=md5($pass);
$myFile = "schooldatabase.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 5);
$login = "$user|$pass";
if(stristr($theData,$login) !== false){
$result = "rejected";
}
elseif(stristr($theData,$login) !== true){
addUser($user,$pass); // this work I manuall tested
$result = "accepted";
}
fclose($fh);
return $result;
}
var_dump(processUser('invaliduser','test2'));
Run Code Online (Sandbox Code Playgroud)
如果该用户不在文件中,为什么返回"已接受"?
Boo*_*eus 25
我想在这里你应该重新考虑一下你的过程.我假设您"processUser"不止一次,因此您将反复打开/读取/关闭同一文件而不更改该文件.
因为文件不是很大(我认为它是一次性脚本),所以只需在启动脚本时在内存中打开文件,然后就可以将正在测试的所有值与该文件进行比较.
您可以使用函数文件来执行此操作.然后,您可以使用in_array检查用户是否存在.
这是脚本:
function addUser($user,$pass) {
// this code is good
}
$file = file("schooldatabase.txt", FILE_IGNORE_NEW_LINES ^ FILE_SKIP_EMPTY_LINES);
function processUser($user,$pass, array &$file) {
$pass = md5($pass);
if(in_array("$user|$pass", $file)) {
addUser($user,$pass); // do you check if the query is good?
return 'accepted';
}
return "rejected";
}
var_dump(processUser('invaliduser','test2', $file));
Run Code Online (Sandbox Code Playgroud)
JoL*_*oCo 20
我觉得你if有点过于复杂- 这是真的还是假的,所以不需要检查stristr两次!此外,您可能将您的真/假混淆了.
编辑:此外,它应该是stripos,它将返回位置或false.
尝试...
if(stripos($theData,$login) === false){
$result = "rejected";
} else {
addUser($user,$pass); // this work I manuall tested
$result = "accepted";
}
Run Code Online (Sandbox Code Playgroud)
...那样有用吗?
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |