【PHP】Sublime下PHP网站开发指南
Sublime下PHP网站开发指南
作者:白宁超
2017年3月16日11:03:17
摘要:随着单位开发项目的需求,关于政务办公多年来一直使用php开发管理平台。笔者早年asp开发经验算是有些帮助,但是之前从未接触过php,如何快速上手还是费了一些时间的。好在php中wamp集成环境比较好,故而开发体验还是不错的。首先,本文选用sublime作为开发平台,这个根据读者喜好而定;选择其作为开发平台的主要原因是,之前一直用其开发python等,其跨语言性和跨系统均好。这里可以大大减少我们学新技术新语言新平台,而浪费很多时间在开发工具上,笔者是深有感受。其次,主要介绍sublime下php开发环境的配置。然后,使用登录的案例介绍php基本的增删改查。最后,完成一个列表分页的功能。本文实验经过测试均可以正常运行,适用于初学或者初级php开发人员。(本文原创,转载请注明出处:Sublime下PHP网站开发指南)
目录
1 开发平台相关配置
首先,进行sublime的php相关配置。主要是一些常用插件,诸如代码提示、自动补全、字体颜色等等吧,具体配置参照(Python开发工具:Anaconda+Sublime)一文。
其次,下载并安装WampServer集成环境。按win+R输入sysdm.cpl打开系统属性,配置环境变量C:\wamp\bin\php\php5.5.12。cmd命令窗体,输入命令php -h查看是否会提示php的命令使用方法。创建php编译系统,运行Sublime Text,选择Tool——>Build System——>New Build System,在新弹出的窗体中,把默认内容{ "shell_cmd": "make"}替换成{ "cmd": ["php", "$file"], "file_regex": "php$", "selector": "source.php" }。保存在默认的目录下即可,注意修改文件名为 php.sublime-build 。重启sublime text,就可以用Ctrl+B来编译.php文件了;
最后,测试下配置效果:
测试php安装是否成功,测试结果如下即可:
测试WampServer配置是否成功,测试结果,双击打开呈现绿色即可,其中WAMP的bin包括php,mysql,Apache配置。项目创建放在www文件夹下:
新建文件夹,命名text1.php,复制以下代码:
<?php
class Car{
var $name;
var $age;
function callname(){
$this->name="张三";
$this->age = ;
echo "我的名字叫:".$this->name."<br />"."我的年龄是:".$this->age;
}
function call($name,$age){
$this->name = $name;
$this->age = $age;
echo "我的名字叫[:".$name."<br />"."我的年龄是[:".$age;
}
}
$p1=new Car;
$p1->call('sddf','');
?>
在浏览器运行如下,其中红色代表本地运行地址,黑色框是创建项目的目录文件:
至此,已经完成各项配置工作。 备注:此过程中wamp配置可能出现“红色”“黄色”情况,均属于配置不成功,可以通过下载插件处理。
2 用户登录案例
1 下载一个网站开发的后台模板,并打开如下:
2 创建login.html和login.php用来登录操作。登录成功进入主页index.php,其中Node文件夹是对用户信息管理操作,详见下图:
login.html核心表单代码:
<form name="LoginForm" method="post" action="login.php" onSubmit="return InputCheck(this)">
<li><input name="username" type="text" class="loginuser" /></li>
<li><input name="password" type="text" class="loginpwd" /></li>
<li><input name="submit" type="submit" class="loginbtn" value="登录" /><label>
<input name="" type="checkbox" value="" checked="checked" />记住密码</label>
<label><a href="#">忘记密码?</a></label>
</li>
</form>
展示效果:
login.php接收post传值,并对其进行处理操作:
<?php
session_start(); //注销登录
if(@$_GET['action'] == "logout"){
unset($_SESSION['userid']);
unset($_SESSION['username']);
echo '注销登录成功!点击此处 <a href="./login.html">登录</a>';
exit;
}
//登录
if(!isset($_POST['submit'])){
exit('非法访问!');
}
$username = addslashes($_POST['username']);
$password = addslashes($_POST['password']); //包含数据库连接文件
include('./Public/conn.php');
//检测用户名及密码是否正确
$check_query = mysql_query("select uid from users where uname='$username' and upass='$password' limit 1");
if($result = mysql_fetch_array($check_query)){
//登录成功
$_SESSION['username'] = $username;
$_SESSION['userid'] = $result['uid'];
// echo "success";
header('Location: http://127.0.0.1/MyBlog/index.php'); /*echo $username,' 欢迎你!进入 <a href="./index.php">用户中心</a><br />';
echo '点击此处 <a href="./login.php?action=logout">注销</a> 登录!<br />';*/
exit;
}
else {
die('Could not connect: ' . mysql_error()."\n\t");
exit('登录失败!点击此处 <a href="javascript:history.back(-1);">返回</a> 重试');
}
mysql_close($con);
?>
运行结果,其中红色框为用户名的传值:
参数接收:
$userid = addslashes(@$_POST['roleid']);
如上页面效果index.html前端核心代码:
<form name="LoginForm" class="form-inline definewidth m20" action="index.php" method="post" onSubmit="return InputCheck(this)">
用户编号:
<input type="text" name="roleid" id="roleid" class="abc input-default" placeholder="" value="">
<button type="submit" class="btn btn-primary">查询</button>
<button type="button" class="btn btn-success" id="addnew">新增用户</button>
</form>
<table class="table table-bordered table-hover definewidth m10" >
<thead>
<tr>
<th>用户编号</th>
<th>用户名</th>
<th>用户密码</th>
<th>用户权限</th>
<th>管理操作</th>
</tr>
</thead>
<?php
foreach ($data as $key => $value) {
?>
<tr>
<td><?php echo $value['uid']?></td>
<td><?php echo $value['uname']?></td>
<td><?php echo $value['upass']?></td>
<td><?php echo $value['upower']?></td>
<td>
<a href="update.php?id=<?php echo $value['uid']?>">编辑</a>
<a onclick="return del(<?php echo $value['uid']?>)">删除</a>
</td>
</tr>
<?php
}
?></table>
<div class="page" name="page">
共<?php echo $arrtot[] ?> 条记录 <?php echo $pagenum?>/<?php echo $pagetot?> 页
<?php $isfhide=($pagenum==)?"style='display:none'":"";?>
<?php $islhide=($pagenum==$pagetot)?"style='display:none'":"";?>
<a <?php echo $isfhide?> href='index.php?page=1'>首页</a>
<a <?php echo $isfhide?> href='index.php?page=<?php echo $prevpage?>'>上一页</a>
<?php for($j=;$j<=$pagetot;$j++){
$style = ($pagenum==$j) ? "style='color:red'" : "";
$linkurl=($pagenum==$j) ? "javascript:;" : "index.php?page={$j}";
echo "<a href='{$linkurl}' {$style}>".$j."</a>";
}
?> <a <?php echo $islhide?> href='index.php?page=<?php echo $nextpage?>' >下一页</a>
<a <?php echo $islhide?> href='index.php?page=<?php echo $pagetot?>' >最后一页</a>
</div>
查询信息:
//查询列表
function selView($userid){
//连接数据库
include('../Public/conn.php');
if (!$conn){
die('Could not connect: ' . mysql_error());
}
if($userid==null|$userid==""){
$sql="select * from users";//设置查询指令
}else{
$sql="select * from users where uid=$userid";//设置查询指令
}
$result=mysql_query($sql);//执行查询
$data = [];
$i=;
while($row=mysql_fetch_assoc($result))//将result结果集中查询结果取出一条
{
$data[$i]["uid"] = $row["uid"];
$data[$i]["uname"] = $row["uname"];
$data[$i]["upass"] = $row["upass"];
$data[$i]["upower"] = $row["upower"];
$i++;
}
mysql_close($conn);
include('index.html');
}
增加信息:
<?php
//插入新的数据
$username=addslashes($_POST['username']);
$userpass=addslashes($_POST['userpass']);
$userpower=addslashes($_POST['status']);
if($userpower==){
$userpower="系统管理员";
}
else if($userpower==){
$userpower="普通管理员";
}
// echo $username."\n\t".$userpass."\n\t".$userpower."\n\t";
include('../Public/conn.php');
$sql="insert into users(uname,upass,upower) values('$username','$userpass','$userpower')";
$result=mysql_query($sql);
if($result){
header('Location: http://127.0.0.1/MyBlog/Node/index.php');
}
else{
echo "插入信息失败请重新插入!";
}
mysql_close($conn); ?>
修改信息:
<?php
//插入新的数据 if(empty($_POST)){
//点击提交后
$id = @$_GET['id'];
include('../Public/conn.php');
$sql="select * from users where uid=$id";
$selresult=mysql_query($sql);
$data = [];
while($row=mysql_fetch_assoc($selresult))//将result结果集中查询结果取出一条
{
$data["uid"] = $row["uid"];
$data["uname"] = $row["uname"];
$data["upass"] = $row["upass"];
if($row["upower"]=="系统管理员"){
$data["upower"] =;
}
else if($row["upower"]=="普通管理员"){
$data["upower"] =;
}
}
include('edit.html');
}else{
//回显
$username=addslashes($_POST['username']);
$userpass=addslashes($_POST['userpass']);
$userpower=addslashes($_POST['status']);
if($userpower==){
$userpower="系统管理员";
}
else if($userpower==){
$userpower="普通管理员";
}
// echo $username."\n\t".$userpass."\n\t".$userpower."\n\t"; if($id==null){
$sql="insert into users(uname,upass,upower) values('$username','$userpass','$userpower')";
}
else{
$sql="update users set uname='$username' , upass='$userpass', upower='$userpower' where uid=$id";
}
$result=mysql_query($sql);
if($result){
header('Location: http://127.0.0.1/MyBlog/Node/index.php');
}
else{
echo "更新信息失败请重新插入!";
}
mysql_close($conn);
}
?>
删除信息:
//删除信息
$id = @$_GET['id'];
if($id!=null){
delView($id);
} function delView($id){
include('../Public/conn.php');
if (!$conn){
die('Could not connect: ' . mysql_error());
}
$sql = "delete from users where uid=$id";
$result=mysql_query($sql);//执行查询
echo $result;
if($result){
header('Location: http://127.0.0.1/MyBlog/Node/index.php');
}else{
echo "查询失败,可能sql语句错误";
}
mysql_close($conn);
}
3 列表分页
分页前台操作:
<div class="page" name="page">
共<?php echo $arrtot[] ?> 条记录 <?php echo $pagenum?>/<?php echo $pagetot?> 页
<?php $isfhide=($pagenum==)?"style='display:none'":"";?>
<?php $islhide=($pagenum==$pagetot)?"style='display:none'":"";?>
<a <?php echo $isfhide?> href='index.php?page=1'>首页</a>
<a <?php echo $isfhide?> href='index.php?page=<?php echo $prevpage?>'>上一页</a>
<?php for($j=;$j<=$pagetot;$j++){
$style = ($pagenum==$j) ? "style='color:red'" : "";
$linkurl=($pagenum==$j) ? "javascript:;" : "index.php?page={$j}";
echo "<a href='{$linkurl}' {$style}>".$j."</a>";
}
?> <a <?php echo $islhide?> href='index.php?page=<?php echo $nextpage?>' >下一页</a>
<a <?php echo $islhide?> href='index.php?page=<?php echo $pagetot?>' >最后一页</a>
</div>
分页后台操作:
function fenye(){
include('../Public/conn.php');
if (!$conn){
die('Could not connect: ' . mysql_error());
}
//limit要求参数
$length=;
$pagenum=@$_GET['page']?$_GET['page']:; //当前页 //数据总行数
$sqltot="select count(*) from users";
$arrtot=mysql_fetch_row(mysql_query($sqltot));//总条数
$pagetot=ceil($arrtot[]/$length);//总页数 //限制页数
if($pagenum>=$pagetot){
$pagenum=$pagetot;
}
$offset=($pagenum-)*$length; //从数据库获取数据
$sql="select * from users order by uid limit {$offset},{$length}";
// echo $sql;
// exit();
$result=mysql_query($sql);
$i=;
while($row=mysql_fetch_assoc($result)){
$data[$i]["uid"] = $row["uid"];
$data[$i]["uname"] = $row["uname"];
$data[$i]["upass"] = $row["upass"];
$data[$i]["upower"] = $row["upower"];
$i++;
} //计算上一页和下一页
$prevpage=$pagenum-;
$nextpage=$pagenum+; //释放连接资源
mysql_close($conn);
include('index.html');
}
源码共享: http://pan.baidu.com/s/1kVlwW67
【PHP】Sublime下PHP网站开发指南的更多相关文章
- curl网站开发指南
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- [转帖]curl网站开发指南
curl网站开发指南 http://www.ruanyifeng.com/blog/2011/09/curl.html linux 里面有非常多很好的工具 比如这个 curl 之前 以为 wget 就 ...
- django MTV架构下的网站开发步骤
1.需求分析必不可少,一定要具体列出本次网站项目所要实现的目标,可能包括简单的页面草图与功能方块图等. 2.数据库设计. 3.了解网站的每一个页面,并设计网页模板(.html)文件 4.使用virtu ...
- Sublime Text 3下C/C++开发环境搭建
Sublime Text 3下C/C++开发环境搭建 之前在Linux Mint 17一周使用体验中简单介绍过Sublime Text. 1.Sublime Text 3安装 Ubuntu.Linux ...
- Windows下C,C++开发环境搭建指南
Windows下C,C++开发环境搭建指南 前情提要 基于近一段时间很多网友发邮件反馈,说一些项目编译出现问题,诸如此类的情况. 就觉得很有必要写一篇C,C++开发环境的小指南,统一回复. 1.君欲善 ...
- mac下Apache + MySql + PHP网站开发
最近接了个小活,做一个使用PHP语言和MySql数据库的动态网站.之前做过类型的网站,是在windows系统下做的,开发环境使用的是 AppServ 的PHP开发套件.现在有了我的大MAC,所以找了M ...
- 转:Yelp开发团队发布内部网站设计指南
原文来自于:http://www.infoq.com/cn/news/2014/02/yelp-style-guide 近日,Yelp开发团队在博客发布消息:Yelp公开了内部网站设计指南.这份文档此 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
随机推荐
- CJOJ 2044 【一本通】最长公共子序列(动态规划)
CJOJ 2044 [一本通]最长公共子序列(动态规划) Description 一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说,若给定序列X,则另一序列Z是X的子序列是指存在一个 ...
- poj_2186: Popular Cows(tarjan基础题)
题目链接 tarjan参考博客 本文代码参考博客 题意:求在图上可以被所有点到达的点的数量. 首先通过tarjan缩点,将所有内部两两可达的子图缩为一点,新图即为一个有向无环图(即DAG). 在这个D ...
- nyoj_7:街区最短路径问题
做这题时,先假设目标点在某个位置,然后对其稍微移动dx,dy,分析对ans的影响.最终得,选点时,使一半的横坐标比目标点横坐标小,一半的纵坐标比目标点小,这样得到的ans最小. 题目链接: http: ...
- 第三篇:RESTful介绍
在介绍restful之前先放一张从之前文章评论里看到的图,我觉得它把soap和rest之间的一些区别形容地非常形象. 在第一篇和第二篇中我们也介绍过,soap协议传递的报文要基于xml格式的soap消 ...
- HTML5的应用缓存
HTML5:提供一种应用缓存机制,使得基于web的应用程序可以离线运行.开发者可以使用 Application Cache (AppCache) 接口设定浏览器缓存的数据并使得数据离线有效. 在处 ...
- struts加载spring
为了在Struts中加载Spring context,需要在struts-config.xml文件中加入如下部分: <struts-config> <plug-in classNam ...
- (转)Maven使用
MAVEN3--(一)关于MAVEN 博客分类: MAVEN3 1.简介 MAVEN是Apache开源组织中的一个跨平台的项目管理工具. 主要功能有项目构建.依赖管理以及项目信息管理. 2.项目构 ...
- 斗地主[NOIP2015]
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- html、js、django处理日期问题
在html中使用日期控件,利用ngmodel将输入的值传到js里: <input type="date" ng-model="timeOps.test.a_time ...
- 【.net 深呼吸】导出 Office 文档中的图片
我们常用的 Office 文档其实就三种——Word.Excel.PowerPoint,分别对应的扩展名为:.docx..pptx..xlsx. 许多教程都告诉我们,要提取这些文件中的图片(其实像视频 ...