PHP mt_rand无法正常工作

时间:2017-09-02 10:23:56

标签: php html

我试图从表单的隐藏输入类型发布随机值..但它没有发布任何值.. 使用函数发布值..

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="jquery.form.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#images').on('change',function(){
        $('#multiple_upload_form').ajaxForm({
            target:'#images_preview',
            beforeSubmit:function(e){
                $('.uploading').show();
            },
            success:function(e){
                $('.uploading').hide();
            },
            error:function(e){
            }
        }).submit();
    });
});
</script>
<form method="post" name="multiple_upload_form" id="multiple_upload_form" enctype="multipart/form-data" action="upload.php">
    <input type="hidden" name="randnum" id ="randnum" value="<?php echo mt_rand(1000,10000000); ?>" />
    <input type="hidden" name="image_form_submit" value="1"/>
        <label>Choose Image</label>
        <input type="file" name="images[]" id="images" multiple >
    <div class="uploading none">
        <label>&nbsp;</label>
        <img src="uploading.gif"/>
    </div>


</form>

这是upload.php

    if($_POST['image_form_submit'] == 1)

{
    $rand = $_POST['randnum'];

    $con=new PDO("mysql:host=localhost;dbname=newimg","root","");
    $images_arr = array();
    foreach($_FILES['images']['name'] as $key=>$val){
        $image_name = $_FILES['images']['name'][$key];
        $tmp_name   = $_FILES['images']['tmp_name'][$key];
        $size       = $_FILES['images']['size'][$key];
        $type       = $_FILES['images']['type'][$key];
        $error      = $_FILES['images']['error'][$key];

        $target_dir = "uploads/";
        $target_file = $target_dir.$_FILES['images']['name'][$key];
        if(move_uploaded_file($_FILES['images']['tmp_name'][$key],$target_file)){
            $images_arr[] = $target_file;   
            $addnew=$con->prepare("INSERT INTO attempt010(link,name,size,type)VALUES('$rand','$image_name','$size','$type')");
            $addnew->execute();
        }
    }
    $fetch_imgid=$con->prepare("SELECT * FROM attempt010 where link='$rand'");
    $fetch_imgid->setFetchMode(PDO:: FETCH_ASSOC);
    $fetch_imgid->execute();
    ?>

我每次发布表单时都试图存储一个随机数...

3 个答案:

答案 0 :(得分:4)

您需要echo mt_rand()生成的值,如下所示: -

<input type="hidden" name="randnum" value="<?php echo mt_rand(1000,10000000); ?>" />

注意: - 如果我更改了(form.js库文件),你的代码和我的更改工作正常: -

<script type="text/javascript" src="jquery.form.js"></script><!--local URL-->

要: -

<script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script><!-- I used live URL -->

答案 1 :(得分:0)

而不是

<input type="hidden" name="randnum" id ="randnum" 
         value="<?php echo mt_rand(1000,10000000); ?>" />

您可以在php代码中提交表单后生成

 $rand=mt_rand(1000,10000000);

这将帮助您在每次提交要上传的文件时生成密钥 if($_POST['image_form_submit'] == 1)

{
$rand = mt_rand(1000,10000000);

$con=new PDO("mysql:host=localhost;dbname=newimg","root","");
$images_arr = array();
foreach($_FILES['images']['name'] as $key=>$val){
    $image_name = $_FILES['images']['name'][$key];
    $tmp_name   = $_FILES['images']['tmp_name'][$key];
    $size       = $_FILES['images']['size'][$key];
    $type       = $_FILES['images']['type'][$key];
    $error      = $_FILES['images']['error'][$key];

    $target_dir = "uploads/";
    $target_file = $target_dir.$_FILES['images']['name'][$key];
    if(move_uploaded_file($_FILES['images']['tmp_name'][$key],$target_file)){
        $images_arr[] = $target_file;   
        $addnew=$con->prepare("INSERT INTO attempt010(link,name,size,type)VALUES('$rand','$image_name','$size','$type')");
        $addnew->execute();
    }
}
$fetch_imgid=$con->prepare("SELECT * FROM attempt010 where link='$rand'");
$fetch_imgid->setFetchMode(PDO:: FETCH_ASSOC);
$fetch_imgid->execute();

答案 2 :(得分:0)

   Please use try this,
   Your ajax script is not working try this and check if  opening and closing {} having error



    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <meta charset="utf-8">
        <title>Bootstrap Starter</title>
        <meta name="generator" content="Bootply" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
        <!--[if lt IE 9]>
              <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <style type="text/css">
        /*CUSTOM CODE HERE*/
        </style>

    </head>

    <body>

       <form method="post" name="multiple_upload_form" id="multiple_upload_form" enctype="multipart/form-data" action="upload.php">
        <input type="hidden" name="randnum" id ="randnum" value="<?php echo mt_rand(1000,10000000); ?>" />
        <input type="hidden" name="image_form_submit" value="1"/>
            <label>Choose Image</label>
            <input type="file" name="images[]" id="images" multiple >
        <div class="uploading none">
            <label>&nbsp;</label>
            <img src="uploading.gif"/>
        </div>

    </form>

        <script type='text/javascript' src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
        <script type='text/javascript' src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        $('#images').on('change',function(){


            var formObj = $("#multiple_upload_form");
            var formURL = formObj.attr("action");
            var formData = new FormData(formObj[0]);


            $('.uploading').show();
            $.ajax({
                        url: formURL,
                        type: "POST",
                        data:  formData,
                        contentType: false,
                        cache: false,
                        processData:false,
                        success: function(data, textStatus, jqXHR)
                        {
                            console.log(data);
                          $('.uploading').hide();

                        }         
                 });


        });
    });
    </script>
    </body>
    </html>

    <?php

     if($_POST['image_form_submit'] == 1)

    {
        $rand = $_POST['randnum'];

        $con=new PDO("mysql:host=localhost;dbname=newimg","root","");
        $images_arr = array();
        foreach($_FILES['images']['name'] as $key=>$val){
            $image_name = $_FILES['images']['name'][$key];
            $tmp_name   = $_FILES['images']['tmp_name'][$key];
            $size       = $_FILES['images']['size'][$key];
            $type       = $_FILES['images']['type'][$key];
            $error      = $_FILES['images']['error'][$key];

            $target_dir = "uploads/";
            $target_file = $target_dir.$_FILES['images']['name'][$key];
            if(move_uploaded_file($_FILES['images']['tmp_name'][$key],$target_file)){
                $images_arr[] = $target_file;   
                $addnew=$con->prepare("INSERT INTO attempt010(link,name,size,type)VALUES('$rand','$image_name','$size','$type')");
                $addnew->execute();
            }
        }
        $fetch_imgid=$con->prepare("SELECT * FROM attempt010 where link='$rand'");
        $fetch_imgid->setFetchMode(PDO:: FETCH_ASSOC);
        $fetch_imgid->execute();

       }


    ?>