【问题标题】:How To stop Submit If we selected wrong file in php如果我们在 php 中选择了错误的文件,如何停止提交
【发布时间】:2018-03-09 17:40:47
【问题描述】:

如果我在输入中选择了错误的文件,我想停止表单提交 通过js验证或任何其他方法提交文件。当前当我 通过文件字段选择的word文件提交表单但返回给我 警告您无法上传此类文件并删除输入 字段值我怎么能阻止这个..

和 js 停止错误的图像文件但它不工作::

$("#profile_pic").change(function () {
  var fileExtension = ['jpeg', 'jpg', 'png', 'gif'];
  if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
      alert("Only formats are allowed : "+fileExtension.join(','));
       return false;
  }
});

【问题讨论】:

标签: javascript php codeigniter


【解决方案1】:

可以只检查文件扩展名,但用户可以轻松地将 virus.exe 重命名为 virus.jpg 并“通过”验证。

对于它的价值,这里是检查文件扩展名并在不符合有效扩展名之一时中止的代码:(选择无效文件并尝试提交以查看警报)

example link

【讨论】:

  • 我希望在我的图像更改上使用这个,就像我选择图像时一样..
  • 在我的情况下返回 false 不工作它在选择错误图像后提交表单
【解决方案2】:
 <input type="file" accept=".jpeg,.jpg,.png,.gif"/>;

在您的文件输入标签上添加接受属性。并准确指定您允许发布的文件扩展名类型。

【讨论】:

  • 在这种情况下,如果我们手动更改扩展名,它将获取文件.. 不是一个 gud 解决方案
  • 如果我们想要更安全,这只是用于客户端验证意味着我们想再次验证服务器端。
【解决方案3】:

因为无论发生什么,都会在浏览器中发生,所以对于这个问题并没有任何可靠的解决方案。 当您发现扩展无效时,您可以禁用表单/按钮/输入,但这不会阻止任何人使用开发人员工具并重新启用它 - 毕竟允许他们提交表单。

正如@Nishantha Kumara 所提到的 - 更改文件扩展名是黑客试图发送受感染文件的常见方式之一,因此依赖扩展名并不能真正保证任何事情。

确保仅上传具有有效扩展名的文件的唯一真正方法是通过检查其mime typeextension 在服务器上进行验证 - 但是,这些都不能保证文件不是受感染 - 为此,您可能必须在上传后对其进行某种防病毒扫描。

如果只是为了在浏览器中禁用表单并且您不担心其他任何事情,那么您可以在选择具有不正确扩展名的文件时简单地禁用表单/按钮,但同样 - 这可能应该被检测到/在选择文件时启用,以确保不会首先选择具有错误扩展名的文件。

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2014-12-22
    • 2017-10-10
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2021-03-13
    • 2011-09-25
    • 2016-11-03
    相关资源
    最近更新 更多