【问题标题】:PHP switch statement always taking defaultPHP switch 语句总是采用默认值
【发布时间】:2014-02-28 00:32:18
【问题描述】:

我正在关注书中的一些 php 示例,并正在研究它们。下面的代码假设使用 switch 语句验证上传的文件类型是否匹配设置的有效类型。有效类型为:jpeg、png、tiff 和 gif。但是,代码似乎总是采用默认语句并跳出循环。我什至已经从网站上下载了示例,并且出现了同样的问题!

echo <<<_END
<html><head><tile>PHP Form Upload</title></head>
<body>
<form method='post' action='upload2.php' enctype='multipart/form-data'>
Select a JPG, GIF, PNG or TIF File: 
<input type='file' name='filename' size='10' />
<input type='submit' value='Upload' /></form>
_END;

if ($_FILES)
{
$name = $_FILES['filename']['name'];

switch ($_FILES['filename']['type'])
{
    case 'image/jpeg':  $ext = 'jpg';   break;
    case 'image/gif':   $ext = 'gif';   break;
    case 'image/png':   $ext = 'png';   break;
    case 'image/tiff':  $ext = 'tiff';  break;
    default:            $ext = '';      break;
}

if ($ext){

    $n = "image.$ext";
    move_uploaded_file($_FILES ['filename']['tmp_name'],$n);
    echo "Uploaded image '$name' as '$n':<br />";
    echo "<img src='$n'";
}
else echo "'$name' is not a valid image file";
 }
 else echo "No image has been uploaded";

 echo "</body></html>"


 ?>

如果我说上传图片'image.jpg',它应该将$ext设置为.$jpg然后执行上传,但我只是得到了else语句:

else echo "'$name' is not a valid image file";

【问题讨论】:

  • 你绑定打印$_FILES['filename']['type'] 看看为什么走错路了吗?
  • 我还没有,很快就会这样做。我尝试放置一些简单的回声语句,但并没有太大帮助。

标签: php html forms switch-statement


【解决方案1】:

您的代码示例不起作用,因为文件 mime 类型不在您的 case 语句中。

修改代码,以便检查文件的 mime 类型:

else echo "'$name' is not a valid image file (".$_FILES['filename']['type']." unallowed)";

然后,如果您想添加此 mime 类型,您可以使用此修改显示的类型相应地修改您的 switch / case 语句。

编辑:

注意,您也可以使用var_dump() php 函数来检查变量的内容。

else{
    echo "'$name' is not a valid image file (".$_FILES['filename']['type']." unallowed)";
    var_dump($_FILES['filename']);
}

编辑:

请记住在提供客户端数据之前始终对其进行清理(htmlentities() 可以解决问题),请查看http://fr.php.net/htmlentities

echo "'$name' is not a valid image file (".htmlentities($_FILES['filename']['type'])." unallowed)";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多