A. 如何自己用php编写伪代码程序
伪代码写的代码和编程写的代码思想是一样的,只是语法上伪代码比较随意点,在编译器里不能直接编译。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
B. php 委托模式和代理模式区别
区别如下:
1、委托模式是把多个不同对象委托由单一个委托对象来统一执行。保持接口交流的对象只有不变的同一个,代码也不变。
代理模式是把难复制的、占资源多的、远程速度慢的对象。各自对应一个代理对象,被代理后进行本地的操作。
C. PHP使用代理方法获取远程网页的代码.
functioncurl_string($url,$user_agent,$proxy){
$ch=curl_init();
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_COOKIEJAR,"c:cookie.txt");
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
$url_page="http://www..com";
$user_agent="Mozilla/4.0";
$proxy="http://192.11.222.124:8000";//这里是http代理
$string=curl_string($url_page,$user_agent,$proxy);
echo$string;
D. 代理模式的实现方式
下面我举个例子来说明这一切:
场景:业务类CompanyManager在调用Save方法的时候需要调用SecurityManager类判断权限是否足够
第一种实现方式,我们通常会这样做:直接在CompanyManager类中调用ISecurityManager接口的IsPass方法判断权限。
public class SimpleCompanyManager : ICompanyManager
{
可通过外部注入的属性#region 可通过外部注入的属性
public string UserName { get; set; }
public CompanyDao Dao { get; set; }
#endregion
public void Save()
{
//判断权限
ISecurityManager security = new SecurityManager();
if (security.IsPass(UserName))
{
//执行业务方法
//.
//调用DAO层方法
Dao.Save();
}
else
{
//执行其它业务方法
Console.WriteLine("您没有该权限");
}
}
}
这样CompanyManager类与ISecurityManager或SecurityManager会发生业务性耦合。聪明的朋友会发现在GOF(设计模式)中有一种模式(代理模式)可以解除这种耦合。
代理模式(Proxy Pattern):什么是代理模式?是给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入
CompanyManager
public class CompanyManager : ICompanyManager
{
可通过外部注入的属性#region 可通过外部注入的属性
public string UserName { get; set; }
public CompanyDao Dao { get; set; }
#endregion
public void Save()
{
//执行业务方法
//.
//调用DAO层方法
Dao.Save();
}
}
CompanyProxyManager
public class CompanyProxyManager : ICompanyManager
{
public string UserName { get; set; }
private ICompanyManager target = new CompanyManager();
public void Save()
{
//判断权限
ISecurityManager security = new SecurityManager();
if (security.IsPass(UserName))
{
//调用目标对象Save方法
target.Save();
}
else
{
Console.WriteLine("您没有该权限");
}
}
}
这样,CompanyManager类就不必与判断权限的类SecurityManager耦合
代理模式作用就是接触业务耦合,保证业务的独立性
摘自 刘冬的博客园
E. 用PHP二次开发做了个网站,要求写伪代码,要怎么写譬如我这个index文件要求写,应该怎么写
伪代码其实就是根据自己的需求写代码自己看的懂就行,比如smart模板
其实都是用replace来替换的,
substr_replace(string,replacement,start,length)
参数:
string 必需。规定要检查的字符串。
replacement 必需。规定要插入的字符串。
start 必需。规定在字符串的何处开始替换。【正数 - 在第 start 个偏移量开始替换
负数 - 在从字符串结尾的第 start 个偏移量开始替换
0 - 在字符串中的第一个字符处开始替换】
charlist 可选。规定要替换多少个字符。【正数 - 被替换的字符串长度
负数 - 从字符串末端开始的被替换字符数
0 - 插入而非替换】
例子:
<?php
echo substr_replace("Hello world","earth",6);
?>
从第六位开始将Hello world 替换成 earth
结果: Hello earth
如果是替换代码的话,有时候会用到正则表达式
方向,earth代表PHP的正常写法,Hello world 代表你自己写法随便怎么写,你自己看懂就行,那么earth PHP函数执行过程 用 Hello world 来表示。
F. 【php面试题】请写出php代理模式的伪代码
小白不懂题目的意思,难道是伪造CURL来源IP?
不过伪造IP倒也是必须用代理
比如: curl_setopt($curl, CURLOPT_PROXY, "http://116.236.216.116:8080/");
G. php代理问题
你应该是数据库管理的吧,必须有一个会员表吧,每个会员一条记录,记录每个会员的相关信息,大概有这些字段:
会员表(会员ID,姓名,会员级别(1,2,3),上级会员ID,祖宗会员ID)
会员ID可以使用身份证号,也可以让数据库自己编码,新增加会员需要做三件事情:
获取上级会员的祖宗会员ID,
SELECT 祖宗ID FROM 会员表 WHERE 会员ID='推荐人ID'
添加会员
INSERT INTO 会员表 VALUES ('新会员ID','新会员姓名','新会员默认级别例如3','推荐人ID','祖宗ID')
修改推荐人的级别
SELECT COUNT(*) FROM 会员表 WHERE 上级会员ID='推荐人ID'
如果查询的结果数量>=10,那么执行下面的修改
UPDATE 会员表 SET 会员级别=2 WHERE 会员ID='推荐人ID' AND会员级别=3
H. 如何向PHP伪造自己的ip
要看具体代码是怎么写的,如果代码写得不好是有可能伪造的。
获取IP的方法有几种,通过例子看一下,这个是ThinkPHP里的获取IP的函数:
/**
* 获取客户端IP地址
* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字
* @param boolean $adv 是否进行高级模式获取(有可能被伪装)
* @return mixed
*/
function get_client_ip($type = 0,$adv=false) {
$type = $type ? 1 : 0;
static $ip = NULL;
if ($ip !== NULL) return $ip[$type];
if($adv){
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown',$arr);
if(false !== $pos) unset($arr[$pos]);
$ip = trim($arr[0]);
}elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
}elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法验证
$long = sprintf("%u",ip2long($ip));
$ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
return $ip[$type];
}
$_SERVER['HTTP_CLIENT_IP'] 是HTTP信息中的IP,存在于http请求的header中,可以伪造;
$_SERVER["REMOTE_ADDR"] 可取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。不可以伪造,但可以用代理。
$_SERVER["HTTP_X_FORWARDED_FOR"] 可以透过代理服务器取得客户端的真实 IP 地址,但有时候也不管用,也可以伪造。
I. PHP实现代理IP
“代理IP”现在有很多种的,就是软件改IP的。
软件上有很多IP点提供给使用者切换的
在电脑上安装IP转换器,
在IP软件上选择不同的IP点连接就可以了的。
推荐软件。可找到类似软件的。
全国大多数城市(数百万IP点任意切换)
希望可以帮到你。多少电脑多可以使用的。