PHP 常识
PHP常識
1.談談你對MVC的認識,介紹幾種目前比較流行的框架
由Model(M),View(V),Cntroller(C) 組成的一種設計模式,Model 主要處理一些業務處理類,View是頁面顯示頁,直接在瀏覽器輸出,Controller是橋接M和V,由它收到V的請求,調用相應的model類再把結果返還給視圖,右視圖輸出給用戶。
?2.HTML表單中GET和POST提交方法的區別
GET提交方式是http協議,把要提交的值附在url后面,因此這種方式保密性不是很好,且有長度限制,最長8192字節
POST是實體數據,隨著表單提交到服務器,比較安全,且長度限制由配置文件決定。
3.請簡述session和Cookies的區別
SESSION:是存儲用戶信息的唯一全局變量,是在服務器端的預處理數組,存放的地方由PHP中的seesion_dir指定。
COOKIE:是用來儲存連續訪問一個頁面時使用,數據存在客戶端。這兩者都可以通過時間設置生存長短。
默認情況下,session是基于cookie的,如果cookie被禁止必須向其他辦法解決了。
4.求兩個日期的差數,例如20016-10-27 ~ 2016-11-27 的日期差數。
$time1=mktime(0,0,0,10,27,2016);
$time2=mktime(0,0,0,11,27,2016);
$time3=$time2-$time1;
相差秒數:$time3;
相差分鐘:$time3/60;
相差小時:$time3/3600;
相差天數:$time3/3600/24;
相差周數:$time3/3600/24/7;
5.寫出如下程序輸出的結果
<?
$test ='aaaa';
$abc=&$test;
unset($test);
echo $abc;
?>
輸出:aaaa;
6.請寫出一個函數將1234567890轉換成1,234,567,890 每3位用逗號隔開的形式。
方法一:function new_number_formate($num)
{
$nnum =(string)$num;
$str =strrev($nnum);
$count = strlen($str);
for($i=0;$i<$count;$i=$i+3){
$nst.=Substr($str,$i,3).",";
}
echo strrev(rtrim($str,","));
}
方法二:利用系統函數:number_formate($num,0,".",",");
7.有A(id,sex,par,c1,c2),b(id,age,c1,c2)兩張表,現要求寫一條SQL語句,將B中age>50的記錄c1,c2,更新到A表中統一記錄中的c1,c2字段中。
update A as a set a.c1=b.c1,a.c2=b.c2 left jion B as b on a.id=b.id;
8. 寫手機號11位驗證表達式
1.reg1="/^139\d{8}";
2.Reg2="/^139[0-9]{8}/";
9.請寫出一個函數,實現以下功能
字符串“open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”。
方法一:
function cstr($str){
echo str_replace("","",ucwords(str_replace("_""",$str)));
方法二:
function csstr($str){
$arr=explode("_",$str);
foreache($arr as $v){
$nstr.=ucwords($v);
}
echo $nstr;
}
10.請用php寫出以下程序:假設網絡中有一臺服務器192.168.1.101,開放端口8899進行偵聽,請用php的socket相關知識,寫出一個簡易的client,連接到server,并發送字符串”hello server!”。程序僅對連接的成功和失敗進行簡易錯誤判斷和處理即可。
<?php
$addr='192.168.1.101';
$port=8899;
if($socket=socket_create(AF_INET,SOCK_STREAM,TCP)<0_){
echo "創建失敗,原因:".socket_strerror($sock);
return false;
}
if($bind=socket_bind($socket,$addr,$port)<0){
echo "綁定失敗,原因:".socket_strerroe($bind);
return false;
}
if($listen=socket_listen($socket,5)<0){
echo "監聽失敗,原因:".socket_strerror($listen);
return false;
}
if($accept=socket_accept($socket)<0){
echo "連接失敗,原因:".socket_strerror($accept);
return FALSE;
}
socket_write($accept,"Hello World",strlen("Hello World"));
Socket_close($accept);
socket_close($socket);
【Linux 常識】
1.如何實現每天0點鐘重啟服務器
寫shell腳本:crontab 000***/sbin/restart.sh
【附加題】
1.使用thinkphp5.0在控制器(action)中傳遞一個一位數組到視圖(Tpl),并將數組循環顯示到前臺頁面,簡要的寫出后臺的代碼;
//控制器代碼
<?php
class show {
function index(){
$arr=array('ggg','ghh','kkk','iii','yuyuyu');
$this->assgin("arr",$arr);
return $this->fetch();
}
}
//試圖代碼
{volist name='arr' id='vo' key='key'}
<{key}>=><{vo}>
{/volist}
3.請用php編寫程序,讀取出www.baidu.com的首頁的網頁內容(僅html),并存入字符串 $str.(10分)
$str=file_get_contents("www.baidu.com");
4.請用php將上題中讀取出的網頁內容的<title>標簽的值解析出來
$reg='/<title>(.*?)<\/title>/';
preg_match($reg,$str,$m);
var_dump($m);
5.javascript的ajax請求
<script>
var Ajax;
if(XMLHttpRequest){
Ajax=new window.XMLHttpRequest();
}elseif(window.ActiveXObject){
Ajax=new window.ActiveObject("Microsoft.XMLHTTP");
}else{
Alert("不支持異步加載");
return false;
}
//選擇傳送方式
Ajax.open("post","url");
//請求狀態放生改變時執行的動作
Ajax.onreadystatechange=function(){
swith(Ajax.readystate){
case0;
case1;
case3;
Alert("提示信息自己定義");
break;
case4:
if(Ajax.status==400){
//成功就把發回來的值加載到對應的位置
getElementById("show").innerHTML=Ajax.response.text;
}else{
Alert("請求失敗");
}
}
}
//post傳值時必須設置下面一步
Ajax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
//發送數據。如果為get 傳值是設置為null
Ajax.send(data);
</script>
?
?
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/chuanqideya/p/6007474.html
總結
- 上一篇: 关闭 Sublime Text 3 自动
- 下一篇: data structure begin