Frage

Ich weiß, dass codeigniter dreht GET-Parameter standardmäßig deaktiviert.

Aber alles in POST getan haben, oder nicht durch die Re-Sendedatenanforderungen ärgern, wenn Sie jemals wieder nach einer Formularübermittlung drücken?

Es ärgert mich, aber ich bin nicht sicher, ob ich rein aus diesem Grunde erlauben will bekommen.

Ist es so ein großes Sicherheitsproblem GET-Parameter zu erlauben?

War es hilfreich?

Lösung

Wenn ich mit CodeIgniter zuerst anfing zu arbeiten, nicht so gut mit GET warf mich wirklich ab. Aber dann erkannte ich, dass Sie GET-Parameter durch den URI Manipulation simulieren kann mit dem eingebauten in URI Klasse . Es ist fantastisch, und es macht die URLs besser aussehen.

Oder wenn Sie wirklich brauchen GETs arbeiten Sie dies in Ihrem Controller setzen können:

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

Welche Variablen wird wieder in die GET gestellt hat.

Andere Tipps

Das funktioniert für mich:

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

$params Array enthält die Parameter nach dem vergangen? Zeichen

Jetzt funktioniert es ok aus CodeIgniter 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; 

Diese Funktion ist identisch mit der Post-Funktion, es holt nur Daten erhalten:

$this->input->get()

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

Sie müssen es einfach in der config.php aktivieren und $this->input->get('param_name'); können Parameter erhalten.

parse_str($_SERVER['QUERY_STRING'],$_GET); NUR für mich gearbeitet, nachdem ich die folgende Zeile in Anwendungen / config / config.php hinzugefügt:

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

Ich fand $ _GET params nicht wirklich in CI notwendig sein, aber Facebook und anderen Websites Dump GET params bis zum Ende der Links, das würde 404 für meine CI-Website !! Durch das Hinzufügen der Zeile oben in config.php, arbeiteten diese Seiten. Ich hoffe, das hilft den Menschen!

(von http://www.maheshchari.com/ Work-to-get-Methode-on-codeigniter / )

Sie können Query-Strings aktivieren, wenn Sie wirklich darauf bestehen. In der config.php können Sie Abfrage-Strings aktivieren:

$config['enable_query_strings'] = TRUE;

Für weitere Informationen können Sie am Ende dieser Wiki-Seite aussehen: http://codeigniter.com/user_guide/general/urls.html

Still, das Lernen mit sauberem Urls zu arbeiten, ist ein besserer Vorschlag.

„nicht wahr genervt durch die Wieder senden Datenanforderungen, wenn überhaupt drücken Sie zurück nach einer Formularübermittlung“

Sie können dies umgehen, indem eine Umleitung von der Seite zu tun, dass Ihr Formular Vorlage an die Erfolgsseite verarbeitet. die letzte „Aktion“ war die Belastung der Erfolgsseite, nicht die Formulareinreichung, was bedeutet, wenn Benutzer eine F5 tun wird es nur die Seite neu zu laden und nicht das Formular erneut.

Wenn Ihr Ihren Bedarf ersten Parameter verwenden.

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

Und Ihre Notwendigkeit zweite Parameter verwenden Sie es

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

Haben Sie Ihren viele Parameter Parameter verbessern

allesklar: Das ist etwas irreführend, da Scripts und Bots können Daten POST fast so einfach wie eine normale Anfrage senden. Es ist kein Geheimnis, es ist ein Teil von HTTP.

Ein wenig aus Thema, aber ich war für eine get-Funktion in CodeIgniter suche nur einige Variablen zwischen Controllern passieren und kommen über Flashdata.
siehe: http://codeigniter.com/user_guide/libraries/sessions.html
Flashdata ermöglicht Ihnen ein schnelles Session-Daten zu erstellen, die nur für die nächste Server-Anforderung zur Verfügung stehen werden, und werden dann automatisch gelöscht.

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 */

meine Parameter uid = 4 und bekommen es mit:

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

wis

GET-Parameter werden vom Web-Browser im Cache gespeichert, POST nicht. Also mit einem POST müssen Sie nicht über Caching sorgen, so dass Deshalb ist es in der Regel bevorzugt.

Sie können dies versuchen

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

Noch einfacher:

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

das Plugin ist ziemlich cool though.

Tun Sie dies unten. Arbeitete für mich. Ich nahm Werte aus einer Auswahlbox und ein anderes Textbox. Dann auf die Schaltfläche klicken ich die gesamten Daten in Javascript-Funktion hat und umgeleitet Javascript.

//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;
        }
    });
});

Der obige Code für mich gearbeitet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top