搜尋
首頁後端開發php教程第一次做网站,关于网站构造方面想请教下


长短不一的字符串(可能为空字符串)保存到数据库里面还是保存成文本文件?
我做的是一个在线购物的网站,每个用户都会有个购物车

购物车(cart)里面保存了他们放进去的物品和物品的配置,

这个购物车(cart)储存的数据结构就是一个array(我保存成了json格式)

但是由于有的用户有放东西有的没有放,所以每个用户的购物车数据长度都不一样

请问购物车的内容(Json数据)我要保存到数据库里还是保持成文件?

如果保存成数据库, 我是放在user.cart里面 还是放到cart.items里面?

1)如果放到cart.items里,系统会等到用户添加物品到Cart里面后,再添加数据到cart,并且把用户的user.cart_id赋值为cart.id

当用户吧cart.item清空,则user.cart_id=0,并且删除对应的cartrow

2)如果保存到user.cart里面,每个user都会分配个很长的cart用来做存储,不知道会不会浪费资源?(我不清楚数据库的保存格式..)

3)如果保存成文件,我会在每个用户注册成功后生成一个$userid.json,放到一个私有文件夹里面,只有服务器可以访问,里面的内容可能是空.


回复讨论(解决方案)

一般网站的购物车,是通过保存session或者cookie的。
因为这样性能稍微好一点。

一般网站的购物车,是通过保存session或者cookie的。
因为这样性能稍微好一点。

要求注册的用户需要能够访问上次登录时的购物车..

没有注册的用户是写到session里面的

1、将 session 从默认的文件方式改换成数据库方式
2、直接操纵 $_SESSION,无需 json
3、为满足“注册的用户需要能够访问上次登录时的购物车”可在 session 表中增加一个用户名(用户id)字段,并适当调整 session 回调函数

于是:
如果考虑用数据库保存未结账信息,则 session 表已经做了。不必再做
如果考虑用文件保存未结账信息,则因为访问量巨大,多层目录文件管理困难;单层太慢。非万不得已,不与采纳

1、将 session 从默认的文件方式改换成数据库方式
2、直接操纵 $_SESSION,无需 json
3、为满足“注册的用户需要能够访问上次登录时的购物车”可在 session 表中增加一个用户名(用户id)字段,并适当调整 session 回调函数

于是:
如果考虑用数据库保存未结账信息,则 session 表已经做了。不必再做
如果考虑用文件保存未……
感觉这样的方法很麻烦啊
如果用session的话,用户A登录网站并且保存了物品到session1
之后用户A换了浏览器,登录网站,新建了session2,但是session2里面没有session1里的内容
是不是需要在user表里面价格sessionid?每次登录需要重新设置sessionN到session1?
如果这样的话session是要设置成永远不过期的.
如果有人获得了用户的帐号密码,就知道了他的session,如果改密码是不是也需要重置session啊..这样就更麻烦了
因为注册用户的cart信息不能丢失所以session不能过期
但是匿名访客的session就需要在一定时间后清除,这个怎么做判断啊..



Json是想和ajax一起做动态购物车的..

做一个小型的网站一共就7到8个页面.

就是想了解下,遇到了这问题的常规解决方案是什么额

感觉session不适合保存注册用户的信息..

这样很不安全啊

不要为了程序而写程序,那是为了提高自身水平才做的事

做实际工作时,没有搞清业务流程就考虑技术流程是错误的
我只说说你想法中的几点错误
1.没搞清为什么要保留购物车数据,只是为了保留而保留
其实大部分人已经接受了重新登录/掉线购物车清空的事实,因为这点而投诉的客户几乎没有

2.“如果有人获得了用户的帐号密码……”,帐号密码远比购物车数据重要得多,本末倒置了
如果我丢失了账户密码,我不担心别人看到购物车里面放的是避孕套还是笔墨纸砚,而是担心别人看到我的送货地址和收货人资料

3.问题必须都在程序解决
应该在业务逻辑解决的事情,却由技术逻辑扛下来,是绝对的不会做生意(做事)的表现

购物车数据属于临时数据,完成一次购物(重新选择也算完成),数据就没用了??或者说转换为订单数据
现在最大的区别只是时间,就是这个“完成过程”所耗费的时间和多次浏览的问题,顺便问一下,购物车里面的数据放几个月还有用么?
有些时候在技术有限的情况不应把问题想得复杂化,能做才做,不能做就如实反馈给业务逻辑层解决


非要转牛角尖的话,我再给你出一个业务逻辑方面的难题:
我和我的家人(可能不少于3人)共用一个购物帐号密码, 同时在多点登录,购物并发货到不同地点或相同地点(订单不同),技术层面怎么解决?说明:拒绝二次登录属于业务层面逻辑而不是技术层面逻辑,我的意思是允许多点登录怎么做?

还是花点时间做好需求分析吧,和业务部门沟通最重要

不要为了程序而写程序,那是为了提高自身水平才做的事

做实际工作时,没有搞清业务流程就考虑技术流程是错误的
我只说说你想法中的几点错误
1.没搞清为什么要保留购物车数据,只是为了保留而保留
其实大部分人已经接受了重新登录/掉线购物车清空的事实,因为这点而投诉的客户几乎没有

2.“如果有人获得了用户的帐号密码……”,帐号密码远比购物车数据重要得多,本末倒置了……

再添加一个物品进购物车前,用户需要选择物品的配置,如果他中途花时间考虑,session过期
他就需要重新添加物品进购物车,这时候他发现购物车里的东西没了,他是否会去考虑去另外一家网店?

第二点你没理解清楚,我的意思是:
在需要将购物车(session)永久保存的情况下,如果某人在公共地方登录没有登出,其他人拿到session就可以永久登录了,即使改变了密码也没有用,有了用户的权限,获得的信息就多了去了。。

还有你给的问题太离谱了。。不是说技术层面能解决的就必须用技术解决啊
一个帐号就是为了给一个人提供服务,
要是给多人用的话,要帐号还有什么意义。。

1.给客户 保存购物车的选择,这时才使用数据库??很多网站都这样做了,是你没去了解学习同行的做法,客户没保存要重选就自己负责,保持连续浏览session/cookies是还在的,他挂十几个小时没操作cookies时效还在就行。我常用firefox,挑了商品换ie上网银,或者隔天再买,中间就用保存购物车的操作
2.客户不认真对待自己的隐私是他的问题,我最鄙视网购不撕掉订单随便就把包裹扔掉的人,网站给出必要的警示和用户协议就足够了。另外你似乎对cookies了解还不够,一般数据完全可以和登录信息分离,登录后重新拼接加载一般信息就行了
3.我给你的难题实际上目的不是要你用技术解决(其实也可以解决,自己有空时再想想),而是 提醒你有很多会实际发生的情况,你不能100%从技术层面解决,就算你解决了这个(帐号共用是常有的事,俺家就这样,老妈不懂注册,用我的帐号下单然后我去给钱的),还有更多难题我可以提给你;所以必须从业务层面去规范一些流程,让事情简单化。去跟业务部商量吧,平衡客户体验也不至于总被问题牵着走才是解决问题的方法

引用 7 楼 snmr_com 的回复:不要为了程序而写程序,那是为了提高自身水平才做的事

做实际工作时,没有搞清业务流程就考虑技术流程是错误的
我只说说你想法中的几点错误
1.没搞清为什么要保留购物车数据,只是为了保留而保留
其实大部分人已经接受了重新登录/掉线购物车清空的事实,因为这点而投诉的客户几乎没有

2.“如果有人获得了用户的帐号密码……”,帐……

让楼上几位一说的确是感觉我有点钻牛角尖。。
之前一直在写c程序,不喜欢浪费内存。。学校第一次让我们做这项目,php也刚学不到一星期。。

因为我不清楚数据库储存原理。

所以就是想请教下如果把购物车信息放到数据库,每个信息给一定的长度,每个用户都会有购物车信息(但是有的长有的短)
这样会不会浪费空间?

储存到文件里的话是肯定不会浪费空间的,但是用vchar来储存会不会浪费空间?

说了半天原来只是做作业 

数据库耗费那是另一个问题

存储空间不重要,又不是全部用SSD,但信息量/流量却重要

对BS系统来说,单个问题的耗费是小儿科,但BS考虑的就是成千上万个 并发连接耗费,所以最重要是做到 必要时才做更重要,就是客户不看商品的时候,只需加载商品名称让他知道是什么就够了,等他要看商品的具体信息才去读取数据库该商品的信息

数据库方面知识等其他大神指导,我的弱项

恩..工业项目课..老师随便找了几个客户,然后吧客户的项目给我们做..

但是做的还是一个真正的网站,做好之后要用的

还要包括documentation, 用户手册, 演讲等等等..

没有薪水..我们还要交钱..客户也要交钱..OTZ

好多大牛。

我也要做类似的网站。

mark了以后看。

还在学习《PHP和MySQL Web开发》这本书,看了一半了。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP的當前狀態:查看網絡開發趨勢PHP的當前狀態:查看網絡開發趨勢Apr 13, 2025 am 12:20 AM

PHP在現代Web開發中仍然重要,尤其在內容管理和電子商務平台。 1)PHP擁有豐富的生態系統和強大框架支持,如Laravel和Symfony。 2)性能優化可通過OPcache和Nginx實現。 3)PHP8.0引入JIT編譯器,提升性能。 4)雲原生應用通過Docker和Kubernetes部署,提高靈活性和可擴展性。

PHP與其他語言:比較PHP與其他語言:比較Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP與Python:核心功能PHP與Python:核心功能Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHP:網絡開發的關鍵語言PHP:網絡開發的關鍵語言Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP:許多網站的基礎PHP:許多網站的基礎Apr 13, 2025 am 12:07 AM

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

超越炒作:評估當今PHP的角色超越炒作:評估當今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

PHP中的弱參考是什麼?什麼時候有用?PHP中的弱參考是什麼?什麼時候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

解釋PHP中的__ Invoke Magic方法。解釋PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境