Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用Post在表单中上载文件_Php_Forms_File_Post_Isset - Fatal编程技术网

Php 无法使用Post在表单中上载文件

Php 无法使用Post在表单中上载文件,php,forms,file,post,isset,Php,Forms,File,Post,Isset,将文件上载添加到现有POST脚本时遇到问题: if( isset($_POST)){ //form validation vars $formok = true; $errors = array(); //sumbission data $ipaddress = $_SERVER['REMOTE_ADDR']; $date = date('d/m/Y'); $time = date('H:i:s'); //form data $name = $_POST['name']; $email

将文件上载添加到现有POST脚本时遇到问题:

if( isset($_POST)){

//form validation vars
$formok = true;
$errors = array();

//sumbission data
$ipaddress = $_SERVER['REMOTE_ADDR'];
$date = date('d/m/Y');
$time = date('H:i:s');

//form data
$name = $_POST['name']; 
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$enquiry = $_POST['enquiry'];
$message = $_POST['message'];
$photo = $_FILES['uploaded_file']['name'];


//attach file
$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploaded_file']['name']); 

if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target_path)) {
echo "The file ".  basename( $_FILES['uploaded_file']['name']). 
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
}

if($_FILES['uploaded_file']['error'] === UPLOAD_ERR_OK){
    $formok = false;
    $errors[] = "You have not attached a photo";
}

//validate name is not empty
if(empty($name)){
    $formok = false;
    $errors[] = "You have not entered a name";
}

//validate email address is not empty
if(empty($email)){
    $formok = false;
    $errors[] = "You have not entered an email address";
//validate email address is valid
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    $formok = false;
    $errors[] = "You have not entered a valid email address";
}

//validate message is not empty
if(empty($message)){
    $formok = false;
    $errors[] = "You have not entered a message";
}
//validate message is greater than 20 charcters
elseif(strlen($message) < 20){
    $formok = false;
    $errors[] = "Your message must be greater than 20 characters";
}

//send email if all is ok
if($formok){
    $headers = "From: contact@hostelcities.com" . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

    $emailbody = "<p>You have recieved a new message from the enquiries form on your website.</p>
                  <p><strong>Name: </strong> {$name} </p>
                  <p><strong>Email Address: </strong> {$email} </p>
                  <p><strong>Telephone: </strong> {$telephone} </p>
                  <p><strong>Enquiry: </strong> {$enquiry} </p>
                  <p><strong>Message: </strong> {$message} </p>
                  <p>This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}</p>";

    mail("contact@hostelcities.com","New Enquiry",$emailbody,$headers);

}

//what we need to return back to our form
$returndata = array(
    'posted_form_data' => array(
        'name' => $name,
        'email' => $email,
        'telephone' => $telephone,
        'enquiry' => $enquiry,
        'message' => $message
    ),
    'form_ok' => $formok,
    'errors' => $errors
);


//if this is not an ajax request
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){
    //set session variables
    session_start();
    $_SESSION['cf_returndata'] = $returndata;

    //redirect back to form
    header('location: ' . $_SERVER['HTTP_REFERER']);
}
}
if(isset($\u POST)){
//表单验证变量
$formok=true;
$errors=array();
//消费数据
$ipaddress=$\u服务器['REMOTE\u ADDR'];
$date=日期('d/m/Y');
$time=日期('H:i:s');
//表单数据
$name=$_POST['name'];
$email=$_POST['email'];
$telephone=$_POST['telephone'];
$inquiry=$_POST['inquiry'];
$message=$_POST['message'];
$photo=$\u文件['uploaded\u file']['name'];
//附加文件
$target_path=“uploads/”;
$target_path=$target_path.basename($_FILES['upload_file']['name']);
如果(移动上传的文件($上传的文件['Upload\u file']['tmp\u name'],$target\u path)){
回显“The file”.basename($\u FILES['uploaded\u file']['name'])。
“已上载”;
}否则{
echo“上传文件时出错,请重试!”;
}
如果($\u文件['UPLOAD\u文件']['error']==UPLOAD\u ERR\u OK){
$formok=false;
$errors[]=“您尚未附加照片”;
}
//验证名称不为空
if(空($name)){
$formok=false;
$errors[]=“您尚未输入名称”;
}
//验证电子邮件地址不为空
如果(空($email)){
$formok=false;
$errors[]=“您尚未输入电子邮件地址”;
//验证电子邮件地址是否有效
}elseif(!filter\u var($email,filter\u VALIDATE\u email)){
$formok=false;
$errors[]=“您没有输入有效的电子邮件地址”;
}
//验证消息不为空
if(空($message)){
$formok=false;
$errors[]=“您尚未输入消息”;
}
//验证消息大于20个字符
elseif(strlen($message)<20){
$formok=false;
$errors[]=“您的邮件必须超过20个字符”;
}
//如果一切正常,发送电子邮件
如果($formok){
$headers=“From:contact@hostelcities.com“\r\n”;
$headers.=“内容类型:text/html;字符集=iso-8859-1”。“\r\n”;
$emailbody=“您已从网站上的查询表单收到一条新消息

名称:{$Name}

电子邮件地址:{$Email}

电话:{$Telephone}

查询:{$Enquiry}

消息:{$Message}

此消息从IP地址发送:{$ipaddress}于{$date}于{$time}

“; 邮件(“contact@hostelcities.com“,”新查询“,$emailbody,$headers); } //我们需要什么才能回到我们的状态 $returndata=array( “已发布的表单数据”=>数组( “name”=>$name, “email”=>$email, “电话”=>$电话, “询价单”=>$询价单, 'message'=>$message ), “form_ok”=>$formok, “错误”=>$errors ); //如果这不是一个ajax请求 if(空($\u服务器['HTTP\u X\u请求的\u带有'])和&strtolower($\u服务器['HTTP\u X\u请求的\u带有'])!='xmlhttprequest'){ //设置会话变量 会话_start(); $\会话['cf\u returndata']=$returndata; //重定向回表单 标题('location:'.$\u服务器['HTTP\u REFERER']); } }
//附加文件
是我试图使上传工作-我会感谢一些帮助谢谢

HTTP_X_REQUESTED_WITH
这是否意味着您正试图通过XHR上传文件?你不能

如果($\u文件['UPLOAD\u文件']['error']==UPLOAD\u ERR\u OK){


表示没有错误,并且它是唯一的“无错误”值,您将其视为错误。应改为!=并且此检查必须在移动上传的文件()之前进行,以补充其他答案:

1)在表单HTML中,确保包含
enctype

<form method="POST" action="uploader.php" enctype="multipart/form-data">
    <input type="FILE" name="uploaded_file"/>
</form>


2)确保
uploads/
具有正确的文件权限以允许r/w

那么,问题出在哪里?错误是什么?您好,没有错误,文件不会上载到:“uploads/”如果您的文件未上载,则会显示错误消息,
“上载文件时出错,请重试”
,根据您的代码,应该已经出现。显示表单HTML?好的,谢谢-我想这就是问题所在。您能告诉我另一种选择的方向吗?嗨,我已经这样做了,但仍然无法上传照片…谢谢