Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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 检查是否存在唯一的电子邮件&;将上载文件类型限制为PDF_Php_Email_Pdf - Fatal编程技术网

Php 检查是否存在唯一的电子邮件&;将上载文件类型限制为PDF

Php 检查是否存在唯一的电子邮件&;将上载文件类型限制为PDF,php,email,pdf,Php,Email,Pdf,我正试图做一个代码,提交一个与电子邮件形式和附加一个pdf文件。我已经将电子邮件列设置为数据库中唯一的列,但从前端看,它显示为文件已上载(尽管记录未保存)。我还在代码中使用了allowed ext,但它不起作用。下面是我正在使用的代码。请求为我修改代码。谢谢 <?php include_once 'dbconfig.php'; if(isset($_POST['btn-upload'])) { $name = trim($_POST["uname"]); $em

我正试图做一个代码,提交一个与电子邮件形式和附加一个pdf文件。我已经将电子邮件列设置为数据库中唯一的列,但从前端看,它显示为文件已上载(尽管记录未保存)。我还在代码中使用了allowed ext,但它不起作用。下面是我正在使用的代码。请求为我修改代码。谢谢

<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-upload']))
{    
     $name = trim($_POST["uname"]);
     $email = trim($_POST["uemail"]);
     $exp = trim($_POST["uexp"]);
     $desig = trim($_POST["udesig"]);
     $tech = trim($_POST["utech"]); 

    $file = rand(1000,100000)."-".$_FILES['file']['name'];
    $file_loc = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];
    $allowed_ext = 'application/pdf';
    $folder="uploads/";


    // new file size in KB
    $new_size = $file_size/1024;  
    // new file size in KB

    // make file name in lower case
    $new_file_name = strtolower($file);
    // make file name in lower case

    $final_file=str_replace(' ','-',$new_file_name);
    if($allowed_ext != $allowed_ext)
            {
                echo "Warning: Please upload your note in PDF file type only";
                unlink($fileTmpLoc);
                exit();
            }
            else

            if(move_uploaded_file($file_loc,$folder.$final_file))

    {

        $sql="INSERT INTO tbl_uploads(name,email,exp,desig,tech,file,type,size) VALUES('$name','$email','$exp','$desig','$tech','$final_file','$file_type','$new_size')";
        mysql_query($sql);
        ?>
        <script>

        window.location.href='success.php';
        </script>
        <?php
    }
    else
    {
        ?>
        <script>
        alert('error while uploading file');
        window.location.href='index.php?fail';
        </script>
        <?php
    }
}

?>

使用
pathinfo
获取文件扩展名

$ext = pathinfo($filename, PATHINFO_EXTENSION);

if($ext != "pdf") {
      //error part here
}
对于电子邮件部分,在检查文件扩展名之前,编写如下查询:

select * from your_table where email = "{$_POST['email']}".
上述查询的id num行数大于0,则您的数据库中已存在电子邮件


检查唯一的电子邮件部分。

扩展名是点后的字符

您可以通过路径名获得它:

$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
然后您允许的扩展应该是:

$allowed_ext = 'pdf';
比较如下:

if($allowed_ext == $ext){ ...
替换:

if($allowed_ext != $allowed_ext)
        {
            echo "Warning: Please upload your note in PDF file type only";
            unlink($fileTmpLoc);
            exit();
        }
与:

if($file_type != $allowed_ext)
        {
            echo "Warning: Please upload your note in PDF file type only";
            unlink($fileTmpLoc);
            exit();
        }

您的代码不推荐使用PDO或SQLi,如果您想检查sql\u查询是否成功,也可以使用PDO或SQLi。full$result=mysql\u query($sql);如果(!$result){die('Invalid query:'.mysql_error());}亲爱的Abhijeet,则对文件类型的更正有效。您能告诉我如何为唯一的电子邮件编写代码吗。我尝试了$sql=“SELECT COUNT(*)作为来自tbl_用户的计数,其中email=:email_id”;尝试{$stmt=$DB->prepare($sql);$stmt->bindValue(“:email_id”,$email);$stmt->execute();$result=$stmt->fetchAll();if($result[0][“count”]>0){$msg=“email已经存在”;$msgType=“warning”}否则{$sql=“插入到`tbl_uploads`中,但这会导致服务器错误。代码不起作用。您能告诉我如何在上述代码中使用此代码吗?您好,您能给我$sql中的代码吗…应该插入到哪里。我尝试用$email重新解析:电子邮件,但不起作用。此查询对我有效:选择计数(*)作为tbl_用户的计数,其中电子邮件sample@gmail.com'您可以尝试使用您的初始代码打印吗?'现在我尝试使用:$query=“SELECT COUNT(*)作为tbl_上传的计数,其中email='$email'”;$result=mysql_查询($query);if(mysql_num_rows($result)==1){echo“警告:电子邮件已经存在”;unlink($fileTmpLoc);exit();}否则即使电子邮件不存在,此代码也会发出警告。