php之将用户信息写入数据库_PHP教程
php之将用户信息写入数据库
session高级应用将用户信息写入到数据库中
首先建立数据库表
在实验数据库sqldb中建立session表,用于存储数据
在根目录下建立需要用到的文件(重点是session,class.php这个类文件,包含列一些方法)
在session.class.php中主要用到的是session_set_save_handler()这个方法,借助PDO进行数据操作,用类编写写入数据库表中,
类中定义了一些静态方法,其属性也要为静态的,这样session的数据就直接写入数据库中,而不是保存在本地文件夹中
首先建立一个Session类,类中首先定义一些私有静态的属性,定义了ip,生存时间和时间
<!--?php //定义session类 class Session{ private static $handler=null; private static $ip=null; private static $lifetime=null; private static $time=null; </pre-->
private static function init($handler){ self::$handler=$handler; //代表PDO的链接 //ip先判断不为空 self::$ip=!empty($_SERVER["REMOTE_ADDR"])? $_SERVER["REMOTE_ADDR"] : 'unkown'; //从配置文件取出生存时间 self::$lifetime=ini_get('session.gc_maxlifetime'); self::$time=time(); }
接下来就是定义开启session的方法
//定义开启session的方法 static function start(PDO $pdo){ self::init($pdo); //初始化私有方法 session_set_save_handler( array(__CLASS__,"open"), array(__CLASS__,"close"), array(__CLASS__,"read"), array(__CLASS__,"write"), array(__CLASS__,"destroy"), array(__CLASS__,"gc") ); session_start(); }
在开启session中有open, close, read, write, destory, gc 的方法,下面主要是定义出这些方法
open() 和 close() 方法
public static function open($path, $name){ return true; } public static function close(){ return true; }
在定义这些方法时,最重要的是write() 和 read() 方法,因为这是直接从数据库读出或写入,采用PDO数据库预处理方式
read():先进行PDO预处理,然后在获取的一条记录中,要判断ip是否为数据库中的ip,取出的数据是否已经过期,都不是就成功读出
public static function read($PHPSESSID){ $sql="select PHPSESSID,update_time,client_ip,data from session where PHPSESSID= ?"; //用?参数 //PDO预处理 $stmt=self::$handler->prepare($sql); $stmt->execute(array($PHPSESSID)); //获取一条记录 if(!$result=$stmt->fetch(PDO::FETCH_ASSOC)){ return ''; } //判断当前访问ip是否为数据库存在的ip if(self::$ip != $result["client_ip"]){ self::destroy($PHPSESSID); //销毁用户 return ''; } //判断是不是过期的 if(($result["update_time"] + self::$lifetime) < self::$time){ self::destroy($PHPSESSID); return ''; } return $result['data']; //成功读出 }
write():同样写入的方法也比较重要,需要判断传进来的数据是否为空,如果为空就不进行插入
public static function write($PHPSESSID, $data){ $sql="select PHPSESSID,update_time,client_ip,data from session where PHPSESSID= ?"; $stmt=self::$handler->prepare($sql); $stmt->execute(array($PHPSESSID)); if($result=$stmt->fetch(PDO::FETCH_ASSOC)){ //延迟30更新 if($result['data'] != $data || self::$time > ($result['update_time']+30)){ //更新数据语句 $sql="uptate session set update_time=?, data=? where PHPSESSID=?"; $stm=self::$handler->prepare($sql); $stm->execute(array(self::$time, $data, $PHPSESSID)); } }else{ //判断传进来的数据是否为空,空时不插入 if(!empty($data)){ $sql="insert into session(PHPSESSID,update_time,client_ip,data) values(?,?,?,?)"; //插入值用?参数 $sth=self::$handler->prepare($sql); $sth->execute(array($PHPSESSID,self::$time,self::$ip,$data)); //必须用数组 } } return true; }
接下来就是数据的销毁
同样 destory() 和 gc()
destory():数据删除
gc():垃圾回收
public static function destroy($PHPSESSID){ $sql="delete from session where PHPSESSID=?"; $stmt=self::$handler->prepare($sql); $stmt->execute(array($PHPSESSID)); return true; } private static function gc($lifetime){ $sql="delete from session where update_time < ?"; $stmt=self::$handler->prepare($sql); $stmt->execute(array(self::$time-$lifetime)); return true; } }
最后就抛出一个异常并调用session类
try{ $pdo=new PDO("mysql:host=localhost;dbname=sqldb","root","heyifeng19930924"); }catch(PDOException $e){ echo $e->getMessage(); } //调用session类 Session::start($pdo);
在测试文件中,写法和session高级用法(即上一篇博客的测试文件)一样
只是在包含文件中包含这个类文件
即:include"session.class.php";
测试结果,如果插入数据成功,查询表格信息,在数据库中显示:
即传递列PHPSESSID的值
删除撤销后,查询表格显示
即撤销了PHPSESSID的值

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Ia digemari oleh pembangun kerana kelebihannya dalam pengaturcaraan serentak dan pengaturcaraan rangkaian. Dalam pembangunan sebenar, operasi pangkalan data adalah bahagian yang sangat diperlukan Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Dalam bahasa Go, kami biasanya menggunakan perpustakaan pihak ketiga untuk mengendalikan pangkalan data, seperti pakej sql yang biasa digunakan, gorm, dsb. Di sini kami mengambil pakej sql sebagai contoh untuk memperkenalkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Andaikan kami menggunakan pangkalan data MySQL.

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

HTML tidak boleh membaca pangkalan data secara langsung, tetapi ia boleh dicapai melalui JavaScript dan AJAX. Langkah-langkah termasuk mewujudkan sambungan pangkalan data, menghantar pertanyaan, memproses respons dan mengemas kini halaman. Artikel ini menyediakan contoh praktikal menggunakan JavaScript, AJAX dan PHP untuk membaca data daripada pangkalan data MySQL, menunjukkan cara untuk memaparkan hasil pertanyaan secara dinamik dalam halaman HTML. Contoh ini menggunakan XMLHttpRequest untuk mewujudkan sambungan pangkalan data, menghantar pertanyaan dan memproses respons, dengan itu mengisi data ke dalam elemen halaman dan merealisasikan fungsi HTML membaca pangkalan data.

Analisis prinsip asas sistem pengurusan pangkalan data MySQL MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan yang menggunakan bahasa pertanyaan berstruktur (SQL) untuk penyimpanan dan pengurusan data. Artikel ini akan memperkenalkan prinsip asas sistem pengurusan pangkalan data MySQL, termasuk penciptaan pangkalan data, reka bentuk jadual data, penambahan data, pemadaman, pengubahsuaian dan operasi lain, dan menyediakan contoh kod khusus. 1. Penciptaan Pangkalan Data Dalam MySQL, anda perlu mencipta contoh pangkalan data untuk menyimpan data. Kod berikut boleh mencipta fail bernama "my

PHP ialah bahasa pengaturcaraan bahagian belakang yang digunakan secara meluas dalam pembangunan laman web Ia mempunyai fungsi operasi pangkalan data yang kuat dan sering digunakan untuk berinteraksi dengan pangkalan data seperti MySQL. Walau bagaimanapun, disebabkan kerumitan pengekodan aksara Cina, masalah sering timbul apabila berurusan dengan aksara Cina bercelaru dalam pangkalan data. Artikel ini akan memperkenalkan kemahiran dan amalan PHP dalam mengendalikan aksara bercelaru bahasa Cina dalam pangkalan data, termasuk punca biasa aksara bercelaru, penyelesaian dan contoh kod khusus. Sebab biasa aksara bercelaru ialah tetapan set aksara pangkalan data yang salah: set aksara yang betul perlu dipilih semasa mencipta pangkalan data, seperti utf8 atau u

Cara mengintegrasikan GoWebSocket dengan pangkalan data: Sediakan sambungan pangkalan data: Gunakan pakej pangkalan data/sql untuk menyambung ke pangkalan data. Simpan mesej WebSocket ke pangkalan data: Gunakan pernyataan INSERT untuk memasukkan mesej ke dalam pangkalan data. Dapatkan semula mesej WebSocket daripada pangkalan data: Gunakan pernyataan SELECT untuk mendapatkan semula mesej daripada pangkalan data.
