❶ php echo出多行比較復雜的HTML代碼應該怎麼寫
可以使用php定界符來輸出復雜的html
<?php
$name='Being';//下面<<<EOT後面不能有空格
print<<<EOT
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>UntitledDocument</title>
</head>
<body>
<!--12321-->
Hello,{$name}!
Hello,$name!
</body>
</html>
EOT;//注意末尾的結束符必須靠邊,其前面不能有空格?>
❷ php 中如何實現跳轉到一個新的頁面
1、首先用HTTP頭信息重定向到另外一個頁面的方法,如下圖所示。
❸ html中插入php的方法
1、第一種是在HTML中加PHP。
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<metahttp-equiv="Content-Language"content="zh-CN"/>
<title>HelloWorld</title>
</head>
<body>
<?php
echo"Helloworld!這是正文";
?>
</body>
</html>
2、第二種用echo輸出HTML。
因為HTML有的元素中有雙引號,所以用echo輸出的內容用單引號括起來,避免出錯,也省了轉義這一步。比如這樣的代碼:
<?php
if(!$_POST){
echo『<formaction=""method="post">
伺服器地址:<inputtype="text"name="host"value="localhost"/><br/>
資料庫賬號:<inputtype="text"name="user"value=""/><br/>
資料庫密碼:<inputtype="password"name="pwd"value=""/><br/>
指定資料庫:<inputtype="text"name="db"value="test"/><br/>
<inputtype="submit"value="確定"/>
</form>『;
}
?>
3、第三種就是用(<<<)標記符了,這是在PHP168的模板代碼中首次見到的。
<?php
print<<<EOT
<divclass="slidecont">{$label[deepblue_mainslide]}</div>
<divclass="newcontainter">
<divclass="head">{$label[deepblue_mainh1]}</div>
<divclass="cont"id="Tab1">{$label[deepblue_maint1]}</div>
<divclass="cont"id="Tab2">{$label[deepblue_maint2]}</div>
</div>
<ahref="$rs[url]"title="$rs[descrip]"target="_blank">$rs[name]</a>
EOT;
?>
❹ 用PHP向html文件寫入html代碼,如何寫
如下代碼僅作為參考:
<?php
$html=<<<EOT
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title></title>
</head><body>
<h1>EOT測試</h1>
</body>
</html>
EOT;file_put_contents("aa.html",$html);
?>
❺ PHP如何獲取需要登陸後才能看到的網頁HTML代碼
實際上是個模擬登陸的問題,需要寫個登陸模塊,解決兩個問題:
1,請求登陸並刷新的函數部分:
<?php
/*****************函數部分**************************/
/*獲取指定網頁的內容
$url為網頁地址
*/
function getcontent($url){
if($open=file($url)){
$count=count($open);
for($i=0;$i<$count;$i++)
{
$theget.=$open[$i];
}
}else{
die('請求過多,超時,請刷新');
}
return $theget;
}
?>
2,偷取程序部分,也分兩部分,
1),PHP與XML不同之處是需要特殊的調用才能支持COOKIE.或者記錄SessionID(後面有說明程序)
php代碼如下
<?PHP
//登陸並保存COOKIE
$f = fsockopen("www.url.net",80);
$cmd = <<<EOT
GET /test/login.php?name=test&password=test HTTP/1.0
EOT;
fputs($f,$cmd);
$result = '';
$cookie = '';
$location = '';
while($line = fgets($f))
{
$result .= $line;
//取得location跟setCookie頭HTTP頭信息
$tmp = explode(":",$line);
if($tmp[0]=="Set-Cookie")
$cookie .= $tmp[1];
if($tmp[0]=="Location")
$location = $tmp[1];
}
fclose($f);
2),獲取頁面
//下面訪問你要訪問的頁面(這部分也可以參考下面的核心常式)
$f = fsockopen("www.url.net",80);l
//下面的cookie就是發送前頁保存下的的cookie
$cmd = <<<EOT
GET /test/test.php HTTP/1.0
cookie:$cookie
EOT;
fputs($f,$cmd);
while($line = fgets($f))
{
echo $line;
}
fclose($f);
?>
核心常式就是fsockopen();
不妨再給段代碼你瞧瞧:
--------------------------------------------------------------------------------
function posttohost($url, $data)
{
$url = parse_url($url);
if (!$url) return "couldn't parse url";
if (!isset($url['port'])) { $url['port'] = ""; }
if (!isset($url['query'])) { $url['query'] = ""; }
$encoded = "";
while (list($k,$v) = each($data))
{
$encoded .= ($encoded ? "&" : "");
$encoded .= rawurlencode($k)."=".rawurlencode($v);
}
$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
if (!$fp) return "Failed to open socket to $url[host]";
fputs($fp, sprintf("POST %s%s%s HTTP/1.0", $url['path'], $url['query'] ? "?" : "", $url['query']));
fputs($fp, "Host: $url[host]");
fputs($fp, "Content-type: application/x-www-form-urlencoded");
fputs($fp, "Content-length: " . strlen($encoded) . "");
fputs($fp, "Connection: close");
fputs($fp, "$encoded");
$line = fgets($fp,1024);
if (!eregi("^HTTP/1\\.. 200", $line)) return $line ;
$results = ""; $inheader = 1;
while(!feof($fp))
{
$line = fgets($fp,1024);
if ($inheader && ($line == "" || $line == "\r")) {
$inheader = 0;
}
elseif (!$inheader) {
$results .= $line;
}
}
fclose($fp);
return $results;
}
$data=array();
$data["msg"]="HELLO THIS IS TEST MSG";
$data["Type"]="TEXT";
echo posttohost("http://url/xxx", $data);
應該說明白了吧?
另外登陸部分還有一種簡單方法是把SessionID保存下來
源代碼:
<?php
/*
* 得到網頁內容
* 參數:$host [in] string
* 主機名稱(例如: www.url.com.cn)
* 參數:$method [in] string
* 提交方法:POST, GET, HEAD ... 並加上相應的參數( 具體語法參見 RFC1945,RFC2068 )
* 參數:$str [in] string
* 提交的內容
* 參數:$sessid [in] string
* PHP的SESSIONID
*
* @返回 網頁內容 string
*/
function GetWebContent($host, $method, $str, $sessid = '')
{
$ip = gethostbyname($host);
$fp = fsockopen($ip, 80);
if (!$fp) return;
fputs($fp, "$method\r\n");
fputs($fp, "Host: $host\r\n");
if (!empty($sessid))
{
fputs($fp, "Cookie: PHPSESSID=$sessid; path=/;\r\n");
}
if ( substr(trim($method),0, 4) == "POST")
{
fputs($fp, "Content-Length: ". strlen($str) . "\r\n"); // 別忘了指定長度
}
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n\r\n");
if ( substr(trim($method),0, 4) == "POST")
{
fputs($fp, $str."\r\n");
}
while(!feof($fp))
{
$response .= fgets($fp, 1024);
}
$hlen = strpos($response,"\r\n\r\n"); // LINUX下是 "\n\n"
$header = substr($response, 0, $hlen);
$entity = substr($response, $hlen + 4);
if ( preg_match('/PHPSESSID=([0-9a-z]+);/i', $header, $matches))
{
$a['sessid'] = $matches[1];
}
if ( preg_match('/Location: ([0-9a-z\_\?\=\&\#\.]+)/i', $header, $matches))
{
$a['location'] = $matches[1];
}
$a['content'] = $entity;
fclose($fp);
return $a;
}
/* 構造用戶名,密碼字元串 */
$str = ("username=test&password=test");
$response = GetWebContent("localhost","POST /login.php HTTP/1.0", $str);
echo $response['location'].$response['content']."<br>";
echo $response['sessid']."<br>";
if ( preg_match('/error\.php/i',$response['location']))
{
echo "登陸失敗<br>";
} else {
echo "登陸成功<br>";
// 不可以訪問user.php,因為不帶sessid參數
$response = GetWebContent("localhost","GET /user.php HTTP/1.0", '', '');
echo $response['location']."<br>"; // 結果:error.php?errcode=2
// 可以訪問user.php
$response = GetWebContent("localhost","GET /user.php HTTP/1.0", '', $response['sessid']);
echo $response['location']."<br>"; // 結果:user.php
}
?>