Php jika ada sesi redirect

The following code shows how the PHP session works. The function my_session_start() does almost the same thing as session_start().

error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('session.save_path', __DIR__);_

my_session_start();

echo '_

session id: '.my_session_id().'_

';

echo '

________0';

$now = date('H:i:s');
if (isset($_SESSION['last_visit_time'])) {
  echo '

Last Visit Time: '.$_SESSION['last_visit_time'].'

';
}
echo '

Current Time: '.$now.'

';

$_SESSION['last_visit_time'] = $now;

function my_session_start() {
  global $phpsessid, $sessfile;

  if (!isset($_COOKIE['PHPSESSID']) || empty($_COOKIE['PHPSESSID'])) {
    $phpsessid = my_base32_encode(my_random_bytes(16));
    setcookie('PHPSESSID', $phpsessid, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
  } else {
    $phpsessid = substr(preg_replace('/[^a-z0-9]/', '', $_COOKIE['PHPSESSID']), 0, 26);
  }

  $sessfile = ini_get('session.save_path').'/sess_'.$phpsessid;
  if (is_file($sessfile)) {
    $_SESSION = unserialize(file_get_contents($sessfile));
  } else {
    $_SESSION = array();
  }
  register_shutdown_function('my_session_save');
}

function my_session_save() {
  global $sessfile;

  file_put_contents($sessfile, serialize($_SESSION));
}

function my_session_id() {
  global $phpsessid;
  return $phpsessid;
}

function my_random_bytes($length) {
  if (function_exists('random_bytes')) {
      return random_bytes($length);
  }
  $randomString = '';
  for ($i = 0; $i < $length; $i++) {
      $randomString .= chr(rand(0, 255));
  }
  return $randomString;
}

function my_base32_encode($input) {
  $BASE32_ALPHABET = 'abcdefghijklmnopqrstuvwxyz234567';
  $output = '';
  $v = 0;
  $vbits = 0;
  for ($i = 0, $j = strlen($input); $i < $j; $i++) {
    $v <<= 8;
    $v += ord($input[$i]);
    $vbits += 8;
    while ($vbits >= 5) {
      $vbits -= 5;
      $output .= $BASE32_ALPHABET[$v >> $vbits];
      $v &= ((1 << $vbits) - 1);
    }
  }
  if ($vbits > 0) {
    $v <<= (5 - $vbits);
    $output .= $BASE32_ALPHABET[$v];
  }
  return $output;
}

Jika Anda ingin memeriksa sesi halaman dengan halaman master yang sama kecuali halaman login, Anda dapat menentukan properti di halaman master Anda dan menetapkan nilai ke true di halaman login Anda untuk memberi tahu halaman master agar tidak memeriksa Sesi

Di bawah ini adalah kode saya

// define a variable to know whether to check the session public bool Flag { get; set; } protected void Page_Load(object sender, EventArgs e) { if (!Flag && Session["Session"] == null) { Response.Redirect("~/Login.aspx"); } }

Kode di login. aspx

protected void Page_Init(object sender, EventArgs e) { // convert the master page to the real type of your master page to set the // customized property Site1 mas = Master as Site1; mas.Flag = true; }_

Setelah melakukan itu, Anda pengguna tidak akan dialihkan saat login. aspx dan Anda bisa menyelesaikan logika login proyek Anda

Ada cara lain. Anda bisa membuat kelas normal (bukan aspx. cs hanya file cs), biarkan kelas mewarisi dari System. Web. UI. Halaman.  

Kemudian Anda dapat menulis logika pengalihan di acara Page_Init kelas dan membiarkan halaman yang ingin dialihkan mewarisi dari kelas (kecuali login. aspx)

Saya membaca pertanyaan ini dan menerapkan pendekatan yang telah dinyatakan mengenai pengaturan kode status HTTP respons ke 278 untuk menghindari browser secara transparan menangani pengalihan. Meskipun ini berhasil, saya sedikit tidak puas karena ini sedikit meretas

Setelah menggali lebih dalam, saya membuang pendekatan ini dan menggunakan JSON. Dalam hal ini, semua respons terhadap permintaan AJAX memiliki kode status 200 dan isi respons berisi objek JSON yang dibangun di server. JavaScript pada klien kemudian dapat menggunakan objek JSON untuk memutuskan apa yang perlu dilakukan

Saya memiliki masalah yang mirip dengan Anda. Saya melakukan permintaan AJAX yang memiliki 2 kemungkinan tanggapan. yang mengalihkan browser ke halaman baru dan yang menggantikan formulir HTML yang ada di halaman saat ini dengan yang baru. Kode jQuery untuk melakukan ini terlihat seperti

$.ajax({ type: "POST", url: reqUrl, data: reqBody, dataType: "json", success: function(data, textStatus) { if (data.redirect) { // data.redirect contains the string URL to redirect to window.location.href = data.redirect; } else { // data.form contains the HTML for the replacement form $("#myform").replaceWith(data.form); } } });

Objek JSON "data" dibangun di server untuk memiliki 2 anggota. data.redirect dan data.form. Saya menemukan pendekatan ini jauh lebih baik

Javascript – Cara mengalihkan ke halaman web lain

Seseorang tidak hanya mengarahkan ulang menggunakan jQuery

jQuery tidak diperlukan, dan window.location.replace(...) terbaik akan mensimulasikan HTTP redirect

window.location.replace(...) lebih baik daripada menggunakan session_start(); if (!isset($_SESSION["att"])) { echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php\">"; } 0, karena session_start(); if (!isset($_SESSION["att"])) { echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php\">"; } 1 tidak menyimpan halaman asal dalam riwayat sesi, yang berarti pengguna tidak akan terjebak dalam kegagalan tombol kembali yang tidak pernah berakhir

Postingan terbaru

LIHAT SEMUA