(PHP 4 >= 4.3.2, PHP 5, PHP 7)
session_regenerate_id — ʹ�������ɵĻỰ ID �������лỰ ID
$delete_old_session
= FALSE
] ) : boolsession_regenerate_id() �ڲ��ĵ�ǰ�Ự�����ݵ�ǰ����ʹ���µ� ID �滻ԭ�лỰ ID��
��������� session.use_trans_sid ѡ� ��ô�����ڵ��� session_regenerate_id() ����֮��ʼ������������� ����ᵼ��ʹ��ԭ�еĻỰ ID��
��ǰ�� session_regenerate_id ��û�кܺõĴ����������ƶ���������� WiFi ���粻�ȶ��ij����� ��ˣ����� session_regenerate_id ���� ���ܻᵼ�»Ự��ʧ��
�㲻Ӧ��ֱ�����پɵĻỰ�����������ݣ� ����Ӧ��ʹ��ʱ������������ƶ����Ѿ�ʧЧ�ĻỰ ID �ķ��ʡ� �����ܻ��ڲ������ʵij����µ��»Ự���ݲ�һ�¡� �Ự��ʧ��������������������ͻ��ˣ�������������ܶ����õĻỰ ID�� ���ǣ�����һ��������������ɾ���Ự�е����� ���Է�ֹ�Ự�ٳֹ�����
delete_old_session
�Ƿ�ɾ��ԭ ID �������ĻỰ�洢�ļ��� �������Ҫ����Ự�������ʳ�ͻ����ô��Ӧ������ɾ���Ự�е����ݡ� �������Ҫ��ֹ�Ự�ٳֹ�������ô��������ɾ���Ự���ݡ�
�ɹ�ʱ���� TRUE
�� ������ʧ��ʱ���� FALSE
��
�汾 | ˵�� |
---|---|
7.0.0 | session_regenerate_id() �����ڹرչ��ڻỰ֮ǰ�������е����ݡ� |
5.1.0 |
�¼� delete_old_session ������
|
4.3.3 | ������ûỰ cookie�� ���� session_regenerate_id() ���� ��ʹ���µĻỰ ID ������ cookie �������ͻ��ˡ� |
Example #1 A session_regenerate_id() ʾ��
<?php
// ע�⣺���в��������Ĵ��룬ֻ��һ��ʾ��
session_start();
// ���Ự�����ٵ�ʱ���
if (isset($_SESSION['destroyed'])
&& $_SESSION['destroyed'] < time() - 300) {
// ͨ�����ᷢ����������������������ô���������ڲ��ȶ�������״�����߱��������µ�
// �Ƴ��û��Ự�е���֤��Ϣ
remove_all_authentication_flag_from_active_sessions($_SESSION['userid']);
throw(new DestroyedSessionAccessException);
}
$old_sessionid = session_id();
// ���ûỰ����ʱ���
$_SESSION['destroyed'] = time(); // �� PHP 7.0.0 ��ʼ, session_regenerate_id() ���Զ�����Ự����
// ���ֱ�ӵ��� session_regenerate_id() �������ܻᵼ�»Ự��ʧ�������
// ����������
session_regenerate_id();
// �´����ĻỰ����Ҫʱ���
unset($_SESSION['destroyed']);
$new_sessionid = session_id();
echo "Old Session: $old_sessionid<br />";
echo "New Session: $new_sessionid<br />";
print_r($_SESSION);
?>
��ǰ�ĻỰģ��δ�ܺܺõĴ��������粻�ȶ���ʱ���»Ự��ʧ�ij����� ����Ҫ���й���Ự ID ������� session_regenerate_id ���»Ự��ʧ��
Example #2 Avoiding lost session by session_regenerate_id()
<?php
// ע�⣺���в��������Ĵ��룬ֻ��һ��ʾ��
// my_session_start() �� my_session_regenerate_id()
// �������Ա��������粻�ȶ�������µ��»Ự��ʧ�����⡣
// ���һ����Ա����û��Ự������������
function my_session_start() {
session_start();
if (isset($_SESSION['destroyed'])) {
if ($_SESSION['destroyed'] < time()-300) {
// ͨ�����ᷢ����������������������ô���������ڲ��ȶ�������״�����߱��������µ�
// �Ƴ��û��Ự�е���֤��Ϣ
remove_all_authentication_flag_from_active_sessions($_SESSION['userid']);
throw(new DestroyedSessionAccessException);
}
if (isset($_SESSION['new_session_id'])) {
// ��δ��ȫ���ڣ��������������粻�ȶ�����ġ�
// �����ٴ�������ȷ�ĻỰ ID cookie��
// ע�⣺�������Ҫ�Ƴ���֤��ǣ���ô��Ҫ�����ٴ����ûỰ ID��
session_commit();
session_id($_SESSION['new_session_id']);
// ���������µĻỰ ID �ˡ�
session_start();
return;
}
}
}
function my_session_regenerate_id() {
// ������ڲ��ȶ������絼��û�д����Ự ID��
// ��ô�ʹ���һ��
$new_session_id = session_create_id();
$_SESSION['new_session_id'] = $new_session_id;
// ��������ʱ���
$_SESSION['destroyed'] = time();
// ���沢�رջỰ
session_commit();
// ʹ���µĻỰ ID ��ʼ�Ự
session_id($new_session_id);
ini_set('session.use_strict_mode', 0);
session_start();
ini_set('session.use_strict_mode', 1);
// �µĻỰ����Ҫ�� 2 ��������
unset($_SESSION['destroyed']);
unset($_SESSION['new_session_id']);
}
?>