僅用PHP4 Session實(shí)現(xiàn)的迷你購物籃(一)
Jun 21, 2016 am 09:14 AMsession
介紹
如果你還沒有用PHP 實(shí)現(xiàn)你自已的購物籃,在讀完這篇文章之后你應(yīng)該可以創(chuàng)建一個(gè)了。甚至你可能已
經(jīng)有了一個(gè)購物籃,我在這里所提供的一些技巧可能會(huì)幫助你改善你的系統(tǒng)。
我將給你一些提示,關(guān)于如何去做也許才能減少對(duì)購物籃表的無限的查詢,或減少無限的文本文件填充
你的文件系統(tǒng),因?yàn)閼?yīng)用程序只會(huì)做但不會(huì)刪除它們。
如果你對(duì)這類的題目是個(gè)新手,不要害怕。它實(shí)際上相當(dāng)簡單和有效,你只需要一個(gè)支持php4的主機(jī),
象notepad或vi之類的html編輯器,你寶貴的幾分種,和這個(gè)小例子。
想法
在1998年,我有一個(gè)在硬件商店工作的朋友要求我為他們編寫一個(gè)在線商店。需要快速和簡單,同時(shí)還
要有在線管理。當(dāng)我發(fā)著39度高燒的時(shí)候我變得想當(dāng)有創(chuàng)建力,所以我用perl寫了那個(gè)東西,使用minisql
作為后端。在整個(gè)處理中我插入了我所提到的迷你購物籃。
這個(gè)迷你購物籃與平常的購物車只有很小的不同,它會(huì)在每一頁顯示你的購物車的東西,不需要在放入
一件東西后在購物車來回跳轉(zhuǎn)。這就是我寫這篇文章的初衷。
目標(biāo)
人們喜歡控制,那么為什么不給他們些透明度,以便讓他們相信擁有了控制?這個(gè)迷你購物籃演示了一
個(gè)完美的方法:它提供給人們所必須的信息,并且節(jié)省了他們一次點(diǎn)擊,接近了在線商店的3擊范例。
所以,目標(biāo)就是在任何時(shí)候?qū)⑦@個(gè)迷你購物籃顯示為你的頁面上的一部分,在結(jié)尾處提供一個(gè)摘要用以
修改購物籃中的物品,接著在最后發(fā)送一個(gè)訂單。
要求
你應(yīng)該知道什么是session。如果不知道,這里有一個(gè)快速的綱要。已經(jīng)有很多文章關(guān)于這個(gè)話題,你
可以從中找到所有你需要的代碼例子。在你的開始頁面打開一個(gè)session,使用
session_start();
?>
這樣將創(chuàng)建一個(gè)session名字和一個(gè)session id。你現(xiàn)在既可以使用缺省的通過基于cookie的設(shè)置session
的方式,通過一個(gè)表單來傳遞session id,或把它作為一個(gè)變量附在你的鏈接上(get方法)的方法。不要忘
記在最后釋放session。:)
你的商品應(yīng)該有一個(gè)名字,價(jià)格和唯一標(biāo)識(shí),以便能用在這個(gè)例子中,如果不這樣,你可能需要做一點(diǎn)
修改。這里我使用mysql作為后端以便建立頁面及其它,為了讓購物能工作這不是必須的。:)
你應(yīng)該了解數(shù)組?,F(xiàn)在如果有人有時(shí)間利用我的代碼并且創(chuàng)建一個(gè)它的類,我理所當(dāng)然地要感激得到它。
定義
為了簡化這個(gè)例子,我使用了四個(gè)獨(dú)立的數(shù)組和一些額外的變量。代碼可以被優(yōu)化。這樣可以很容易地
顯示想法和閱讀代碼??梢允褂妙惛玫耐瓿?,但是我不能十分肯定是否能夠把對(duì)象保存到session 里。有
人想對(duì)此發(fā)表評(píng)論嗎?
我們還需要一個(gè)項(xiàng)目計(jì)數(shù)器。當(dāng)然可以使用count() 命令來實(shí)現(xiàn),我只不過認(rèn)為它足夠好,以便總能知
道有多少的項(xiàng)目,并且它也為循環(huán)提供了一個(gè)好的計(jì)數(shù)器。
工作
讓我們假設(shè)在你的HTML頁中有一個(gè)商品列表
ID Name Price
1 Mouse 25.00 add
2 Key 100.00 add
3 Car 5000.00 add
4 Game 25.00 add
向你的頁面增加鏈接
上面的'add'字段應(yīng)該是一個(gè)鏈接,用來將商品放到迷你購物籃中。使用$PHP_SELF將這個(gè)鏈接指向它自
已。然后向它增加商品信息。這里是商品1的例子。
add
商品的名稱能夠包含空格,所以將它放在鏈接的最后。Get方法好象對(duì)這個(gè)很挑剔。
準(zhǔn)備迷你購物籃
為了代碼重用,讓我們創(chuàng)建一個(gè)額外的文件minibasket.inc。我使用.inc擴(kuò)展名來標(biāo)識(shí)我的包括文件。
使用這個(gè)外部文件的原因是,盡管你將使用session變量來傳遞給購物籃,代碼仍然需要有效。這個(gè)文件將
包含顯示迷你購物籃的代碼,也包話增加項(xiàng)目的函數(shù)。實(shí)現(xiàn)它的最好的地方是將 命令放在你需要的地方。
minibasket.inc的邏輯
花些時(shí)間考慮一下這個(gè)。迷你購物籃應(yīng)該是個(gè)什么樣子,它需要些什么特性?這里顯示的迷你購物籃應(yīng)
該看上去象這樣:
# Name Price
1 Mouse 25.00
3 Game 75.00
Total 100.00
你可以很容易的通過使用一個(gè)外部樣式表格式化這個(gè)輸出??墒?,它不應(yīng)該太大。這個(gè)迷你購物籃是一
個(gè)信息,然而它不應(yīng)該成為你所顯示頁面的焦點(diǎn)。
這個(gè)文件的邏輯非常簡單。
檢查是否需要增加一個(gè)新的項(xiàng)目。
如果true,增加項(xiàng)目
在加入中,它要檢查復(fù)重的記錄,通過更新數(shù)量和價(jià)格來更新存在的記錄。
片段1。檢查將要增加的新的項(xiàng)目
這是一個(gè)正常的IF語句,用于檢查$basket變量的值。
if ($basket!=""){
//向籃子中加入項(xiàng)目
}
?>
片段2。在瀏覽器中顯示籃子
if ($ses_basket_items>0){
// 如果在籃子中有項(xiàng)目
for ($basket_counter=0;$basket_counter // 遍歷籃子,打印出每一行
// 你當(dāng)然可以用格表來格式化顯示
// 需要通過格式化來顯示價(jià)格的分值。如果沒有格式化,則.00是不會(huì)顯示出來的
$price=sprintf("%01.2f",$ses_basket_price[$basket_counter]);
$amount=$ses_basket_amount[$basket_counter];
$name=$ses_basket_name[$basket_counter];
echo "$amount $name $price";
echo "
\n";
}
} else {
// 在籃子中沒有商品
// 設(shè)置項(xiàng)目計(jì)數(shù)為0,且清除所有的變量
// 這是一個(gè)清除處理。它防止人們得到舊的數(shù)組
$ses_basket_items=0;
unset($ses_basket_name);
unset($ses_basket_amount);
unset($ses_basket_price);
unset($ses_basket_id);
}
?>
這段代碼不會(huì)產(chǎn)生任何結(jié)果。項(xiàng)目還沒有被填充,籃子總是空的,所以籃子不會(huì)被顯示。那么讓我們向
這個(gè)籃子中加些項(xiàng)目吧。

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Peminat Fujifilm baru-baru ini sangat teruja dengan prospek X-T50, kerana ia mempersembahkan pelancaran semula Fujifilm X-T30 II berorientasikan bajet yang telah menjadi agak popular dalam kategori sub-$1,000 APS-C. Malangnya, sebagai pelancaran Fujifilm X-T50

Masalah ditemui dalam masa tamat masa pengeluaran projek springboot Masalahnya diterangkan di bawah: Dalam persekitaran ujian, sesi keluar telah dikonfigurasikan dengan menukar aplikasi.yaml Selepas menetapkan masa yang berbeza untuk mengesahkan bahawa konfigurasi keluar sesi berkuat kuasa, masa tamat tempoh ditetapkan terus kepada 8 jam untuk dilepaskan. Walau bagaimanapun, saya menerima maklum balas daripada pelanggan pada waktu tengah hari bahawa masa tamat projek ditetapkan menjadi singkat Jika tiada operasi dilakukan selama setengah jam, sesi akan tamat tempoh dan memerlukan log masuk berulang. Selesaikan masalah pengendalian persekitaran pembangunan: projek springboot mempunyai Tomcat terbina dalam, jadi sesi keluar yang dikonfigurasikan dalam application.yaml dalam projek adalah berkesan. Persekitaran pengeluaran: Keluaran persekitaran pengeluaran ialah

Kegagalan sesi biasanya disebabkan oleh tamat tempoh seumur hidup sesi atau penutupan pelayan. Penyelesaian: 1. Memanjangkan hayat sesi; 2. Gunakan storan berterusan;

Masalah: Hari ini, kami menghadapi masalah tamat masa tetapan dalam projek kami dan perubahan pada application.properties SpringBoot2 tidak pernah berkuat kuasa. Penyelesaian: Pelayan.* sifat digunakan untuk mengawal bekas terbenam yang digunakan oleh SpringBoot. SpringBoot akan mencipta contoh bekas servlet menggunakan salah satu contoh ServletWebServerFactory. Kelas ini menggunakan sifat pelayan.* untuk mengkonfigurasi bekas servlet terkawal (tomcat, jeti, dsb.). Apabila aplikasi digunakan sebagai fail perang kepada contoh Tomcat, pelayan.* sifat tidak digunakan. Mereka tidak memohon,

Klipsch Flexus Core 300 ialah model teratas dalam siri ini dan diletakkan di atas Flexus Core 200 yang sedia ada dalam barisan bar bunyi syarikat. Menurut Klipsch, ini adalah bar bunyi pertama di dunia yang bunyinya boleh disesuaikan dengan th

Penyelesaian kepada masalah silang domain PHPSession Dalam pembangunan pemisahan front-end dan back-end, permintaan merentas domain telah menjadi kebiasaan. Apabila menangani isu merentas domain, kami biasanya melibatkan penggunaan dan pengurusan sesi. Walau bagaimanapun, disebabkan oleh sekatan dasar asal penyemak imbas, sesi tidak boleh dikongsi secara lalai merentas domain. Untuk menyelesaikan masalah ini, kita perlu menggunakan beberapa teknik dan kaedah untuk mencapai perkongsian sesi merentas domain. 1. Penggunaan kuki yang paling biasa untuk berkongsi sesi merentas domain

1. Melaksanakan log masuk SMS berdasarkan sesi 1.1 Carta alir log masuk SMS 1.2 Melaksanakan penghantaran kod pengesahan SMS Perihalan permintaan hujung hadapan: Penerangan kaedah permintaan POST laluan permintaan/pengguna/kod parameter permintaan telefon (nombor telefon) nilai pulangan Tiada antara muka belakang pelaksanaan: @Slf4j@ ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){/1

JavaScriptCookies Menggunakan kuki JavaScript ialah cara paling berkesan untuk mengingati dan menjejaki keutamaan, pembelian, komisen dan maklumat lain. Maklumat diperlukan untuk pengalaman pelawat yang lebih baik atau statistik tapak web. PHPCookieCookies ialah fail teks yang disimpan pada komputer pelanggan dan disimpan untuk tujuan penjejakan. PHP secara telus menyokong kuki HTTP. Bagaimanakah kuki JavaScript berfungsi? Pelayan anda menghantar beberapa data ke penyemak imbas pelawat anda dalam bentuk kuki. Pelayar boleh menerima kuki. Jika ada, ia akan disimpan pada pemacu keras pelawat sebagai rekod teks biasa. Sekarang, apabila pelawat mencapai halaman lain di tapak
