【发布时间】:2017-07-11 13:44:52
【问题描述】:
我和表弟为 CoursePress 构建了一个 WordPress 插件,该插件将接收电子邮件地址列表,并将它们作为用户/学生添加到课程中。
我们已经多次使用这个插件,但没有失败,但我们的一位客户告诉我们该插件不适用于他们。我已共享屏幕并验证他们是否正确使用了该插件。
插件采用“电子邮件、名字、姓氏、公司名称”格式的 .csv 文件,根据该数据添加用户,将这些用户作为学生添加到所选课程,并提示您下载一个新的 .csv 文件将包含来自已创建用户的用户名和密码。
可以看代码HERE
我最初的想法是 Windows 和 Mac/Linux 以不同的行结尾保存 .csv 文件,所以这可能是问题所在,但我向此人发送了我通过 MacBook 保存的文件并指示不要打开该文件,但是只是尝试在插件中使用它,看看它是否有效。还是什么都没有。
我在 uploads.php 文件中进行了一些编辑以尝试缩小问题范围,但我没有取得任何进展。
在下面的编辑中,我试图查看“uploaded_file”帖子变量是否为空,如果是,告诉我它是。我的客户当前遇到的错误是“文件验证期间出现错误!”。我很确定他的错误应该是从下面读取 $ers 变量,但是当我提交没有文件的表单时,我无法让它给我那个错误。
谁能帮帮我?
<?php
function wp_mail()
{
// Do nothing!
}
error_reporting(0);
require_once('../../../../wp-config.php');
include 'gen-file.php';
//Posted files
$files = $_FILES["uploaded_file"];
if (empty($files)) {
$ers = 'The file was not sent with the form!';
}
$post = $_POST;
//Imported users CsV
$impUsers = array(array( "Username", "Password", "email" ),);
$file = checkFile($files);
if($file){
$ID = getCid($post);
$tmpname = $file['tmp_name'];
//Convert CSV to array
$csv = array_map('str_getcsv', file($tmpname));
//Remove first row in CSV Array
$csv = array_splice($csv, 1);
//Create Users
$Users = createUsers($csv);
//Add users to course
$students = AddAsStudents($Users,$ID);
convert_to_csv($Users);
}else{
echo 'There was an error during file validation! </br>';
echo $ers;
}
【问题讨论】:
-
可能是其他一些插件,或者 WP 设置干扰了您自己的插件?
-
这是我的第一个想法,但我可以以管理员用户身份登录,运行插件,一切都会正常工作。我的客户可以在同一用户下登录到同一系统,但没有结果。我能看到的唯一区别是他使用的操作系统与我不同,但如果是这种情况,该插件将不适用于其他 Windows 用户,它确实如此。
-
如果您以他的用户身份登录系统会发生什么?
-
当我以他的用户身份登录时,插件工作正常。当他在该系统上登录我的用户帐户时,它对他不起作用,但对我仍然有效。
-
$_FILES['userfile']['type']文件的 mime 类型,如果浏览器提供了此信息。但是 PHP 端不会检查此 mime 类型,因此不要认为它的值是理所当然的。