精华内容
下载资源
问答
  • 动态网页制作技术四则小技巧每一个网页制作的初学者,都想让自己的网页更漂亮,看起来更专业。要想制作出声形兼俱的动态网页,您需要了解动态网页制作技术,它是建立在动态HTML语言(即DHTL语言)之上的一种新技术,它...

    动态网页制作技术四则小技巧 每一个网页制作的初学者,都想让自己的网页更漂亮,看起来更专业。要想制作出声形兼俱的动态网页,您需要了解动态网页制作技术,它是建立在动态HTML语言(即DHTL语言)之上的一种新技术,它包括CSS文字效果,层技术,框架结构,push技术,JavaScript、Java和ASP等。(听不懂,太专业了!),听不懂没关系,您只要清楚,要使用Dreamwave3.0以上制作网页,因为Dreamwave3.0内置以上大部分技术,您所要做的仅仅是插入层,拖动,复制,粘贴。也就是把动态网页脚本插入到原来网页的HTML中。

    下面的动态网页制作技术可能是您需要的:

    推(push)技术,让您网页上的新闻自动更新;Java小应用程序(Java applet),如让您网页中的图像模拟水滴落在预制图像文件上,水面上激起层层涟漪,给人一促宁静致远的感受;Java Script脚本,让您的网页每次进入都播放不同的音乐,如你第一次进入该网页播放《泰坦尼克号主题曲》,第二次进入则播放《999朵玫瑰》,第三次进入……;ASP中的ADO的技术,让用户在浏览器画面中输入、更新和删除网站服务器的数据库信息。

    以上是目前国际上非常流行的技术,使用起来也不困难,不用编程,只需从网上下载相应的脚本(即程序),将其添到您的网页上即可,任何稍微懂得一点网页制作的初学者都可以做到,怎么样?心动了吧,且听我慢慢道来。

    一、使用Java动态小应用程序

    利用Java可以在您的网页上加入各式各样的动态效果,它可是制作动态网页的好工具,代表了新一代的Web技术。

    Java于1995年问世,是一种由美国Sun公司开发的新一代编程语言,其目标是在网络环境中开发软件。由于Java是一种编程语言,要想掌握它,需要有一定的计算机程序设计基础。然而对于网上的Java小应用程序(Java Applet),即网页中小巧可爱的Java程序。你无须学会Java就可以使用,只要稍作改动就可放在网页上使用。因此,怎么将现成的Java小应用程序嵌入自己的网页中,如何改动参数,让小应用程序变成你自己的东西可是个关键。

    也许,大家对什么是“Java小应用程序”有些摸不着头脑。事实上是伴随网页而来的Java程序有一个特别的名字,叫Applet,可以把它想像成是一个个小巧可爱的程序,这就是“Java小应用程序”名称的由来。

    捷径:要将Java小应用程序嵌入网页

    1.将Java applet脚本复制到网页的html文件中

    首先复制Java源程序,进入Dreamwave3中,在网页的某个位置插入新图层,并确定层在html中的位置。即按菜单插入/图层,点按菜单窗口/html源文件,出现html源文件窗口,定位新加的层在html文件中的位置,如:将鼠标放到新图层中打几个字母mmm,则html源文件也应该出现mmm,鼠标定位到html源文件中的mmm后,将html源文件中的mmm删除。

    按粘贴,将Java程序粘贴在html源文件中光标所在位置。

    2.注意还要将java程序所需的*.class文件,*.gif背景文件复制到网页文件*.htm所在的同一目录下。按<F12>键预览。

    3.参数修改

     

    下面是一个Java applet的源文件:比较重要的两行width="128" height="128"表示动画的宽和高,value="imfad1.gif"表示背景文件名。 <applet archive="AnWater.jar" code="AnWater.class" width="128" height="128"> 动画的宽和高

     

    <param name="image" value="imfad1.gif"> ; 载入图像

    Java动画的背景图片是一些JPG或GIF的静态图片,动态效果是Java程序加在背景图片上产生的,如水波效果。假如要将Java动画的背景图片改成另一图片,则可将另一图片复制到*.htm所在的同一目录下,在html源文件中修改背景文件名,修改宽和高的值即可。新图片宽和高的值若不知道是多少,可在ACDSee的中打开该新图片,在其底下的状态行有图片的宽和高的信息。

     

    假如你想让新图片的大小与原Java applet图片的大小一致,可以用Photoshop对新图片进行放大或缩小。

    4.注意事项

    要将java程序所需的*.class文件,*.gif背景文件复制到网页文件*.htm所在的同一目录下。

    网页教学网

    Java applet的效果十分华丽,但将大降低浏览器的刷新速度,因此不可太贪多。一个页面有一两个Java Applet即可。

    注意*.class文件的大小写。笔者就遇到这样的情况:有时提供的AnWater.class写成了ANWATER.CLASS,这时Java Applet在本机上能运行,上传至服务器中,该有Java效果的位置只显示一块灰板,开始以为上传过程中出错,造成文件缺损,但用CuteFTP上传了几次还是这样,用鼠标点击灰色方块,状态行提示找不到AnWater.class,当时一看就明白了:服务器肯定是Unix的,它对大小写非常敏感,它认为ANWATER.CLASS与AnWater.class不是同一文件,所以才找不到,将ANWATER.CLASS文件名改成AnWater.class并上传后,问题解决。

    Java动态小应用程序集锦:

    下载推荐网站:http://www.anfyteam.com的Anfy 1.4.5中文版-包括 41 个特殊效果的applet。 网页教学网

    您只要到一些提供这些应用程序的网站下载些小程序,很方便的就可以使自己的网页,桌面墙纸或屏幕保护上添加魔术般的效果,有菜单树、焰火、水面、湖面、横幅/幻灯片放映、Anfy网络摄影机、文字卷动等效果。为读者提供展示创造性的无限空间。下面是部分程序效果介绍。

    1.Water

    此applet可以在任意GIF或JPG图像上模拟水的波动。此applet是完全参数化的,因此您可以产生许多水的波动效果。

    除了要背景图像,还需上传如下3个“.class"文件:AnWater.class,Lware.class,anfy. class另外,上传AnWater.jar可以在最新的浏览器中加快载入速度。

     

    html文件:anwater.html

    参数说明文件:anwater.txt

     

    2.Book Flip

    可以在多幅同样大小的GIF或JPG图像间实现“书本翻页"的动态变换效果。非常漂亮!

    必需的文件:除了书本反转图像和一个随意的遮盖图像,还需上传如下3个“.class"文件:bookflip.class,Lware.class,anfy.class

    另外,上传bookflip.jar可以在最新的浏览器中加快载入速度。

    3.Lake

     

    网上流传甚广的湖中倒影特技,效果非常动人,占用内存比其他几个类似的程序更少,读者可以任意设定风速,风力和波浪强度等参数

     

    必需的文件:除了要一个背景图像,还需上传如下3个“.class"文件:AnLake.class,Lware.class,anfy class。另外,上传AnLake.jar可以在最新的浏览器中加快载入速度。

    二、使用JavaScript动态程序 网页教学网

    JavaScript是解释型语言,其源代码文件直接在运行时解释执行,适用于较小任务的程序,比Java简单。

     

    JavaScript的出现在很大程度上就归功于Java,虽然两者的功能以及编程风格大不相同,但JavaScript的语法和基本结构与Java是相似的。JavaScript最初是作为浏览器Netscape本身临其境的脚本编写语言以LiveScript为名,但在1995年末,Sun公司认可了该语言,且更名为JavaScript。虽然JavaScript比Java简单,但仍然需要具备计算机编程知识以及面向对象的技术知识。因此,在这里只介绍如何将现成的JavaScript脚本嵌入HTML文件的方法。

    捷径:要将Java小应用程序嵌入网页

    将Java applet脚本复制到网页的html文件中即可。方法同Java应用小程序。

    脚本下载推荐网站:http://java2000.wol.com.cn

    此网站是中文网站,有大量的JavaScript源文件,分类非常详细:有按钮和连接控制,浏览器窗口控制,客户端表单控制,多媒体音乐控制,背景效果处理,日期与时间脚本,Frame帧控制,图形图象处理,菜单与页面导航,站内搜索引擎,Password脚本,树型折叠菜单,页面文字特效。

    此网站还有一个最大的优点:大部分脚本都可以在网上预览,看了预览后,你就会知道此脚本是否是你需要的,是否值得下载。

    JavaScript动态程序集粹:

    与Java小应用程序相比,JavaScript有很多的优点,如简单适用,短小,运行速度快等等,这里推荐三个动态的JavaScript程序给读者。再次提醒,以下脚本不用编写,从http://java2000.wol.com.cn下载即可。

    1. 随机的MIDI播放控制台脚本--酷!随机播放《泰坦尼克主题曲》,《999朵玫瑰》等背景Midi音乐-刷新页面能听到不同的音乐,源程序:

     

    <script LANGUAGE="JavaScript"> song = new Array(5); //与Midi乐曲数量对应=乐曲数量-1 title = new Array(5); //与Midi乐曲数量对应=乐曲数量-1 song[0] ='xfile.mid' song[1] ='007.mid' song[2] ='0072.mid' song[3] ='999dmg.mid' song[4] ='yongxinliangku.mid' song[5] ='titanic.mid' //泰坦尼克主题曲的MID文件名 title[0] = 'X-档案主题曲' //Midi曲目 title[1] = '007主题曲1' title[2] = '007主题曲2' title[3] = '999朵玫瑰' title[4] = '用心良苦' title[5] = '泰坦尼克主题曲泰坦尼克主题曲等的MID文件' </script> 

    注意事项:

     

    泰坦尼克主题曲等的MID文件都要复制到网页文件*.htm的同一目录下。

    泰坦尼克主题曲等的MID文件在哪可找到呢?在网站预览听到这些歌曲后,其实在你的硬盘中的Temporary Internet Files目录已有泰坦尼克主题曲等的MID文件,只不过文件名有了一点小变化,如成了titanic[1].mid,按开始/查找/文件或文件夹,tit*.mid,即可找到,双击听一下看是不是,是则将文件名改为titanic.mid,并复制到网页*.htm的同一目录下。

    2.自动弹出式窗口

    一进入某个页面,立该会弹出一个窗口,用这个脚本就可以实现,而且窗口大小可以定制,里面的内容可以是你想说明的任何内容。作为欢迎窗口效果非常cool。

    三、推(push)技术

    让您的网页上的新闻自动更新。

    使用方法同JavaScript,将动态脚本插入HTML中即可。

    脚本下载推荐网站:http://www.howshine.com/

    四、ASP中的ADO的技术

    ASP是Active Server Pages的英文缩写,中文意思叫——动态服务器主页,ASP是微软公司1999年11月推出的Web应用程序开发技术。

     

    ADO(ActiveX Data Objects) 是一个ASP内置的ActiveX组件,用于数据库访问,可把它与ASP结合起来,建立提供数据库信息的网页内容,对数据库进行查询、插入、更新、删除等操作,可用来制作电子商务网站。 网页教学网

    捷径:用Dreamweaver UltraDev制作基于NT服务器的带有数据库查询功能的网页,因为ADO的技术已内置于Dreamweaver UltraDev之中。

    使用ADO技术要安装NT的IIS(Internet Information Server)因特网信息服务器,或者win98的PSW(Personal Web Server)个人主页服务器来提供Internet服务,(如WWW服务,FTP服务等),并且,在Dreamweaver UltraDev中,尽管大部分脚本可自动生成,但操作的步骤较多,因此这里不再详述,感兴趣的读者可查看相关的介绍Dreamweaver UltraDev书籍。

    后记

     

    假如大家对动态网页的印象还仅仅是停留在纸面上,想得到一些感性认识的话,请下载http://www.anfyteam.com的Anfy 1.4.5中文版-包括41个特殊效果的applet。

     

    安装an145chs.exe,里面包含有40种Java小应用程序和脚本。注意,每种程序几乎都有几种不同的变化,点按Version即可看到。

     

    为了让自己的主页尽快动起来,快去下载吧!

    展开全文
  • 动态网页制作实验

    千次阅读 2020-05-07 11:53:50
    文章目录动态网页制作实验一、 实验目的二、实验环境三、 实验内容动态网页实验(一)动态网页实验(二)四、原理实验步骤五、关键问题及解决方法六、实验结果七、实验体会附录:源代码(仅仅附上核心代码)1.1网页...

    动态网页制作实验

    一、 实验目的

    1. 熟悉 VS 2010 开发环境,学会使用 VS 构建网站基本结构
    2. 熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置
    3. 掌握表单处理方法
    4. 掌握服务器内置对象:Request、Response、Session等内置对象的使用
    5. 掌握ASP.NET日期时间类
    6. 掌握在 MSSQL 2008 创建数据库、数据表,并能使用 SQL 语句进行表操作熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置(SELECT、INSERT、UPDATE、DELETE)
    7. 掌握 ADO.NET 提供的连接式数据访问方式,了解非连接式数据访问方式

    二、实验环境

    Windows OS/VS 2010(C#)、SQL SERVER 2008

    三、 实验内容

    动态网页实验(一)

    1、 通过 VS2010创建空ASP.NET网站。添加2个WEB窗体:login.aspx,myhome.aspx

    2、 添加新项Visual C# Web窗体:login.aspx。
    1) 设置窗体Title为:登录页
    2) 在login.aspx中,使用工具箱->标准:添加3个Labl、2个TextBox、2个Button控件
    3) 设置控件属性

    a) ID:Label1、Label2、Label3、txtUserName、txtPwd、btnLogin、btnReset
    b) 设置Label标签的Text属性分别为:用户名、密码、请输入用户名
    c) 设置Button按钮的Text属性分别为:登录、重写
    在这里插入图片描述

    图1.1 login窗体效果图

    上图即login页面的效果图:添加了 3 个 Label、2 个 TextBox、2 个Button 控件,分别为用户名、密码、提示输入的文字,和两个Button按钮控件,分别用来是现登录重定向到下面的myhome窗体功能和将输入的信息清除的功能。

    2.4设置Button控件Click时间响应函数
    BtnLogin的Click事件:
    获取TextBox控件txtUserName、txtPwd的输入值(可通过对象的属性或者Request.form集合获取相应的变量与变量值)
    检查txtUserName、txtPwd的值是否为合法用户,如:用户名为“张三”,密码为“1234”,如果是的话,则创建Session变量保存当前的登录用户名与密码,再重定向至myhome.aspx;否则的话,将Label3的Text属性设置为:请输入正确的用户名与密码!
    在这里插入图片描述

    图1.2 用户名和密码正确重定位到myhome窗体

    在这里插入图片描述

    图1.3 检查用户名或者密码不正确返回提示

    上两个图是利用当前的登录用户名与密码进行判断,若正确,重定向至 myhome.aspx;否则的话,将 Label3 的 Text 属性设置为:请输入正确的用户名与密码!
    BtnReset的Click事件:将TextBox控件txtUserName、txtPwd清空。
    添加新项Visual C# Web窗体:myhome.aspx。
    1、 设置窗体Title为:我的空间
    2、 在myhome.aspx中,使用工具箱->标准:添加3个Label,1个Button。
    3、设置控件属性:
    ID:Label1、Label2、Label3,btnLogout
    设置 3 个 Label 标签的 Text 属性分别为:欢迎您来到您的空间!
    设置 Button 的 Text 属性为:退出。
    在这里插入图片描述

    图1.4 密码的属性设置为不回显

    4、在myhome.aspx.cs的Page_Load响应函数中:
    通过 Session 变量,验证当前用户是否已登录,如未登录则重定向至login.aspx。
    设置 Label2.Text 值为:当前用户名和密码,即 Session 中保存的用户名和密码
    设置 Label3.Text 值为:输出当前系统时间。

    在这里插入图片描述

    图1.5 显示用户名、密码和时间

    5、设置btnLogout的Click响应函数
    退出当前 Session;
    重定向到 login.aspx 窗体。

    动态网页实验(二)

    使用实验二.pdf 文档,通过 VS2010 创建简单的用户名/密码验证页面。(此处不赘
    述)。

    2、SQL Server2008 库/表。
    1)启动 SQL Server2008 的 SQL Server Management Stuido,附加 NetSchool 数据库
    (NetSchool_Data.MDF/NetSchool_Log.LDF),查看其中的 STUDENT/STUDENT_CLAS 表。
    请通过查询,尝试相关 SQL 语句(Select、Insert、Update、Delete)并掌握。

    在这里插入图片描述

    图2.1 SQL语句的使用

    2)创建数据库连接字符串,通过在 VS2010 中的服务器资源管理器中,添加数据库连接,
    得到该数据库连接的 ConnectionString。【其中 SQL Server 身份认证为:sa/123456】
    在这里插入图片描述

    图2.2 SQL数据库链接

    由于是在自己的计算机上做的,所以参数有些不同。

    SqlConnection conn;
            conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True");
    string str1 = @"SELECT * FROM [NetSchool].[dbo].[STUDENT] where USERID='" + strU + @"' and PASSWORD ='" + strP + "'";
            cmd = new SqlCommand(str1, conn);
    

    3)请根据第七章的 ADO.NET 中的面向连接访问方式,在 login.aspx 的 btnLogin 的 Click
    事件中修改代码,使得原先的静态用户名/密码验证为,数据库 Netschool 中 Student 表
    中已有的用户才能够登录。

    3.1 静态用户名/密码验证代码(此次实验需要重新修改):

    3.2 动态验证。支持当前 STUDENT 表中的所有用户能够登录当前系统。
    图 2 连接式访问数据库程序框架

    3.2.1 添加数据库托管程序支持:using System.Data.SqlClient;

    3.2.2 根据图2 所示步骤,重写撰写 protected void btnLogin_Click(object
    sender, EventArgs e) { }响应函数。

    3.2.3 其中判定是否有该登录用户名/密码,可利用 DataReader 对象的 READ 方法
    或者 HasRows 属性,作为判断依据。

    4.在 myhome.aspx 页面中添加 ListBox 控件、Button 控件。

    4.1 修改 Button 控件:ID 为:btnSeachMyclass。Text 属性:查询

    4.2 修改 ListBox 控件:ID 为:ListBMyClass。在 Page_Load 中,通过程序对其初
    始化,添加一个 Item 项目“我所选修的课程”。

    4.3 在对应的 btnSeachMyclass_Click(){ }函数中进行 Code,是的点击该按钮
    后,将当前登录用户的所有选修课程的 ClassID 以 Item 的方式显示在 ListBox 控件中。
    注意:login.aspx 中用户名输入,请输入 STUDENT 表中的 USERID 值。
    在这里插入图片描述

    图2.3 myhome页框展示

    在这里插入图片描述

    图2.4 所选修的课程显示

    四、原理实验步骤

    原理:
    1、通过服务器控件获取用户输入后,合法用户则创建相应的Session变量,并进行合适的网页重定向。同时熟悉DateTime类。
    2、通过服务器控件获取用户输入后,合法用户则创建相应的 Session 变量,并进行合适的网页重定向,并在 myHome.aspx 网页中显示相应的个人相关记录。其中:合法用户的判断规则:未使用数据库/表时,启用静态用户名/口令验证原则: 未使用数据库/表时,启用静态用户名/口令验证原则:否则,通过查询 MySite 数据库中 Users 表中是否有该用户/密码,为准。

    实验步骤:见实验内容。

    五、关键问题及解决方法

    1、对于用户名和密码的显示需要跨页面传递数据,解决办法是利用Session进行跨页面的数据传递进行记录,

    Session["S_uname"] = txtUserName.Text;
                Session["S_upwd"] = txtPwd.Text;
    Label2.Text = "当前用户为:" + Session["S_uname"].ToString() + "密码为:" + Session["S_upwd"].ToString();
    Label3.Text = "当前时间为:" + System.DateTime.Now.ToString();
    

    2、控件的操作很繁琐
    解决办法是为每个空间配置相应的属性如ID和动作如Clicked等都很繁琐,还好VS的集成性很好,可以利用拆分的双视图进行编辑。
    3、数据库的操作很繁琐
    解决办法是可以在视图界面进行配置,包括控件的各种属性也是如此。在操作数据库的过程中,出现了很多的问题,由于对SQL SERVE数据库不熟悉,所以在处理解决问题上很费力,但还是没有很好的方法解决,通过查阅资料,向同学了解之后才能勉强做。

    六、实验结果

    最终我按照要求,利用VS,编写出了一个简单的动态网页,包括两个2 个 WEB 窗体:login.aspx,myhome.aspx。利用各种控件,实现了登录页面的验证与重定向,对于信息的记录显示与时间的展示以及退出函数的实现。还使用数据库进行了用户合法性的判断,还读取数据库中的数据到ListBox中显示给用户查询,效果如前面各个图片。

    七、实验体会

    通过本次实验,使得我对于网络程序设计有了更深的认识,也印证了我们在课堂上学习的内容,熟悉 了HTML 服务器控件,特别是 FORM 表单服务器控件的设置。印证了我们在课堂上学习的关于数据库的内容,熟悉了对于数据库的连接和对其中数据库数据的操作,熟悉了ListBox控件,通过对数据库数据来动态验证用户的合法性,更具有实用性。本次实验还使我对于VS的使用也有了很大的进步。
    通过这次实验,我懂得了理论与实际相结合是很重要的,只有理论是远远不够的,只有把所学的理论知识与实践相结合起来,从理论知识与实践相结合,从理论中得出结论,才是真正的知识,才能提高自己的事迹动手能力和独立思考的能力。

    附录:源代码(仅仅附上核心代码)

    1.1网页login.aspx.cs或其他

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            string strU = txtUserName.Text;
            string strP = txtPwd.Text;
    
    
            SqlConnection conn;//定义一个连接对象
            SqlCommand cmd;//定义一个命令对象
            SqlDataReader rd;//定义一个读取数据对象
    
            conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True");
            conn.Open();
            string str1 = @"SELECT *
      FROM [NetSchool].[dbo].[STUDENT]
      where
      USERID='" + strU + @"'
      and
     PASSWORD ='" + strP + "'";//此为SQL操作字符串
    
    
            cmd = new SqlCommand(str1, conn);
            rd = cmd.ExecuteReader();//执行查询操作
    
            if (rd.HasRows)
            {
                Session["S_uname"] = txtUserName.Text;
                Session["S_upwd"] = txtPwd.Text;
                rd.Close();
                conn.Close();
               Response.Redirect("myhome.aspx");
            }
            else
            {
                Label3.Text = "请输入正确用户名和密码";
            }
        }
    
        protected void btnReset_Click(object sender, EventArgs e)
        {
            txtUserName.Text = null;
            txtPwd.Text = null;
        }
    }
    

    2.1网页myhome.aspx.cs或其他

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    
    public partial class myhome : System.Web.UI.Page
    {
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["S_uname"] == null)//防止直接进入myhome窗体
            {
                Response.Redirect("login.aspx");
            }
            Label2.Text = "当前用户为:" + Session["S_uname"].ToString() + "密码为:" + Session["S_upwd"].ToString();
            Label3.Text = "当前时间为:" + System.DateTime.Now.ToString();
    
            ListBMyClass.Items.Clear();
            ListBMyClass.Items.Add("我所需选修的课程");//在下拉列表中新增一项
        }
        protected void btnSeachMyclass_Click(object sender, EventArgs e)
        {
            SqlConnection conn;
            SqlCommand cmd;
            SqlDataReader rd;
    
            conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True");
            conn.Open();
            string str1 = @"SELECT *
                        FROM STUDENT_CLASS
                        where
                        USERID='" + Session["s_name"].ToString() + "'";
            cmd = new SqlCommand(str1, conn);
            rd = cmd.ExecuteReader();
            while (rd.Read())//常见的使用方法:循环调用SqlDataReader对象的read方法来遍历所有行
            {
                 ListBMyClass.Items.Add(rd["CLASSID"].ToString());
               // ListBMyClass.Items.Add(new ListItem(rd["CLASSID"].ToString(), rd["CLASSID"].ToString()));
            }
            rd.Close();
            conn.Close();
    
        }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
    
        }
    
        protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
    
        }
    
        protected void btnLogout_Click(object sender, EventArgs e)
        {
            Response.Redirect("myhome.aspx");
        }
    }
    

    2.3 数据库生成SQL语句[包括建库、建表语句;记录不需要]

    Login.窗体中:

    SqlConnection conn;//定义一个连接对象
            SqlCommand cmd;//定义一个命令对象
            SqlDataReader rd;//定义一个读取数据对象
    
            conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True");
            conn.Open();
            string str1 = @"SELECT *
      FROM [NetSchool].[dbo].[STUDENT]
      where
      USERID='" + strU + @"'
      and
     PASSWORD ='" + strP + "'";//此为SQL操作字符串
    
    
            cmd = new SqlCommand(str1, conn);
            rd = cmd.ExecuteReader();//执行查询操作
    
    myhome窗体中:
    SqlConnection conn;
            SqlCommand cmd;
            SqlDataReader rd;
    
            conn = new SqlConnection("Data Source=(local);Initial Catalog=NetSchool;Integrated Security=True");
            conn.Open();
            string str1 = @"SELECT *
                        FROM STUDENT_CLASS
                        where
                        USERID='" + Session["s_name"].ToString() + "'";
            cmd = new SqlCommand(str1, conn);
            rd = cmd.ExecuteReader();
    
    展开全文
  • 3此页面询问是否使用服务器技术选中是我想使用服务器技术单选钮然后在哪种服务器技术下拉列表中选择服务器使用的动态网页技术单击下一步进入下一页面 4在此页面中会询问如何使用文件的问题可以选中在本地进行编辑和...
  • 在暑假的这几天时间里,制作了一个简单的博客网站下面我将这几天的操作流程来说一下,在原文末会贴上代码,也会给出下载链接。(闲复制代码麻烦的可以到下载地址这里直接下载点击打开链接) 刚刚更新源码到github...

       在暑假的这几天时间里,制作了一个简单的博客网站。下面我将这几天的操作流程来说一下,在原文末会贴上代码,也会给出下载链接。(闲复制代码麻烦的可以到下载地址这里直接下载 点击打开链接) 刚刚更新源码到github上点击打开链接

     

    一、开发环境的搭建

       1)apache+php+mysql环境搭建

       因为要用apache来做服务器,mysql作为数据库来存储数据,php来写代码以此实现网页与数据库的交互数据,所以需要下载上述软件,但上述软件的安装环境、配置很麻烦,所以在这里用了一个功能强大的建站集成软件包---XAMPP,具体的安装方法可见链接(点击打开链接)。

            

     

       当然,也有可能启动Apache时候出现错误,这里给出链接(点击打开链接),如果apache启动有错误可以参考上面这个链接来解决问题。

       2)数据库客户端软件navigat

       直接在cmd命令控制台操作数据库并不方便,不够直白,当然也可以直接用phpmyadmin来操作(上述xampp软件包安装之后在游览器输入127.0.0.1/phpmyadmin即可打开),但是phpmyadmin来操作也不方便,这里便采用Oracle公司出品的数据库客户端Navicat,这里还是给出链接(点击打开链接),按照要求下载即可,

           点击连接,输入连接名,(这里我直接取了IP地址的名字127.0.0.1),主机名和端口号都不用变,这里的用户名和密码。如果是你用的是xampp,那么用户名是root,密码为空;如果不是用的是xampp安装的,按照你设置的用户名和密码登录即可。填写完毕之后点击连接测试,没有问题直接确定即可连接好数据库。

                                

        此外你要是想掌握数据库,简单来讲你想对数据库的任何操作,都必须操作sql语句,总的来说分为四个操作:增删改查。

                      

        ①增:向数据库写入数据

        语句:insert into users (`username`,`password`) values ('name','passwd')

        (ps新手一定要注意这离users这个数据表后面的``这个符号是在tab键上方的引号,而values后面的就是个单引号)

        ②删:删除已有数据

        语句:delete from users WHERE id='3'

        ③改:修改数据

        语句:update set users username='新值', password='新值' WHERE id=3

        ④查:从数据库读取数据

        语句:select * from users where id>1 order by id desc limit 0,2

        如果你想进一步深入的了解mysql语句的话,看一下这里的连接,(点击打开链接)连接给出了这四个操作的具体参数的详解,要想用数据库一定要掌握这四个操作。

     

       (3)html网页的编写工具sublime text

       Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime text具有漂亮的用户界面和强大的功能,非常适合写代码的程序猿。在这里还是给出sublime text的安装方法以及注册码及常用插件的安装步骤,按照连接下载即可。(点击打开链接

             

     

       用sublime text来写网页代码,可以掌握这样一个小技巧,先新建一个文件,格式保存为html网页格式,然后在sublime text中打开,输入html:4s 然后按下tab键即可生成大体框架。当然这个快捷键要想使用是要按照我上述给的链接,按照步骤安装好Emmet这个插件,才能使用。

      4)网站域名的配置

       一般来讲,你在游览器打开127.0.0.1这个网址,会转到apache默认目录下的一个网址,这里我对其进行修改,修改为我做项目的目录,E:\PHP\xampp\apache\conf,打开httpd.conf文件,将里面的路径修改为你存储网站的目录,在这里我的修改为

        DocumentRoot "E:/php/xampp/workplace"
        <Directory "E:/PHP/xampp/workplace">

       这里要注意按照自己的下载按照路径来修改为自己的目录,其次我还对这个127.0.0.1这个网址再次做了修改,使其虚拟域名为blog.com,具体的配置及修改还是见链接(点击打开链接),修改完之后重启之后,在游览器输入blog.com,便会出现下述场景:

           

     

       在这里我发现我修改的DNS配置,不知道何时再前面加了一条注释,导致没法打开,大家也要注意按照我给的连接配置好之后,如果打不开再看一下配置文件有无错误。

    总之,配置环境和工具基本上也搭建成功了,接下来我就开始讲解这个blog的项目。

       二、博客网站的书写

       1.总体框架

       首先在这里我先介绍一下我的总体框架,讲解一下,让大家先熟悉一下。

                 

     

      blog是项目的名字,admin文件夹里面存储的是后台登录文件  core文件夹里面存储核心文件,theme文件夹存储网页的样式文件  upfiles文件夹是存储从本地上传到服务器的图片信息,之后config.php文件是整个博客网站的配置文件,header.inc.php是加载了一个页面样式信息,index.php文件是网站的首页,read.php文件是网站首页文章的具体链接。

     

       数据库表中的设计在这里我给出,方便大家参考学习,这里我主要建立了三个表,admin这个表示用来存储后台管理员注册和登录的数据,即账户和密码:

     

     

        page这个表主要是用来存储博客信息,在这里也给图片,方便安装图来建表:

     

     

     

     

       最后给出setting这个表,主要是用来存储博客的系统设置:

                

     

      2.网站后台admin的书写

     1)登录界面(login.php)

     

     

     

       关于这个页面我会在这里给出源码,登录页面其实也就是个从数据库读取的过程,这个登录页面的设计我主要是采用了bootstrap来设计的,不明白的可以百度一下bootstrap,可以参考我的链接来看一下(点击打开链接

     

     

     

       在这里面它包含了各式的样式、组件和JavaScript插件,可以说很好用。

            

     

       在这里我的使用方法是将bootstrap下载下来,然后将文件加压,复制到theme这个文件夹下面,调用方法见下面的源码,在源码中我都给出了详细的解释。

       源码:

      

    <?php
    /*
    后台管理员登录窗口
     */ 
        
        /*启动session服务,记录账号登录的cookies*/
    	session_start();
    	
    	/*包含一个配置文件*/
    	include('../config.php');
    	
    
    	 if($input->get('do')=='check'){
    	 	/*获取页面提交的用户名和密码数据*/
    	 	$ausername=$input->post('ausername');
    	 	$apassword=$input->post('apassword');
    
    	 	/*查询页面提交的数据是否在数据库提供的数据存在的sql语句*/
    	 	 $sql="select * from admin where ausername='{$ausername}' and apassword='{$apassword}' ";
    	 	 /*数据库查询语句返回结果*/
    	 	 $mysqli_result=$db->query($sql);
    	 	 /*以数组形式存储数据库查询语句的返回结果*/
    	 	 $row=$mysqli_result->fetch_array( MYSQLI_ASSOC);
    	 	 /*如果row确实返回了结果,则将结果的aid存储在session里,并转向home.php文件*/
    	 	 if(is_array($row)){
    	 	 	$_SESSION['aid']=$row['aid'];
    	 	 	header("location:home.php");
    	 	 }else{
    	 	 	echo("账户或密码错误");
    	 	 }
    	 }
    ?>
    
    <!--后台管理员登录界面></!-->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    	<title>管理员登录界面</title>
    	<!--加载包含bootstrap里css和javascript里的文件></!-->
    	<?php include(PATH . '/header.inc.php');?>
    	
    
    </head>
    <body>
    	<!--最外面的container容器></!-->
    	<div class="container">
    		<!--bootstrap使用时建议使用一个row表格类,包含12个列></!-->
    		<div class="row" style="margin-top:200px;">
    			<!--距左边3个列></!-->
    			<div class="col-md-3"></div>
    			<!--中间部分占据6列></!-->
    			<div class="col-md-6" ">
    			 
    			    <div class="panel panel-primary">
    			    	<!--登录头部分></!-->
    			  		<div class="panel-heading">管理员登录</div>
    			  		<!--登录的身体部分></!-->
    			  		<div class="panel-body">
    			    		
    			    		<form  class="form-horizontal" action="login.php?do=check" method="post">
    							<!--登录的用户名那一行></!-->
    							<div class="form-group">
    						    	<label for="inputEmail3" class="col-sm-2 control-label">用户名</label>
    						    <div class="col-sm-10">
    						      	<input type="text" class="form-control" name="ausername" id="ausername" placeholder="请输入用户名" datatype="*3-10" errormsg="请输入长度 范围在3-10之间的昵称">
    						    </div>
    						    </div>
    							
    							<!--登录的密码那一行></!-->
    						    <div class="form-group">
    						    	<label for="inputEmail3" class="col-sm-2 control-label">密码</label>
    						    <div class="col-sm-10">
    						      	<input type="password" class="form-control" name="apassword" id="apassword" placeholder="请输入密码">
    						    </div>
    						    </div>
    							
    							<!--登录、注册那一行></!-->
    						    <div class="form-group">
    						    <div class="col-sm-3"></div>
    						    <!--登录></!-->
    						    <div class="col-sm-4">
    						      	<input type="submit" value="登录" class='btn btn-primary'>
    						    </div>
    						    <!--注册></!-->
    							<div class="col-sm-4">
    								<a href="register.php"><input type="button" value="注册" class="btn btn-primary"> </a>
    							</div>
    							</div>
    			    		</form>
    
    						
    
    					</div>
    					 <!--登录的尾部分></!-->
    			  		 <div class="panel-footer text-right">版权所有,盗版必究</div>
    			    </div>
    			
    			</div>
    			<!--距离右边三列></!-->
    			<div class="col-md-3"></div>
    		</div>
    	</div>
    	<!--窗口背景的script加载></!-->
    	<script type="text/javascript">
    		window.onload = function() {
    			var config = {
    				vx : 4,
    				vy : 4,
    				height : 2,
    				width : 2,
    				count : 100,
    				color : "121, 162, 185",
    				stroke : "100, 200, 180",
    				dist : 6000,
    				e_dist : 20000,
    				max_conn : 10
    			}
    			CanvasParticle(config);
    		}
    	</script>
    	<script type="text/javascript" src="../theme/js/canvas-particle.js"></script>
    	</script>
    </body>
    </html>

     

       (2)注册界面(register.php)

       注册界面其实也就是个往数据库增加数据的过程。

      

     

       还是给出源码,源码中我给出了详解。

      

    <?php
    	/*包含一个配置文件*/
    	include('../config.php');
    	
    	if($input->get('do')=='check'){
    		/*获取用户页面注册传来的用户名和密码数据*/
    		$ausername=$input->post('ausername');
    		$apassword=$input->post('apassword');
    		$aconfirmpassword=$input->post('aconfirmpassword');
    		/*注册时的处理*/
    		if($apassword!=$aconfirmpassword){
    			echo "前后两次输入的密码不一致";
    			exit;
    		}
    		/*将用户填入的数据插入到数据库的sql语句*/
    		$sql="INSERT INTO admin(`ausername`,`apassword`) values('$ausername','$apassword')";
    		/*提交sql语句到数据库处理*/
    		$is=$db->query($sql);
    		/*判断是否注册成功*/
    		if($is){
    			echo "注册成功";
    			header("Location:login.php");
    		}else{
    			echo "注册失败";
    		}
    	}
    
    
    ?>
    
    
    
    <!--后台管理员登录界面></!-->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    	<title>管理员注册界面</title>
    	<!--加载包含bootstrap里css和javascript里的文件></!-->
    	<?php include(PATH . '/header.inc.php');?>
    	
    </head>
    <body>
    	<!--最外面的container容器></!-->
    	<div class="container">
    		<!--bootstrap使用时建议使用一个row表格类,包含12个列></!-->
    		<div class="row" style="margin-top:200px;">
    			<!--距左边3个列></!-->
    			<div class="col-md-3"></div>
    			<!--中间部分占据6列></!-->
    			<div class="col-md-6" ">
    			 
    			    <div class="panel panel-primary">
    			    	<!--注册头部分></!-->
    			  		<div class="panel-heading">管理员注册</div>
    			  		<!--注册的身体部分></!-->
    			  		<div class="panel-body">
    			    		
    			    		<form  class="form-horizontal" action="register.php?do=check" method="post">
    							<!--注册的用户名那一行></!-->
    							<div class="form-group">
    						    	<label for="inputEmail3" class="col-sm-2 control-label">用户名</label>
    						    <div class="col-sm-10">
    						      	<input type="text" class="form-control" name="ausername" id="ausername" placeholder="请输入用户名">
    						    </div>
    						    </div>
    							
    							<!--注册的密码那一行></!-->
    						    <div class="form-group">
    						    	<label for="inputEmail3" class="col-sm-2 control-label">密码</label>
    						    <div class="col-sm-10">
    						      	<input type="password" class="form-control" name="apassword" id="apassword" placeholder="请输入密码">
    						    </div>
    						    </div>
    						    <!--注册的密码确定那一行></!-->
    						    <div class="form-group">
    						    	<label for="inputEmail3" class="col-sm-2 control-label">确认密码</label>
    						    <div class="col-sm-10">
    						      	<input type="password" class="form-control" name="aconfirmpassword" id="aconfirmpassword" placeholder="请再次输入密码">
    						    </div>
    						    </div>
    							
    							<!--提交注册那一行></!-->
    						    <div class="form-group">
    						    <div class="col-sm-4"></div>
    						    <div class="col-sm-6">
    						      	<input type="submit" value="注册" class='btn btn-primary btn-lg btn-block'>
    						    </div>
    						    </div>
    			    		</form>
    
    						
    
    					</div>
    					 <!--登录的尾部分></!-->
    			  		 <div class="panel-footer text-right">版权所有,盗版必究</div>
    			    </div>
    			
    			</div>
    			<!--距离右边三列></!-->
    			<div class="col-md-3"></div>
    		</div>
    	</div>
    	<!--窗口背景的script加载></!-->
    	<script type="text/javascript">
    		window.onload = function() {
    			var config = {
    				vx : 4,
    				vy : 4,
    				height : 2,
    				width : 2,
    				count : 100,
    				color : "121, 162, 185",
    				stroke : "100, 200, 180",
    				dist : 6000,
    				e_dist : 20000,
    				max_conn : 10
    			}
    			CanvasParticle(config);
    		}
    	</script>
    	<script type="text/javascript" src="../theme/js/canvas-particle.js"></script>
    	</script>
    </body>
    </html>

     

       3)后台管理页面(home.php)

     

     

     在源码中将上述网站的标题那部分单独给拿出来做了一个文件(nav.inc.php),这里也是给出源码,供大家学习参考。

     

     

     home.php源码

     

    <?php
    /*
    后台管理员登录之后php控制端
     */ 	
    	include ('check.php');
    ?>
    
    <!--后台管理员登录之后的界面<>/!-->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 
    	<title>管理员登录</title>
    	<?php include(PATH . '/header.inc.php');?>  <!--所有的页面都需加载这个文件></!-->
    </head>
    <body>
    	<?php include('nav.inc.php');?>  <!--管理员登录页面的标题部分></!-->
    </body>
    </html>

     nav.inc.php

     

     

    <!--后台管理界面的上方标题></!-->
    <nav class="navbar navbar-default" role="navigation">
    	  <div class="container-fluid">
    	    <!-- Brand and toggle get grouped for better mobile display -->
    	    <div class="navbar-header">
    	      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
    	        <span class="sr-only">Toggle navigation</span>
    	        <span class="icon-bar"></span>
    	        <span class="icon-bar"></span>
    	        <span class="icon-bar"></span>
    	      </button>
    	      <a class="navbar-brand" href="home.php">ADMIN</a>
    	    </div>
    
    	    <!-- Collect the nav links, forms, and other content for toggling -->
    	    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
    	      <ul class="nav navbar-nav">
    	        <li ><a href="blog.php">博客管理 <span class="sr-only">(current)</span></a></li>
    	        <li><a href="auser.php">管理员管理</a></li>
    	         <li><a href="setting.php">系统管理</a></li>
    	      </ul>
    	     
    	      <ul class="nav navbar-nav navbar-right">
    	       
    	        <li class="dropdown">
    	          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <?php echo $session_user['ausername'];?> <span class="caret"></span></a>  <!--输出此时登录的账户名></!-->
    	          <ul class="dropdown-menu">
    	            <li><a href="logout.php">退出</a></li>
    	           
    	          </ul>
    	        </li>
    	      </ul>
    	    </div><!-- /.navbar-collapse -->
    	  </div><!-- /.container-fluid -->
    	</nav>				

     

     

     

      4)博客管理界面(blog.php)

      这里有三个功能,修改、删除、添加博客界面,下面我将单独列出添加博客这个界面

     

     

     

      (5)添加博客界面(blog_add.php)

     

     

     

       为什么要单独列出添加博客这个界面呢?因为在添加博客这个界面中加载了一个编辑器,一个强大的在线编辑器simditor,这里还是给出下载及使用连接,大家可以作为参考,学习一下(点击打开链接)在这里这个编辑器如果需要图片上传功能的话,需要在文件中设置,这个文件设置为(blog_uopload.php)

       blog_add.php源码

     

    <?php
    	/*后台除去管理员登录界面,均需加载这个文件,来验证该页面管理员是否登录*/ 
    	include ('check.php');
    	/*取出传来的pid从而判断是添加还是修改操作*/
    	$pid=$input->get('pid');
    	/*初始化page,为了区别添加还是修改操作*/
    	$page=array(
    			'title'   => '',
    			'author'  => '',
    			'content' => '',
    		);
    	/*如果pid大于0,可以得出并不是添加操作,而是修改操作*/
    	 if($pid>0){
    	 	$sql="select * from page where pid ='{$pid}' ";
    	 	$res=$db->query($sql);
    	 	$page=$res->fetch_array(MYSQLI_ASSOC);
    	 }
    
    
    
    	 /*对于添加操作操作而言,账户或密码不能为空*/
    	if($input->get('do')=='add'){
    		$title=$input->post('title');
    		$author=$input->post('author');
    		$content=$input->post('content');
    		if(empty($title)||empty($author)||empty($content)){
    			echo("数据不能为空");
    		}
    		/*如果aid大于1,则得出更新操作,否则执行添加操作*/
    		if($pid>0){
    			$uptime=time();
    			$sqlTpl="UPDATE page set title='%s',author='%s',content='%s',uptime='%d' where pid='%d' ";
    			$sql=sprintf($sqlTpl,$title,$author,$content,$uptime,$pid);
    		}
    		else{
    			$intime=time();
    			$sqlTpl="INSERT INTO page(`title`,`author`,`content`,`intime`,`uptime`) values('%s','%s','%s','%d','%d')";
    			$sql=sprintf($sqlTpl,$title,$author,$content,$intime,0);
    			
    		}			
    		/*判断是否有结果*/
    		$is=$db->query($sql);
    		if($is){
    			header("location:blog.php");
    		}else{
    			echo "执行失败";
    		}
    	}
    ?>
    
    <!--管理员添加博客或修改博客的界面<>/!-->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html lang="en">
    <head>
    	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    	<title>添加博客</title>
    	<?php include(PATH . '/header.inc.php');?>
    
    	<!--加载simiditor编辑器的文件></!-->
    	<link rel="stylesheet" type="text/css" href="../theme/simditor/styles/simditor.css" />
    	<script type="text/javascript" src="../theme/simditor/scripts/module.js"></script>
    	<script type="text/javascript" src="../theme/simditor/scripts/hotkeys.js"></script>
    	<script type="text/javascript" src="../theme/simditor/scripts/uploader.js"></script>
    	<script type="text/javascript" src="../theme/simditor/scripts/simditor.js"></script>
    
    </head>
    <body>
    	<?php include('nav.inc.php');?>
    	<div class="container">
    	<h2> 博客管理 <small class="pull-right"><a class='btn btn-default' href="blog.php">返回</a></small></h2>
    	<hr/>
    		<div class="rows">
    			<form class="form-horizontal" role="form" action="blog_add.php?do=add&pid=<?php echo $pid;?>" method="post">
    			  <div class="form-group">
    			    <label for="inputEmail3" class="col-sm-2 control-label">标题</label>
    			    <div class="col-sm-6">
    			      <input type="text" class="form-control" name="title" placeholder="请输入标题" value='<?php echo $page['title'];?>'>
    			    </div>
    			  </div>
    			  <div class="form-group">
    			    <label for="inputPassword3" class="col-sm-2 control-label">作者</label>
    			    <div class="col-sm-4">
    			      <input type="text" class="form-control" name="author" placeholder="请输入作者" value='<?php echo $page['author'];?>' >
    			    </div>
    			  </div>
    
    			  <div class="form-group">
    			    <label for="inputPassword3" class="col-sm-2 control-label">正文</label>
    			    <div class="col-sm-8">
    			     	<textarea id="content" name="content" class="form-control"><?php echo $page['content'];?></textarea>
    			     	<!--在script中初始化编辑器,在这里注意script里加载的textarea的ID要与上方textarea的id号一致></!-->
    					<script>
    						var editor = new Simditor({
    						  textarea: $('#content'),
    						  upload:{
    						  	url:'blog_upload.php',
    						  	fileKey:'file1'
    						  }
    						  //optional options
    						});
    					</script>			     	
    			    </div>
    			  </div>
    			  
    			  <div class="form-group">
    			    <div class="col-sm-offset-2 col-sm-6">
    			      <button type="submit" class="btn btn-default">提交</button>
    			    </div>
    			  </div>
    			</form>
    			
    		</div>
    	</div>
    </body>
    </html>

     
      

     

      blog_upload.php源码

     

    <?php
    	/*后台除去管理员登录界面,均需加载这个文件,来验证该页面管理员是否登录*/ 
    	include('check.php');
    	/*将文件上传到服务器的目录里*/
    	$key='file1';
    	$dir='../upfiles/';
    	if(isset($_FILES[$key])){
    		$file=$_FILES[$key];
    		if($file['error']==0){
    			/*文件所处服务器的目录*/
    			$pathName=$dir . $file['name'];
    			/*文件所在服务器的网址*/
    			$urlName='http://blog.com/blog/upfiles' . $file['name'];
    			$is=move_uploaded_file($file['tmp_name'], $pathName);
    			/*判断是否移动成功*/
    			if(!$is){
    				die("上传失败");
    			}
    			/*编辑器来判断是否成功上传图片*/
    			$json=array(
    				'success' => true,
    				'msg'     => '',
    				'file_path'=>$urlName
    				);
    			echo json_encode($json);
    		}
    	}
    ?>

     

     

     

      6)管理员管理界面(auser.php)

      这里还是有三个功能,修改、删除和添加,这里我就不单独一一列出来了,具体可参考文末给出的源码

     

      7)系统管理界面

      系统管理可以在这里设置标题、介绍和博客每页的显示数量

     
     

     

     

     

     

      3.主界面(index.php)

      这里是游客访问的主界面,这里给出源码大家作为参考,

     

      阅读界面(read.php)

      当你想阅读该文章时,可点击标题进入阅读页,进行阅读,同样给出源码,作为参考

     

     

     

     

     

    展开全文
  • 使用mailto函数能使网络蜘蛛很难获取你的email地址,但是能在网页上正常显示,因为他把email地址进行了加密处理。address是必须的,定义email地址。text是显示在页面上的文本内容,默认是email地址。encode是加密...



    if,elseif,else
    if语句和和条件同php差不多,但每个词之间必须用空格分割开。也有一些新的条件语句,列举如下:eq相等,ne、neq不相等,gt大于,lt小于,gte、ge大于等于, lte、le 小于等于,not非,mod求模。is [not] div by是否能被某数整除,is [not] even是否为偶数,$a is [not] even by $b即($a / $b) % 2 == 0,is [not] odd是否为奇,$a is not odd by $b即($a / $b) % 2 != 0

    php
    php标记可以让模板中能直接使用php语言。

    section,sectionelse
    section 用来循环显示数组的数据,name和loop是必须的参数。name表示嵌套名. section 可以嵌套使用,但是名字必须各不相同。loop表示循环的次数. sectionelse在loop参数为空的输出。start用来规定循环开始的指针,如果值为负则从数组尾部计算开始的指针,默认为0.step表示循环的步数,为负则反向循环,默认为1.max设定循环的最大步数.show决定是否显示section.
    section也有自己的变量处理section属性,用{$smarty.section.sectionname.varname} 来显示.

    index
    index用来显示当前循环的指针,从0开始.

    index_prev
    用来显示前一次循环的指针,从-1开始

    index_next
    用来显示后一次循环的指针.

    iteration
    显示当前循环的次数,从1开始.

    first
    如果当前循环为第一个循环,则值为true.

    last
    如果当前循环为最后一个循环,则值为true.

    rownum
    同iteration.

    loop
    显示最后一次循环的指针,可以用在section中间的任何地方,也可以用在section之后.

    show
    show 决定是否显示section.

    total
    显示总共循环的次数,可以用在section中间的任何地方,也可以用在section之后.

    strip
    去掉多余的空格
    常规函数
    assign
    assign用来在执行模板时分配变量值.var,value是必须的参数.var为要分配值的变量名,value为分配的值.

    counter
    counter 用来输出一个计数. 可以用多个计数,但是名字必须各不相同.name表示计数器名,默认为default.start表示计数的初始值,默认为1.skip计数的间隔,默认为1.direction表示计数方向,up或down,默认为up.print表示是否打印该值,默认为true.assign定义模板变量,计数器的输出将被分配到assign定义的变量中.

    cycle
    Cycle用来循环显示一组数值.name表示cycle名,values("值1","值2",...)表示循环显示的一组数值.print表示是否显示.advance决定是否显示下一个数值. delimiter决定value的分隔符,默认为逗号. assign定义模板变量,cycle的输出将被分配到assign定义的变量中.

    debug
    debug可以显示所有分配了值的变量,但是不显示模板内容,output属性决定显示的格式html或javascrīpt,默认是html.

    eval
    eval用来在变量里插入变量。var是插入的变量名,assign把输出分配给一个变量。

    fetch
    用来取得文件内容,并输出文件内容,可以取得本地文件,http文件和ftp文件,file是取得文件的路径, assign把输出分配给一个变量。

    html_checkboxes
    html_checkbox 用来用给定的数据创建checkbox。name表示checkbox的名称,values表示checkbox的值,output表示checkbox 的显示,selected表示被选选项的值,options表示一组checkbox的值和显示,separator表示分割每个checkbox的符号,labels表示给输出添加标签,默认为true。

    html_image
    html_image用来为一个图片创建html标签,如果height和width不分配值将会自动生成。file是图片的路径,height,width,alt同html标签,basedir是图片相对路径开始的目录的路径,默认为服务器根目录。href定义图片的链接。

    html_options
    输出下拉列表,参数有name,values,output,selected,options。

    html_radios
    输出单选框,参数同复选框。

    html_select_date
    prefix 定义各个下拉列表名字的前缀,默认为Date_。time决定使用的时间,默认是当前时间。start_year决定下拉列表开始的年份,可以用年份表示,也可以用与当前年份的相对年数来表示。默认是当前年份。end_year决定下拉列表结束的年份,可以用年份表示,也可以用与当前年份的相对年数来表示。默认是当前年份。display_days决定是否显示日期。display_months决定是否显示月份。display_years决定是否显示年份。month_format决定显示月份的格式,默认为%B。day_format决定显示日期的格式,默认为%02d。 day_value_format决定日期值的格式,默认为%d。month_value_format决定月份值的格式,默认为%m。 year_as_text决定是否将年份按文本格式输出。reverse_years决定是否反向输出各年份。field_array用来取得一组变量,可以用name[Day],name[Month],name[Year]的方式从form取得获得的值。day_size,month_size, year_size添加大小标签。all_extra,day_extra,month_extra,year_extra添加额外的属性到select 或input标签。field_order决定年月日下拉列表的顺序,默认为MDY。field_separator不同下拉列表之间的分隔符,默认是/ n。year_empty,month_empty,day_empty是在各下拉列表第一栏显示的内容。

    html_select_time
    prefix 定义各个下拉列表名字的前缀,默认为Time_。time决定使用的时间,默认是当前时间。display_hours决定是否显示小时。 display_minutes决定是否显示分钟。display_seconds决定是否显示秒数。display_meridian 决定是否显示上午或下午,即显示am/pm。use_24_hours 决定是否24小时制。minute_interval 决定分钟之间的间隔。second_interval 决定秒数之间的间隔。field_array用来取得一组变量,可以用name[Hour],name[Minute],name[Second]的方式从form取得获得的值。all_extra,hour_extra,minute_extra,second_extra ,meridian_extra添加额外的属性到select或input标签。

    html_table
    loop 定义用于循环的一组数据。cols决定列的数目,rows决定行的数目,如果其中一个为空,另一个有值,则根据元素个数和有值的属性来计算另一个的值,两者的默认值为3。inner决定元素的列举方向cols则列跟着列排列,rows则行跟着行排列,默认为cols。table_attr, tr_attr,td_attr分别为table,tr,td增加标签,如果tr_attr,td_attr是数组,将会循环增加标签。trailpad 用来填充最后一行没有值的单元格,默认是 。hdir决定每行元素的排列方向,从左到右right或从右到左left,默认为right。vdir决定每列的排列方向,从上到下down或从下到上up,默认为down。

    math
    进行数字运算操作。equation和var是必须的。equation定义运算式,可以使用的运算符有+, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans and tan。var给运算变量赋值。format确定结果的格式。assign将输出赋给一个参数。

    mailto
    使用mailto函数能使网络蜘蛛很难获取你的email地址,但是能在网页上正常显示,因为他把email地址进行了加密处理。address是必须的,定义email地址。text是显示在页面上的文本内容,默认是email地址。encode是加密email地址的方式,可以是none,hex或 javascrīpt,默认是none。如果要把邮件发给其他的邮箱,可以用cc抄送,email地址之间用,分割。bcc则为密件抄送。subject 是邮件主题。newsgroups是发表内容的新闻组,新闻组之间用,隔开。extra添加附加标签。followupto意思不知。

    textformat
    textformat 用来格式化文本,他会去掉空格和特殊字符,和规定行宽和缩进。style规定当前的格式,indent规定缩进的位数。indent_first规定第一行的缩进。indent_char用来缩进的字符,默认是一个空格。wrap规定行宽,即一行的字符数,默认是80。wrap_char规定每行的分隔符,默认是/n。wrap_cut决定是否分割单词。assign将输出分配给变量。
    常量
    SMARTY_DIR
    是到smarty类目录的完全路径,必须以/结束。如果没有定义,将会自动决定路径.

    SMARTY_CORE_DIR
    是到smarty类core文件目录的完全路径,必须以/结束。如果没有定义,将会自动定义为smarty_dir路径下面的子目录.


    变量

    $template_dir
    默认的模板目录名,默认为"./templates".
    $compile_dir
    默认的编译模板目录名,默认为"./templates_c"
    $config_dir
    默认的config文件目录名,默认为"./configs".
    $plugins_dir
    默认的插件目录名,默认为"plugins".
    $debugging
    debugging控制台。即一个显示变量的窗口.
    $debug_tpl
    debug窗口的模板
    $debugging_ctrl
    另一种控制debugging的方法。
    $autoload_filters
    对所有的模板使用过滤程序,这个变量是一个数组,其中关键字是过滤的类型,值是过滤的名字。
    $compile_check
    每次php执行将是否查看模板的内容是否改变。

    $caching
    决定是否缓存文件执行生成的文件。
    $cache_dir
    默认的模板缓存目录名,默认为"./cache".
    $cache_lifetime
    缓存的模板的过期时间,以秒计算. $caching值为-1则缓存的模板永不过期.

    最后我放个我用的例子.大家仅做一个参考吧

    <?php
    error_reporting(7);
    $TurnDot  =  substr(PHP_OS, 0, 3) == 'WIN'  ?  ";"  :  ":"  ;
    $doc_root=$_SERVER['DOCUMENT_ROOT'];   //默认获取根路径
    //$doc_root="E:/Myweb/an-cool.com/Web" ; //这里是指定路径
    $lib_root=".".$TurnDot.$doc_root."/shopadmin".$TurnDot.$doc_root."/shopadmin/inc".$TurnDot.$doc_root."/".$TurnDot.$doc_root."/jpgraph/src/".$TurnDot.$doc_root."/Smarty/libs/".$TurnDot.$doc_root."/Smarty";
    ini_set("include_path",$lib_root);
    include("conf.global.php");  //这里是装载一个全局配置文件.
    $Templates_root = $doc_root."/templates";  //定义摸版根目录
    define("Templates",$Templates_root);
    $templates  = isset($INFO['templates'])  ?  $INFO['templates']  :  'default'  ;
    include_once('Smarty.class.php');
    $tpl = new Smarty();                                                                   //建立smarty实例对象$tpl
    $tpl->debugging = false;
    $tpl->template_dir   = Templates."/".$templates  ;                             //设置模板目录
    展开全文
  • 通常企业需要网站制作设计时候,在找网站建设公司做网站过程中经常会被问到建设网站是做动态网站还是静态的好。企业建站常常问到这些也是属于正常现象,因为好多人根本不了解什么是静态与动态?    所以,下面由...
  • HTML网页制作的强大8条技巧互联网 发布时间:2008-10-17 18:47:22 作者:佚名 我要评论虽然现在有许多网页制作工具能让您轻松地完成工作,但如果使用HTML则可以得到更大控制权,下面介绍几个小技巧。1。使用,,语句...
  • 虽然现在有许多网页制作工具能让您轻松地完成工作,但如果使用HTML则可以得到更大控制权,下面介绍几个小技巧。 1。使用,, 语句来控制文字排版比用好得多。 如: 实用网络 <i>曾伟滨</i&g
  • 简单 PHP + MySQL 数据库动态网站制作

    千次阅读 多人点赞 2016-05-16 15:31:10
    在这篇文章中,我尽量用最浅显易懂的语言来说明使用 PHP, MySQL 制作一个动态网站的基本技术。阅读本文需要简单的 HTML 基础知识和(任一编程语言的)编程基础知识(例如变量、值、循环、语句块的概念等)。 PHP ...
  • 18秋学期《网页制作》在线作业3-0001试卷总分:100 得分:0一、 单选题 (共 20 道试题,共 100 分)1.以下有关样式表项的定义中,正确的是:A.H1{font-family:楷体_gb2312, text-aligh:center}B."H1{font-family=楷体_gb...
  • 众所周知道,IE向来是我们在制作网页时最难搞定的对手。但又迫于其用户群数量之多,我们不得不想法设法搞定它。下面,将介绍的将是利用其特点而被发现/创造出来的CSS技巧。让你轻松搞定这个难对付的家伙。
  • 今天小编在网站制作网页设计为大家梳理这几种大布局方式。 布局一、大框套小框。这种布局是很多网站都常使用一种布局方式,在一个大的栏目里然后在布局几个小的相关栏目,这种布局方式大小有限,让...
  • 动态二维码制作

    千次阅读 2020-04-09 18:23:00
    最近小编浏览某技术网站,居然看到了一个动图二维码,很新奇。于是乎,搜了搜二维码在线渲染网站,也想找到生成这种二维码的工具,但是最终没如愿。 然后就换了个搜索方式,直接搜如何生成动态二维码,搜索搜,一大...
  • 主要给大家分享了一些在网页制作的时候,可以拿起就用的小技巧,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友可以参考借鉴,下面跟着小编来一起学习学习吧。
  • 网页制作

    千次阅读 2016-05-10 14:04:43
    根据市场的需求,当然我们就要去学习相对应的技术了,这段时间我将开始学习网页制作的相关内容,这篇博客,主要是介绍一下接下来几篇博客的大致内容和具体方向。 关于这个网页制作课程我是从易云网上听来的,但是这...
  • 动态网页技术

    2016-01-03 17:10:15
    动态网页技术的鼻祖是cgi(common gateway interface, 即公用网管接口技术),但是它编程困难,效率低,修改复杂,现在已升级到了per动态网页技术的发展:  基于进程编程的动态网页技术:CGI---&gt;perl:  ...
  • CSS网页制作技巧之控制网页背景

    千次阅读 2020-02-20 20:02:39
    我想大家常常为一些比较合适于自己的网页背景的图片而发愁吧,这个我想也是有的,因为这些图片不是太大就是太小,或者太乱,那么有没有办法让图片能合自己的主页的胃口呢?答案是肯定的。  想知道怎么来实现嘛,好...
  • 在暑假的这几天时间里,制作了一个简单的博客网站下面我将这几天的操作流程来说一下,在原文末会贴上代码,也会给出下载链接。(闲复制代码麻烦的可以到下载地址这里直接下载 点击打开链接) 刚刚更新源码到...
  • 大家都知道连续的英文或数字能是容器被撑大,不能根据容器的大小自动换行,下面是 CSS如何将他们换行的方法!  对于div  1.(IE浏览器)white-space:normal; word-break:break-all;这里前者是遵循标准。 #wrap{...
  • 同学们喜闻乐见的大多是来自设计师个人的经验分享,由于是过来人,他的技巧可能就能解决你现在的问题,实用性很强,今天针对Gif动画方面,分享7个鲜为人知的技巧,全是私人藏品,在这方面有问题的同学来瞧瞧有木有你...
  • 主页制作动态技术

    2001-02-16 10:25:00
    主页制作动态技术 作者: 濮 青 来源: 起点工作室传统的主页以文字和简单图像所构成,比较平实单一。现在,随着W3C组织(www.w3c.org)定义的新的HTML 4.0规范的出现,多种动态主页技术层出不穷,如CSS、ASP、DAO、...
  • 三种动态网页技术的简要分析

    万次阅读 2016-11-25 22:12:37
    目前比较流行的动态网页技术有JSP、ASP、PHP等,下面分别简要介绍这些技术的特点。1 ASP技术ASP技术是基于.NET平台的一种动态网页技术。它有非常强大的后台处理能力,但却有一些安全性、稳定性、跨平台性的问题。它...
  • 网页制作技巧1

    千次阅读 2006-04-20 13:28:00
    1、 去掉IE的滚动条有时候做好的网页明明没有超出窗口,可IE却偏偏给加上滚动条,这样看上去很不舒服,其实这也是可以通过一些小技巧避免的。具体如下:”overflow-x:hidden”>… //去掉X轴方向的滚动条”overflow...
  • DIV+CSS这种叫法其实是一种很错误的叫法,这是国人一厢情愿的叫法,而...呵呵,没错,是xHTML+CSS,不理解吧,我来细细给你说,如果下面的你能理解,保证面试的时候会有很大的帮助,同时也可以让你后面的学习更轻松。
  • 网页制作技巧集锦

    千次阅读 2004-09-01 18:15:00
    ◇如何在网页中加入单个或几个空格?◆在源代码中输入 ,每个 之间请用空格分开。◆在Dreamweaver中用++插入空格或任输几个字符,然后将其色彩设成背景的色彩!◇如何在网页中加入书签,在页面内任意跳转?...
  • 职称计算机网权威发布历年职称计算机考试网页制作真题及答案,更多历年职称计算机考试网页制作真题及答案相关信息请访问职称计算机考试网。1. 下面的类资源在资源管理面板里有的是:A. 图像B. 颜色C. 链接D. Flash2....
  • 网页制作的小技巧

    2009-11-14 01:13:00
    几个网页制作的小技巧 让浏览器在保存页面时失败在页面源文件上增加下面一行代码,保存页面时,就会报错误:noscript>iframe src="*.html">iframe>noscript> 防止被人frame 或者 iframe 包含我们的页面: ...
  • 网页制作01

    2020-01-10 16:51:02
    1、静态网页动态网页主要根据网页制作的语言来区分: 静态网页使用语言:HTML(超文本标记语言) 动态网页使用语言:HTML+ASP 或 HTML+PHP 或 HTML+JSP 等。 2、 静态网页动态网页的区别 程序是否在服务器端...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,857
精华内容 29,542
关键字:

下面不是动态网页制作技术