2017-02-21 19 views
2

私のいとこと私は、CoursePress用のWordPressプラグインを構築しました。このプラグインは電子メールアドレスのリストを取り込み、ユーザ/学生としてコースに追加します。私のWPプラグインはなぜ同じ人のために働くのですか?

私たちはこのプラグインを何度も何度も使用してきましたが、私たちの1人のクライアントからはプラグインが機能しないとのことがわかりました。画面を共有し、プラグインが正しく使用されていることを確認しました。

プラグインは "Email、FirstName、LastName、CompanyName"形式の.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; 
     } 
+0

はたぶん、いくつかの他のプラグイン、またはWPの設定は、独自のプラグインに干渉していますか? – Armin

+0

これは私の最初の考えですが、管理者としてログインしてプラグインを実行するとすべて正常に動作します。私のクライアントは同じシステムの同じユーザーにログインして結果を得ることができません。私が見ることができる唯一の違いは、彼は私とは異なるOSを使用しているということですが、そうであれば、プラグインは他のWindowsユーザーにとってはうまくいかないでしょう。 –

+0

システムにログオンしても、そのユーザーとしてはどうなりますか? – Armin

答えて

2

問題はcheckFile()機能にあります。この関数は、検証の一環として$_FILES['userfile']['type']を使用しています。しかし、にドキュメントに記載されているように:

$ _FILES [「userfile」] [「型」] - ファイルのMIMEタイプは、ブラウザがこのMIMEタイプがしかし、チェックされていないinformation.This提供されている場合PHP側ではその価値が認められていません。

したがって、異なるブラウザでは異なる値を送信することもあれば値を送信しないこともあります。したがって、依存することはできません。

あなたはおそらくちょうどこのライン上のあなたのチェックからことを取り除くことができます。

if (($ext == "csv") && ($files["type"] == "text/csv") && ($files["size"] < 350000)) 

と使用:

if (($ext == "csv") && ($files["size"] < 350000)) 
+0

これが問題でした。彼は私と同じブラウザを使っていますが、この編集は彼のために働き始めました。ご助力ありがとうございます:)!!! –

+0

歓迎です.. ..! – BizzyBob

関連する問題