2016-07-17 5 views
1

複数のファイルタイプをアップロードするためにフォームにファイル入力をいくつか使用しました。 mysqlテーブルに格納されます。 問題が発生すると、警告が表示されます: "警告:in_array()は、多くとも3つのパラメータがあり、5つは...."と表示されます。 1つの入力ファイルを使用すると、ファイルはサーバーフォルダに正常にアップロードされました。 、これは私が使用するコードです:"警告:in_array()は最大で3つのパラメータを想定していますが、5つは与えられました"ファイルをアップロードしようとすると

$dir = $name; 
$target_dir = "my-file/$dir/"; 
if(is_dir($target_dir) === false) 
    { 
     mkdir($target_dir); 
    } 

if(isset($_POST["submit"])) { 
    $formatfilea = array("pdf"); 
    $formatfileb = array("pdf"); 
    $formatfilec = array("pdf"); 
    $formatfiled = array("jpg, jpeg"); 

    $filea = $_FILES['filea']['name']; 
    $fileb = $_FILES['fileb']['name']; 
    $filec = $_FILES['filec']['name']; 
    $filed = $_FILES['filed']['name']; 

    $xa = explode('.', $filea); 
    $xb = explode('.', $fileb); 
    $xc = explode('.', $filec); 
    $xd = explode('.', $filed); 

    $existencea = strtolower(end($xa)); 
    $existenceb = strtolower(end($xb)); 
    $existencec = strtolower(end($xc)); 
    $existenced = strtolower(end($xd)); 

    $sizea = $_FILES['filea']['size']; 
    $sizeb = $_FILES['fileb']['size']; 
    $sizec = $_FILES['filec']['size']; 
    $sized = $_FILES['filed']['size']; 

    $file_tmp_a = $_FILES['filea']['tmp_name']; 
    $file_tmp_b = $_FILES['fileb']['tmp_name']; 
    $file_tmp_c = $_FILES['filec']['tmp_name']; 
    $file_tmp_d = $_FILES['filed']['tmp_name']; 

    if(in_array($existencea, $formatfilea && $existenceb, $formatfileb && $existencec, $formatfilec && $existenced, $formatfiled) === true){ 

      if($sizea < 1044070 && $sizeb < 1044070 && $sizec < 1044070 && $sized < 1044070){   
       move_uploaded_file($file_tmp_a, $target_dir.$filea); 
       move_uploaded_file($file_tmp_b, $target_dir.$fileb); 
       move_uploaded_file($file_tmp_c, $target_dir.$filec); 
       move_uploaded_file($file_tmp_d, $target_dir.$filed); 
      } else { 

      } 
     } 
    } 



// attempt insert query execution 

$sql = "INSERT INTO test (filea, fileb, filec, filed) VALUES ('$filea', '$fileb', '$filec', '$filed')"; 

は私が解決策を提供するのに役立つことができる人がいるのですか?このエラーの原因は何ですか?なぜアップロードしたファイルがファイルサーバー上に見つかりませんでしたか?

+0

この針は、$ heystackがアレイであるべきである干し草の山で発見された場合(「neddle」、$の干し草)関数は真を返す.In_array in__array指定する正しい方法ではありません。もっと見るhttp://php.net/manual/en/function.in-array.php – pradeep

答えて

2

if(in_array($existencea, $formatfilea && $existenceb, $formatfileb && $existencec, $formatfilec && $existenced, $formatfiled) === true){ 

を交換してください。少なくとも2つのパラメータを受け入れます。

in_array(param_1, param_2, param_3); 

最初に見つけたいものが1つあります。

2番目は配列です。

第3パラメータはオプションです。厳密なチェックを使用して型をチェックする場合はtrueに設定できます。

if (in_array($existencea, $formatfilea, true) && in_array($existenceb, $formatfileb, true) && in_array($existencec, $formatfilec, true) && in_array($existenced, $formatfiled, true)) { 

注:trueに三番目のパラメータを設定してコードを強化する

は、あなたは自分のif文をこのように記述する必要があります。

第二の例を参照してください。in_array() strict checking

1

あなたはin_array()の構文を参照してください

if (in_array($existencea, $formatfilea) && in_array($existenceb, $formatfileb) && in_array($existencec, $formatfilec) && in_array($existenced, $formatfiled)) { 
関連する問題