最简单的办法就是直接使用php $_SERVER['HTTP_REFERER']
如果我在A.php页面要登录
现在跳到B.php页面,我们只要在b.php中加如下代码
代码如下 | 复制代码 |
$url = $_SERVER['HTTP_REFERER']; |
但是上面的办法会有很多不足,如带参数等等,但在IE浏览器下的话,假如你是通过js的location来跳转的话,那这个值是获取不到的。
下面我做一个全面点的。
首先创建一个方法判断是否登录,如果没登录则
代码如下 | 复制代码 |
protected function checkLogin() { |
然后在需要登录的才能反问的页面调用这个方法:
代码如下 | 复制代码 |
$this->checkLogin(); |
这样如果你没有登录则跳转到登录页面。并带上了你之前页面的url:
然后获取URL提交登录:
代码如下 | 复制代码 |
public function login() { |
模板上获取到url后提交到php后台,登录后跳转到这个url ok搞定
在php数组中分为数组值与数组key,下面小编来给大家总结一下在php中数组值常用的操作方法包括有:数组中加入数值、判断 数组中的数值、删除特定数组值等有需要的同学可参考。php删除特定数组值
首先
代码如下 | 复制代码 |
var_dump($context['linktree']); |
得到
代码如下 | 复制代码 |
array(3) { [0]=> array(2) { ["url"]=> string(52) “http://127.0.0.1/testforum.cityofsteam.com/index.php” ["name"]=> string(28) “City of Steam Official Forum” } [1]=> array(2) { ["url"]=> string(55) “http://127.0.0.1/testforum.cityofsteam.com/index.php#c1″ ["name"]=> string(28) “City of Steam Official Forum” } [2]=> array(2) { ["url"]=> string(62) “http://127.0.0.1/testforum.cityofsteam.com/index.php?board=4.0″ ["name"]=> string(12) “Announcement” } } |
我要去掉中间那个。
用:unset($context['linktree']['1']);
结果:
代码如下 | 复制代码 |
array(2) { |
就少了一个[1]
让这中间的1自动编号:
代码如下 | 复制代码 |
|
但是这种方法的最大缺点是没有重建数组索引,就是说,数组的第三个元素没了。
经过查资料后,原来PHP提供了这个功能,只不过很间接。这个函数是array_splice()。
为了使用方便,我封装成了一个函数,方便大家使用:
代码如下 | 复制代码 |
<?php function array_remove(&$arr, $offset) { } $arr = array('apple','banana','cat','dog'); ?> |
经过测试可以知道,2的位置这个元素被真正的删除了,并且重新建立了索引。
程序运行结果:
代码如下 | 复制代码 |
Array ( [0] => apple [1] => banana [2] => dog ) |
php判断 数组中的数值
有专门的函数,不要用for循环,系统函数能实现快速搜索:
in_array
(PHP 4, PHP 5)
in_array — 检查数组中是否存在某个值
说明
bool in_array ( mixed $needle, array $haystack [, bool $strict] )
在 haystack 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE。
如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
注意: 如果 needle 是字符串,则比较是区分大小写的。
注意: 在 PHP 版本 4.2.0 之前,needle 不允许是一个数组。
例 292. in_array() 例子
代码如下 | 复制代码 |
<?php $os = array("Mac", "NT", "Irix", "Linux"); if (in_array("Irix", $os)) { echo "Got Irix"; } if (in_array("mac", $os)) { echo "Got mac"; } ?> |
第二个条件失败,因为 in_array() 是区分大小写的,所以以上程序显示为:
Got Irix
例 293. in_array() 严格类型检查例子
代码如下 | 复制代码 |
<?php if (in_array('12.4', $a, true)) { 1.13 found with strict check |
例 294. in_array() 中用数组作为 needle
代码如下 | 复制代码 |
<?php if (in_array(array('p', 'h'), $a)) { 'ph' was found |
向一个数组中加入数值
我们可以通过函数来实现,将一个或多个元素插入到数组中去,也可以直接添加进去。
(1)向数组中直接添加数据,新元素的下标是从原数组下标最大值之后开始的。
(2)array_unshift()函数在数组的开头添加一个或多个元素。
语法如下:
int array_unshift ( array &array, mixed var [,mixed ...]) ;
array_unshift()将传入的元素插入到array数组的开头。元素是作为整体被插入的,传入元素将保持同样的顺序。所有的数值键名将从0开始重新计数,文字键名保持不变。
(3)array_push()函数将一个或多个单元添加到数组的末尾。
语法:
int array_push ( array &array, mixed var [, mixed ...]) ;
array_push()将array当成一个栈,并将传入的变量添加到array的末尾。该函数返回数组新的单元总数。向数组中添加数据的示例如下。
示例:
代码如下 | 复制代码 |
<?php $shili = array (“1″,”2″,”3″,”4″) ; $shili[]=5 ; //直接添加数据 print_r ( $shili ) ; echo “<br>” ; $shili2 = array (“m”,”n”) ; array_unshift ($shili2,”o”,”p”) ; //添加元素于数组的开头 print_r ( $shili2 ) ; echo “<br>” ; $shili3 = array (“Php”) ; array_push ($shili3, “MySQL”,”Apache”) ; //添加元素于数组的末尾 print_r ($shili3) ; ?> 结果为: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) Array ( [0] => o [1] => p [2] => m [3] => n ) Array ( [0] => Php [1] => MySQL [2] => Apache ) |
如果是ajax调用:
//$total,总数(int);$size,每页显示数量(int);$page,当前页(int),$url,链接(string);ajax,js函数名;
$page = new Page(array('total'=>$total,'perpage'=>$size,'nowindex'=>$page,'url' => $url,'ajax' => 'videoGoToPage'));
//变量$page_html为分页的html,参数4是分页的显示样式是第四种
$page_html = $page->show(4);
//然后在页面中加入jQuery包和js代码:
function videoGoToPage(u)
{
if(!u)
{
return false;
}
$.ajax({
type: “POST”,
url: “” + u,
data: “”,
success: function(msg){
//alert( “Data Saved: ” + msg );
$(“#tonglei”).html(msg);
}
});
}
如果不是ajax调用:
//直接去掉数组中'ajax'这项就可以了
$page = new Page(array('total'=>$total,'perpage'=>$size,'nowindex'=>$page,'url' => $url));
$page_html = $page->show(4);
说明:对于url,因为我用的是伪静态,比如我的页面链接是 search-1.html 表示第一页,search-2.html为第二页,那么我的$url变量
就应该写成 $url = 'search-';
分页类会自动补全后面的 “页数 .html”,这里可以根据自己的需要修改分页类。
下面把page.class.php分享给大家
代码如下 | 复制代码 |
<?php /** /** } /** /** /** function nowbar($style='',$nowindex_style='c') /** /** } /** if(isset($_GET[$this->page_name])){ /** /** /** |
php分页类源码下载包:http://file.111cn.net/download/2013/06/08/pageClass.rar
在php中下载文件我们用得最多的是直接使用readfile()函数,readfile()可以实现把服务器源文件给下载,下面我来给大家介绍readfile下载文件的方法与性能介绍例1
代码如下 | 复制代码 |
<?php // 文件将被称为 downloaded.pdf // PDF 源在 original.pdf 中 ?> |
例2
代码如下 | 复制代码 |
$item=trim($_GET['fileName']).".txt"; |
上面只能下载本地函数,如果要下载远程的我们可以如下操作PHP远程下载文件到本地的函数
代码如下 | 复制代码 |
<?php echo httpcopy("/baidu_sylogo1.gif"); function httpcopy($url, $file="", $timeout=60) { if(function_exists('curl_init')) { |
最后分享一个支持多种文件下载的类函数
代码如下 | 复制代码 |
<?php |
购物车类:shop_cart.php
购物车的操作:cart_action.php
首页:index.html
Ajax操作用到了jquery,还有一个jquery插件thickbox
不多说了你可以先看看效果示例
shop_cart.php当然是购物车的核心,但是这个类很简单,因为他又引进了cart_action.php用于对外操作。所以这个类显得相当精简。
购物车类shop_cart.php
代码如下 | 复制代码 |
cart_name = $name; /** /** /** /** /** /** /** /** ?> |
对于cart_action,他实现了shop_cart类与index的中间作用,用于更新,删除,增加商品的操作。
cart_action.php
代码如下 | 复制代码 |
getItemQuantity($_GET['order_code'])+$_GET['quantity']; if ( !empty($_GET['quantity']) ) { if ( !empty($_GET['remove']) ) { header('Location: cart.php'); ?> |
还有就是index.html实现对外的操作,也就是添加操作
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script type="text/javascript"> return false; |
还有就是cart.php这是我们的购物车
代码如下 | 复制代码 |
<?php include('shopping_cart.class.php'); session_start(); $Cart = new Shopping_Cart('shopping_cart'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8"> <head> <title>Shopping Cart</title> <script" width=100% src="js/jquery-1.2.6.pack.js" type="text/javascript"></script> <script" width=100% src="js/jquery.color.js" type="text/javascript"></script> <script" width=100% src="js/cart.js" type="text/javascript"></script> <link href="css/cart.css" rel="stylesheet" type="text/css" media="screen" /> </head> <body> <div id="container"> <h1>Shopping Cart</h1> <?php if ( $Cart->hasItems() ) : ?> <form action="cart_action.php" method="get"> <table id="cart"> <tr> <th>数量</th> <th>商品名称</th> <th>商品编号</th> <th>单价</th> <th>总价</th> <th>删除</th> </tr> <?php $total_price = $i = 0; foreach ( $Cart->getItems() as $order_code=>$quantity ) : $total_price += $quantity*$Cart->getItemPrice($order_code); ?> <?php echo $i++%2==0 ? "<tr>" : "<tr class='odd'>"; ?> <td class="quantity center"><input type="text" name="quantity[<?php echo $order_code; ?>]" size="3" value="<?php echo $quantity; ?>" tabindex="<?php echo $i; ?>" /></td> <td class="item_name"><?php echo $Cart->getItemName($order_code); ?></td> <td class="order_code"><?php echo $order_code; ?></td> <td class="unit_price">$<?php echo $Cart->getItemPrice($order_code); ?></td> <td class="extended_price">$<?php echo ($Cart->getItemPrice($order_code)*$quantity); ?></td> <td class="remove center"><input type="checkbox" name="remove[]" value="<?php echo $order_code; ?>" /></td> </tr> <?php endforeach; ?> <tr><td colspan="2"></td><td colspan="3" id="total_price">您的消费总金额是:¥<?php echo $total_price; ?></td></tr> </table> <input type="submit" name="update" value="保存购物车" /> </form> <?php else: ?> <p class="center">您还没有购物.</p> <?php endif; ?> <p><a href="load.php">加载简单的购物车</a></p> </div> </body> </html> |