2016-11-28 23 views
-2

我想通过POST方法创建表单并检索另一个PHP文件上的表单值。通过POST方法传输表单输入

但不幸的是,它似乎并没有工作。下面

的形式输入文件

<form action="uploadimage.php" method="POST" enctype="multipart/form-data"> 
<div align="center"><table border=0>'; 
echo"<tr><td>Caption: </td><td><input type='text' name='caption'></td></tr> 
<tr><td>Album</td><td>";      
$Query='SELECT * FROM `gallery`'; 
$result=mysqli_query($connection,$Query); 
echo'<select name="albums">'; 
$count=0; 
$previous=-1; 
while($data=mysqli_fetch_array($result)) 
{ 
    if($previous<$data['album']) 
    { 
    echo "<option value=".$data['album'].">".$data['album']."</option>"; 
    $previous=$data['album']; 
    } 
    if($count<=$data['album']) 
    { 
     $count=$data['album']+1; 
    } 
} 
echo "<option value='.$count.'>New Album</option>"; 
echo"</select></td></tr> 
<tr><td>Picture: </td><td><input type='file' name='photo'></td></tr> 
<tr><td></td><td><input type='submit' name='upload_btn' value='upload'></td></tr> 
</table></div> 
</form> 

不介意其他的代码,我只是担心表单的输入值的转移。

这里是接收在另一个PHP文件

require_once"connection.php"; 
$target_Path='img/displays/'; 
$caption=$_POST['caption']; 
$albums=$_POST['albums']; 
$target_Path = $target_Path.basename($_FILES['photo']['name']); 
move_uploaded_file($_FILES['photo']['tmp_name'], $target_Path); 
$withoutExt = preg_replace("/\\.[^.\\s]{3,4}$/", "", $target_Path); 
mysqli_query($connection,"INSERT INTO `ett`.`gallery` (`id` ,`album`,`name`,`path`)VALUES (NULL,'".$albums."','".$caption."','".$withoutExt."')"); 

和错误,我接收是如下

通知的形式的值的代码:未定义指数:字幕在C: \ wamp \ www \ ETT Logo \ Controlpanel \ uploadimage.php on line 12

我收到上面的错误表单中的所有输入。并且这些值没有被传送。

+1

我没有看到一个'

'标签或'
'标签 – RiggsFolly

+1

我还没有看到任何错误检查有关文件上传[参见手册] (http://php.net/manual/en/features.file-upload.php) – RiggsFolly

+1

您的脚本存在[SQL注入攻击]的风险(http://stackoverflow.com/questions/60174/how-can-看看发生了什么事[Little Bobby Tables](http://bobby-tables.com/)即使 [如果你正在逃避投入,它不安全! ](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

回答

1

使用标签提交表单。 如 那么你的代码将是这样的: -

<form method="POST"> 
<table border=0>'; 
echo"<tr><td>Caption: </td><td><input type='text' name='caption'></td></tr> 
<tr><td>Album</td><td>";      
$Query='SELECT * FROM `gallery`'; 
$result=mysqli_query($connection,$Query); 
echo'<select name="albums">'; 
$count=0; 
$previous=-1; 
while($data=mysqli_fetch_array($result)) 
{ 
    if($previous<$data['album']) 
    { 
    echo "<option value=".$data['album'].">".$data['album']."</option>"; 
    $previous=$data['album']; 
    } 
    if($count<=$data['album']) 
    { 
     $count=$data['album']+1; 
    } 
} 
echo "<option value='.$count.'>New Album</option>"; 
echo"</select></td></tr> 
<tr><td>Picture: </td><td><input type='file' name='photo'></td></tr> 
<tr><td></td><td><input type='submit' name='upload_btn' value='upload'></td></tr> 
</table> 
</form> 
+1

一个'action =“uploadimage.php”'也可用于' RiggsFolly

+0

伙计们,我编辑了代码,我没有忘记窗体标签,我只是更新了它,我没有复制第一次粘贴所有的代码,因为代码有点太长了 –