Php 无法使用Post在表单中上载文件
将文件上载添加到现有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
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?好的,谢谢-我想这就是问题所在。您能告诉我另一种选择的方向吗?嗨,我已经这样做了,但仍然无法上传照片…谢谢