0

こんにちは、codeigniter を使用して画像パスをデータベースにアップロードできましたが、カテゴリのオプションをデータベースに渡すことができないようです。私は2つのオプションを持つドロップダウンメニューを持っていて、それをコントローラーに渡してデータベースに挿入できるようにしたいと考えています。

ここに私のコードがあります:

私の見解

<html>
<head>
<title>Upload Form</title>
</head>
<body>

<?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>

<input type="file" name="userfile" size="20" />
<br />
<select name="album" id="album"> // my dropdown list
    <option value="staff">Album Staff</option>
    <option value="gallery">Gallery</option>
</select>
<br /><br />

<input type="submit" value="upload" />

</form>

</body>
</html>

これが私のコントローラーです

<?php

class Upload extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form', 'url'));
    }

    function index()
    {
        $this->load->view('upload_form', array('error' => ' ' ));
    }

    function do_upload()
    {
        $config['upload_path'] = './assets/images';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1000';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';
        $config['overwrite'] = TRUE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = FALSE;
        $this->load->library('upload', $config);

        if ( ! $this->upload->do_upload())
        {
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('upload_form', $error);
        }
        else
        {
            $data = array('upload_data' => $this->upload->data());

            $this->load->view('upload_success', $data);
            $upload_info=$this->upload->data();
            $insert_data = array(
            'imgfilename' => $upload_info['file_name'],
            'imgfilepath' => $upload_info['file_path'],
            'album' => $this->input->post('album') //trying to get the value from select in view
            );
            $this->db->insert('db_images', $insert_data);

        }
    }
}
?>

それはどのように行われるべきですか?解決策はありますか?

4

1 に答える 1

0

それがどのように機能するかを確認するために使用mysql_real_escape_string($_POST["album"])してみましたか? global_xss_filter を true に設定すると、いくつかの保護/影響を受ける可能性があります。不思議なことに、何がコードを妨害しているのかを常に知ることはできません。そのため、複数のオプションを用意する必要があります。上記の行を試して、結果が得られるかどうかを確認してください。もしそうなら、あなたはこれを行うことができます:

$album = "";
$albums = array("gallery", "staff"); //restrict types of allowed albums
$str = mysql_real_escape_string($_POST["album"]); //clean up the string

if(in_array($str, $albums)){
$album = $str; //get the album to send to database
}
于 2013-02-25T23:43:35.403 に答える