سؤال

وأنا أعلم أن codeIgniter إيقاف الحصول على المعلمات بشكل افتراضي.

ولكن من خلال وجود كل شيء في ما بعد, لا يمكنك الحصول على منزعج من إعادة إرسال طلبات الحصول على البيانات إذا كنت اضغط مرة أخرى بعد استمارة التقديم ؟

فإنه يزعجني لكنني لست متأكدا إذا كنت ترغب في السماح الحصول على بحتة لهذا السبب.

هي أمنية كبيرة المسألة إلى تسمح الحصول على المعلمات أيضا ؟

هل كانت مفيدة؟

المحلول

عندما بدأت العمل مع CodeIgniter, لا تستخدم على أغضبنى حقا كذلك.ولكن بعد ذلك أدركت أنه يمكنك محاكاة الحصول على المعلمات عن طريق التلاعب URI باستخدام المدمج في أوري الدرجة.انها رائعة و يجعل عناوين المواقع الخاصة بك تبدو أفضل.

أو إذا كنت حقا بحاجة يحصل العامل يمكنك وضع هذا في جهاز تحكم:

parse_str($_SERVER['QUERY_STRING'], $_GET); 

والتي سوف تضع المتغيرات مرة أخرى إلى الحصول على مجموعة.

نصائح أخرى

وهذا عمل بالنسبة لي:

<?php
$url = parse_url($_SERVER['REQUEST_URI']);
parse_str($url['query'], $params);
?>

و$params مجموعة تحتوي على المعلمات التي تم تمريرها بعد؟ الطابع

والآن يعمل طيب من كود إغنيتر 2.1.0

    //By default CodeIgniter enables access to the $_GET array.  If for some
    //reason you would like to disable it, set 'allow_get_array' to FALSE.

$config['allow_get_array']      = TRUE; 

وهذه هي وظيفة مماثلة لوظيفة آخر، إلا أنه يجلب الحصول على بيانات:

$this->input->get()

https://www.codeigniter.com/user_guide/libraries/input.html

ولكم ببساطة الحاجة لتمكينه في ملف config.php ويمكنك استخدام $this->input->get('param_name'); للحصول على المعلمات.

وparse_str($_SERVER['QUERY_STRING'],$_GET); عملت فقط بالنسبة لي بعد أن إضافة السطر التالي إلى تطبيقات / التكوين / config.php ل:

و$config['uri_protocol'] = "PATH_INFO";

ولقد وجدت $ _GET بارامس لا تكون ضرورية حقا في CI، ولكن الفيسبوك وغيرها من المواقع تفريغ بارامس GET إلى نهاية الروابط التي من شأنها 404 CI لموقع بلدي! بإضافة السطر أعلاه في ملف config.php، عملت تلك الصفحات. آمل أن يساعد هذا الناس!

و(من http://www.maheshchari.com/ العمل إلى الحصول على لطريقة على اساس كود إغنيتر / )

ويمكنك تمكين سلاسل الاستعلام إذا كنت تصر حقا. في ملف config.php الخاص بك يمكنك تمكين سلاسل الاستعلام:

$config['enable_query_strings'] = TRUE;

لمزيد من المعلومات يمكنك أن تبحث في أسفل هذه الصفحة ويكي: http://codeigniter.com/user_guide/general/urls.html

ومع ذلك، والتعلم للعمل مع عناوين المواقع النظيفة هو اقتراح أفضل.

و"لا تحصل على ازعاج من قبل طلبات البيانات إعادة إرسال إذا سبق لك اضغط مرة أخرى بعد تقديم النموذج"

ويمكنك الحصول على حول هذا عن طريق القيام إعادة توجيه من الصفحة التي تعالج تقديم النموذج الخاص بك إلى صفحة النجاح. "العمل" الماضي كان تحميل الصفحة نجاح، وليس تقديم النموذج، وهو ما يعني إذا مستخدمين القيام على F5 سيكون مجرد إعادة تحميل هذه الصفحة ولم تقدم النموذج مرة أخرى.

وإذا كان لديك حاجة إلى المعلمة الأولى استخدامها.

$this->uri->segment('3');

وحاجتك المعلمة الثانية استخدامه

$this->uri->segment('4');

هل لديك المعلمة كثيرة تعزز المعلمة

وallesklar: هذا هو مضلل قليلا، والنصوص والسير يمكن نشر بيانات ما يقرب من بالسهولة إرسال طلب العادي. انها ليست سرا، انها جزء من HTTP.

وقليلا قليلا من الموضوع، ولكن كنت أبحث عن وظيفة الحصول في كود إغنيتر فقط لتمرير بعض المتغيرات بين وحدات التحكم وتأتي عبر Flashdata.
راجع: http://codeigniter.com/user_guide/libraries/sessions.html
Flashdata يسمح لك لخلق البيانات جلسة سريعة من شأنها أن تكون متاحة للطلب الخادم المقبل فقط، ثم يتم مسح تلقائيا.

وMY_Input.php:

<?php
// this class extension allows for $_GET access
class MY_Input extends CI_input {

    function _sanitize_globals()
    {
        // setting allow_get_array to true is the only real modification
        $this->allow_get_array = TRUE;

        parent::_sanitize_globals();
    }

}
/* End of file MY_Input.php */
/* Location: .application/libraries/MY_Input.php */

وMY_URI.php:

<?php
/*
 | this class extension allows for $_GET access by retaining the
 | standard functionality of allowing query strings to build the 
 | URI String, but checks if enable_query_strings is TRUE
*/
class MY_URI extends CI_URI{

    function _fetch_uri_string()
    {
        if (strtoupper($this->config->item('uri_protocol')) == 'AUTO')
        {
            // If the URL has a question mark then it's simplest to just
            // build the URI string from the zero index of the $_GET array.
            // This avoids having to deal with $_SERVER variables, which
            // can be unreliable in some environments
            //
            //  *** THE ONLY MODIFICATION (EXTENSION) TO THIS METHOD IS TO CHECK 
            //      IF enable_query_strings IS TRUE IN THE LINE BELOW ***
            if ($this->config->item('enable_query_strings') === TRUE && is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '')
            {
                $this->uri_string = key($_GET);
                return;
            }

            // Is there a PATH_INFO variable?
            // Note: some servers seem to have trouble with getenv() so we'll test it two ways
            $path = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : @getenv('PATH_INFO');
            if (trim($path, '/') != '' && $path != "/".SELF)
            {
                $this->uri_string = $path;
                return;
            }

            // No PATH_INFO?... What about QUERY_STRING?
            $path =  (isset($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
            if (trim($path, '/') != '')
            {
                $this->uri_string = $path;
                return;
            }

            // No QUERY_STRING?... Maybe the ORIG_PATH_INFO variable exists?
            $path = str_replace($_SERVER['SCRIPT_NAME'], '', (isset($_SERVER['ORIG_PATH_INFO'])) ? $_SERVER['ORIG_PATH_INFO'] : @getenv('ORIG_PATH_INFO'));
            if (trim($path, '/') != '' && $path != "/".SELF)
            {
                // remove path and script information so we have good URI data
                $this->uri_string = $path;
                return;
            }

            // We've exhausted all our options...
            $this->uri_string = '';
        }
        else
        {
            $uri = strtoupper($this->config->item('uri_protocol'));

            if ($uri == 'REQUEST_URI')
            {
                $this->uri_string = $this->_parse_request_uri();
                return;
            }

            $this->uri_string = (isset($_SERVER[$uri])) ? $_SERVER[$uri] : @getenv($uri);
        }

        // If the URI contains only a slash we'll kill it
        if ($this->uri_string == '/')
        {
            $this->uri_string = '';
        }
    }

}
/* End of file MY_URI.php */
/* Location: .application/libraries/MY_URI.php */

والمعلمة بلدي هو رمز المستخدم = 4 وسهولة الحصول عليها مع:؟

$this->uid = $this->input->get('uid', TRUE);
  echo $this->uid;

ونظام معلومات المنظمة

ويتم مؤقتا الحصول على المعلمات من قبل متصفح الإنترنت، وظيفة ليست كذلك. حتى مع وظيفة لم يكن لديك ما يدعو للقلق التخزين المؤقت، لذلك هذا هو السبب يفضل عادة.

ويمكنك جرب هذا

$this->uri->segment('');

وحتى أسهل:

curl -X POST -d "param=value&param2=value" http://example.com/form.cgi

وهذا البرنامج المساعد بارد جدا على الرغم من.

هل هذا أدناه. عملت بالنسبة لي. أخذت القيم من مربع حدد النص وآخر. ثم على النقر على زر أخذت البيانات بالكامل في وظيفة جافا سكريبت وإعادة توجيه باستخدام جافا سكريبت.

//Search Form
$(document).ready (function($){
    $("#searchbtn").click(function showAlert(e){
        e.preventDefault();
        var cat = $('#category').val();
        var srch = $('#srch').val();

        if(srch==""){
            alert("Search is empty :(");
        }
        else{
            var url = baseurl+'categories/search/'+cat+'/'+srch;            
            window.location.href=url;
        }
    });
});

ورمز أعلاه عملت بالنسبة لي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top