2016-04-23 76 views
0

私は自分のコードで、特にmove_uploaded_fileで問題が発生しています。私は、権限の問題ではないことを確認するために、画像の権限を777に保持するフォルダを変更しました。 w3schools.comのmove_uploaded_fileの使い方に関するPHPマニュアルも読んでいます。私は、PHPを使って自分のイメージをフォルダにアップロードする方法についてのアイディアを使い果たしました。助けてください。ここでmove_uploaded_fileは動作しませんがエラーはありません

がmove_uploeaded_fileとコードの一部です:

<?php 
    if (@$_GET['action'] == "ci"){ 
     echo "<form action='account.php?action=ci' method='POST' enctype='multipart/form-data'><br /> 
     Available file extention: <stong>.PNG .JPG .JPEG</stong><br /><br /> 
     <input type='file' name='image' /><br /> 
     <input type='submit' name='change_pic' value='Change' /><br /> 
     </form>"; 
     if (isset($_POST['change_pic'])) { 
      $errors = array(); 
      $allowed_e = array('png', 'jpg', 'jpeg'); 

      $file_name = $_FILES['image']['name']; 
      $file_e = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); 
      $file_s = $_FILES['image']['size']; 
      $file_tmp = $_FILES['image']['tmp_name']; 

      if(in_array($file_e, $allowed_e) === false) { 
       $errors[] = 'This file extension is not allowed.'; 
      } 

      if ($file_s > 2097152) { 
       $errors[] = 'File size must be under 2MB'; 
      } 

      if (empty($errors)) { 
       move_uploaded_file($file_tmp, '../images/'.$file_name); 
       $image_up = '../images/'.$file_name; 
       $check = mysqli_query($connect, "SELECT * FROM users WHERE usename='"[email protected]$_SESSION['username']."'"); 
       $rows = mysqli_num_rows($check); 

       while($row = mysqli_fetch_assoc($check)) { 
        $db_image = $row['profile_pic']; 
       } 
       if($query = mysqli_query($connect, "UPDATE users SET profile_pic = '".$image_up."' WHERE username='".$_SESSION['username']."'")) 
        echo "You have successfuly changed your profile picture!"; 
     } else { 
       foreach($errors as $error) { 
        echo $error, '<br />'; 
       } 
      } 
     } 
    } 
?> 
+0

。それらを削除し、エラーが表示されているかどうかを確認し、それらのすべてを実際に修正する必要があります。スクリプトが他の理由で死んでいる可能性があります。 – larsAnders

+1

@Anoopsaju
は、そのようなタグを閉じる適切な方法です。 – SkrillexNukehulk

+0

@larsAnders私はすぐにそれを試みます。 – SkrillexNukehulk

答えて

1

ここで少し書き換え、コードの最後のチャンクです。 move_uploaded_fileはブール値を返すので、それは変数$結果を設定することで、真か偽かどう我々はテストすることができます:あなたは、エラーを抑制するために `` @使用するいくつかの場所があります

 if (empty($errors)) { 
      $image_up = 'images/'.$file_name; 
      $result = move_uploaded_file($file_tmp, $image_up); 

      if($result){ 
       //this line had a typo usename -> username 
       //Also, you should change this over to using parameters and binding values ASAP. This leaves you open to hacking. 
       $check = mysqli_query($connect, "SELECT * FROM users WHERE username='"[email protected]$_SESSION['username']."'"); 
       $rows = mysqli_num_rows($check); 

       while($row = mysqli_fetch_assoc($check)) { 
        $db_image = $row['profile_pic']; 
       } 
       $q = "UPDATE users SET profile_pic = '".$image_up."' WHERE username='".$_SESSION['username']."'"; 
       if($query = mysqli_query($connect, $q)){ 
        echo "You have successfuly changed your profile picture!"; 
        } 
      } else { 
       echo "Upload failed."; 
      } 
    } else { 
      foreach($errors as $error) { 
       echo $error, '<br />'; 
      } 
     } 
    } 
} 
+0

私はあなたが見ることができるように、セキュリティはあまり良くありません。バインディング値とは何ですか? – SkrillexNukehulk

+0

[mysqliでパラメータ化されたクエリに関するドキュメント](http://php.net/manual/en/mysqli.prepare.php)を参照してください。 – larsAnders

+0

さて、私はそれをチェックします。とにかく、迅速な修正のおかげで!あなたは何人かのように私を厳しく批判しない。 – SkrillexNukehulk

関連する問題