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點任意切換)
希望可以幫到你。多少電腦多可以使用的。