Izninden sonra tekrar Post verileri

5 Cevap php

Ben bile giriş yapmadan formu göndermek, onlar ben onları geri eklemek için gitmek istediğiniz yere bir giriş sayfasına yönlendirilirsiniz giriş yapmadınız ziyaretçilere görünür bir form olduğu bir CakePHP uygulaması var Tüm gönderilen form verileri ile kontrolör.

Bu mümkün mü? Evetse, nasıl?

5 Cevap

Kafamın üst kapalı, böyle bir şey çalışması gerekir:

function beforeFilter() {
    // be sure to do this before any Auth or security checks
    if ($this->RequestHandler->isPost() && $this->data) {
        $this->Session->write('last_post_data', $this->data);
    }
}

function add() {
    if (!$this->data && $this->Session->check('last_post_data')) {
        $this->data = $this->Session->read('last_post_data');
    }
    $this->Session->delete('last_post_data');

    if ($this->data) {
        // save as usual
    }
}

Sadece düzgün Oturum kaydedilen POST verilerinin imha etmek, ya da daha sonra hasara batık olabilir emin olun. Aslında, Oturum verileri kaydetmek gerekir değil sadece, aynı zamanda ($this->action ve $this->controller) yönelik hangi eylem ve eylem verilerini yeniden önce bu kontrol . Muhtemelen de veri üzerinde çok sıkı bir zaman aşımı koymak.

Sana SESSION kullanmak veya buna benzer bir şey yapmak zorunda olacağını düşünüyorum:

<input type="text" name="user" value="<?php echo $_POST['user'];?>">
<input type="password" name="password" value="<?php echo $_POST['password'];?>">

Yukarıda i POST dizi kullandık ama eğer varsa da bunun için Cake dizi kullanabileceğinizi unutmayın.

Giriş yapmadan önce kullanıcıların oturum atama ve oturumda veri depolamak. Bu oturumu varsayılan yanlış bir nitelik LoggedIn olabilir.

Bu sunucu tarafı tutmak, olsa bir tanımlama oturum verilerini saklamak etmeyin :)

Formun üst ve giriş sayfasında session_start(); koyun. Formun eylem sayfası ayarlamak oturum değişkenleri:

$_SESSION['name'] = $_POST['name'];
$_SESSION['address'] = $_POST['address'];
etc...

Form sayfasında, aşağıdaki söyleyerek değerleri ayarlayın:

<input type="text" name="name" id="name" value="<?php echo $_SESSION['name']; ?>" />
<input type="text" name="address" id="address" value="<?php echo $_SESSION['address']; ?>" />
etc...

Sadece formu erişmek için oturum açmış kullanıcılar izin, ayrıca canlı oturumu tutan formu ile sayfaya bir periyodik AJAX isteği ekleyebilirsiniz.

window.setInterval(function(){
    jQuery.get("/url/to_page_that_does_nothing");
}, 600000);

Kullanıcı formu doldururken sadece başlatıldığında zamanlayıcı acticated böylece de kurmak olabilir.

Sorumluluk Reddi: 1) Bu tekrar oturum kadar güvenli, ama uygulamak için daha hızlı / kolay değil) jQuery 2 kullanır.