php

来源:https://www.cnblogs.com/tuziling/archive/2018/12/06/10074452.html
-Advertisement-
Play Games

1、location.href='http://www.xxx.com/'; 2、location.replace('http://www.xxx.com/'); phpstudy運用在後端 ------伺服器:提供服務的機器------ 通過功能變數名稱訪問 給電腦配伺服器 靜態頁面就是數據不變 數據變化... ...


1、location.href='http://www.xxx.com/';

2、location.replace('http://www.xxx.com/');

phpstudy運用在後端

------伺服器:提供服務的機器------

通過功能變數名稱訪問  給電腦配伺服器

靜態頁面就是數據不變
數據變化:動態網頁  


伺服器作了什麼:
1.接受用戶請求
2.根據用戶請求執行相應業務處理
3.將處理返回

ajax:
發送請求
響應結果

http:服務端的通訊協議
https: 更安全

bs   瀏覽器伺服器


cs   客戶端伺服器


埠 3306 資料庫  
80    wed服務





DNS:
1.接收用戶輸入的功能變數名稱
2.查詢功能變數名稱所對應的ip地址
3.返回ip

DNS 翻譯

hosts文件 相當於DNS

C:\Windows\System32\drivers\etc

PHP是什麼?
超文本預處理

埠:

電腦本身是一個封閉的環境,就像是一個大樓,如果需要有數據通信往來,必須有門,這個門在術語中就叫埠,每一個埠都有一個編號,每台電腦只有 65536 個埠(0-65535<?php
// echo 是 PHP 中的一個特殊的“指令”,
// 不一定需要像函數那樣通過 `()` 去使用
// 註意:echo 後面緊跟著一個空格
echo 'hello php';
echo 'hello', 'world';
// => `helloworld`



<?php
// print 與 echo 唯一區別就是只能有一個參數
print 'hello php';
// print 'hello', 'world';
// => Parse error: syntax error ...


<?php
// var_dump 是一個函數,必須跟上 () 調用
// 可以將數據以及數據的類型列印為特定格式
var_dump('hello php');
// => 'string(9) "hello php"


數據類型:
- string(字元串) **

- integer(整型)—— 只能存整數

- float(浮點型)—— 可以存帶小數位的數字

- boolean(布爾型)

- array(數組) **

- object(對象)

- NULL(空)


判斷數據類型:
- is_string():判斷當前變數是否是字元串類型

- is_bool():判斷當前變數是否是布爾類型

- is_int():判斷當前變數是否是整形類型

- is_float():判斷當前變數是否是浮點類型

- is_array():判斷當前變數是否是數組類型

- is_object():判斷當前變數是否是對象類型



pre 格式化   後裡面寫空格就有空格

$globals   改變全局變數作用域

- $GLOBALS — 引用全局作用域中可用的全部變數

- $_SERVER — 獲取服務端相關信息

- $_REQUEST — 獲取提交參數

- $_POST — 獲取 POST 提交參數

- $_GET — 獲取 GET 提交參數

- $_FILES — 獲取上傳文件

- $_ENV — 操作環境變數

- $_COOKIE — 操作 Cookie

- $_SESSION — 操作 Session



;開啟擴展路徑ext,ext是PHP程式的插件目錄,修改成絕對路徑
extension_dir = "G:/phpstudy/php/php-7.1.14/ext"


 // +只能是算術運算符,系統會自動的將+兩邊的變數轉換為數組,
    //如果可以轉換,就進行轉換,否則返回這個數據類型的預設值  
    //int >0 object > null bool>false float:0.0
    // 在php中字元串連接符使用.

    // 算術運算符: + - * 、 % ++ --
    // 賦值運算符:= += -= *= /=
    // 邏輯運算符:! && ||
    // 比較運算符:> >= < <= == === !=
    // 三元運算符:a>b ? "" : ""


get:一般用來獲取數據,參數會在url地址欄拼接
post:一般用來發送數據到伺服器

----------accept=".jpg,.png"文件類型-----------------------

<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post" enctype="multipart/form-data">
       文件上傳: <input type="file" name="myfile" id="" accept=".jpg,.png">
                <input type="submit">
    </form>
----------------------------------------------------------

trim()去除前後的空格
--------------------------上傳--------------------------------------
  <!-- 1.在php中,上傳文件的請求方式必須是post -->
    <!-- 2.在上傳的時候必須在表單設置enctype屬性
        application/x-www-form-urlencoded:將參數編碼為鍵值對的格式,這是標準的編碼格式(UTF-8 GBK GB2312),它用來處理字元串,它是預設的編碼格式
        multipart/form-data:它是專門用來處理特殊數據的,如文件
    -->

---------------------------------------------------------------------
Array
        (
            [myfile] => Array
                (
                    [name] => 跨域攻擊.png:源文件的名稱
                    [type] => image/png:源文件的類型
                    [tmp_name] => C:\Windows\phpE412.tmp:這是文件在伺服器的臨時路徑
                    [error] => 0:錯誤信息,0代表沒有錯誤
                    [size] => 256436:文件的大小
                )
        )
 */
//(1)strpos(源字元串,搜索字元串):可以獲取指定字元串在源字元串中第一次出現的索引值,索引從0開始
//(2)strrchr(源字元串,指定搜索的字元)

-
    <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">
        文件選擇:<input type="file" name="myfile"><br>
        <input type="submit">
    </form>

GET方式提交數據的特點:
get方式在url後面拼接參數,只能以文本的形式傳遞數據
傳遞的數據量小,4KB左右(不同瀏覽器會有差異)
安全性低,會將數據顯示在地址欄
速度快,通常用於對安全性要求不高的請求

特點
1-post 方式 安全性比較高
2-傳遞數據量大,請求對數據長度沒有要求
3-請求不會被緩存,也不會保留在瀏覽器歷史記錄中
用於:密碼等安全性要求比較高的場合,提交的數據量比較大:發佈文章,上傳文件。
POST方式提交數據上限預設為8M(可以在PHP的配置文件post_max_size選項中修改)

<!-- $_SERVER["PHP_SELF"] 表示當前處理頁面的名字-->


implode:字元串分割

//使用move_uploaded_file函數來實現文件的移動,否則文件在程式結束後會被自動的刪除
//move_uploaded_file(源文件的全路徑,目標文件的全路徑)

出現亂碼解決代碼:header('content-type:text/html;charset=utf8');

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // 表單提交請求
}

超全局變數:無法訪問函數中的變數;  $GLOBALS

時間區
php-ini >date.timezone = PRC|Asia/shanghai|Asia/chongqin 
-------------------------------------------------------------------

1.php標記
    <?php   
        1.寫在這個結構內的代碼才會以php語法解析
        2.寫在這個結構外的代碼會原樣返回
    ?>


2.輸出內容的方式
    echo:輸出一個或者多個字元串
    print 或者 print():輸出一個字元串值
    print_r():可以輸出複雜數據類型,如數組,以鍵值對的形式輸出
    var_dump():可以輸出複雜數據類型,如數組,以鍵值對的形式輸出,還可以輸出數據的長度



3.字元串
    '':不能解析變數,會將變數當成普通字元串處理  \\ \'
    "":能解析變數 \" \t \n \r \$



4.數組:
    創建方式:
        $arr = array()
        $arr = []
        $arr[] = value; //如果數組不存在則可以自動的創建一個數組,並將當前值添加到數組中,如果存在則添加數據到數組
    數組的類型:
        索引數組:不人為設置key $arr = array(1,2,3,4);
        關聯數組:人為設置key和value  $arr = array("name"=>"jack")
        混合數組:$arr= array(1,2,3,"name"=>"jack",4)
        二維數組:數據的值本身又是一個數組
            $arr = array(
                array(
                    "name"=>"jack",
                    "age"=>20
                ),
                array()
            );
    數組遍歷:for  | foreach
    for($i =0;$i<count(數組);$i++){

    }

    foreach(需要遍歷的數組對象 as $key => $value){

    }

    foreach(需要遍歷的數組對象 as $value){

    }


5.變數作用域:函數內部預設不能使用函數外部所聲明的成員,如果想使用,則:
    1.使用global關鍵字
    2.使用超全局變數$GLOBALS

6.常量的定義和使用:
    define(名稱,值,false)
全大寫

7.載入其它文件:文件包含
    include:如果載入失敗,不會報錯,後續代碼會繼續執行,它可以重覆載入
    include_once:如果載入失敗,不會報錯,後續代碼會繼續執行,它不會重覆載入,只會真正的載入一次
    require:如果載入失敗,會報錯,後續代碼不會繼續執行,它可以重覆載入
    require_once:如果載入失敗,會報錯,後續代碼不會繼續執行,它不可以重覆載入

8.常用API
    文件操作:
        file_get_contents:可以讀取文件內容並返回
        file_put_contents(文件路徑,寫入的內容,FILE_APPEND):可以將指定的字元串內容寫入到文件,其中第三個參數FILE_APPEND可以實現文件內容的追加

9.html混編
    1.在<?php 在這個結構內部只能寫符合php語法的代碼 ?>
    2.在<?php  ?>結構的代碼會原樣輸出
    3.混編實現方式
        1.<?php echo '<p></p>' ?>
        2.
            <?php  if(){ ?>
                <p></p>
            <php }?>


----------------------------------------------------------
php.ini
上傳音樂  upload_max_filesize = 500M  更改

<audio>標簽,作用:播放音樂
                                src:添加音頻文件路徑
                                controls  出現控制播放的控制面板,
                                autoplay  自動播放 


請求行
請求頭
空行
請求體

記住:使用session一定要加上session_start()

//一小時過期
setcookie("uName","admin",time()+ 3600)
//永久性COOKIE
setcookie("password","123",PHP_INT_MAX);

//setcookie("username","jack",PHP_INT_MAX,"/day5/down");

-----------增加刪除和修改是返回受影響的行數--------------

查詢語句的語法:select *|欄位列表 from 表列表  where  條件
*代表當前表的所有欄位


資料庫操作:
select from    表名    where    條件    ----查詢
insert    into    表名    values    條件    ----新增
update        表名    set    條件    ----修改
delete from    表名    where    條件    ----刪除

-- 查詢mytalbe中的所有數據
SELECT * FROM mydase

-- 查詢mytalbe中的所有數據
SELECT * FROM mydase
-- 查詢ID  not>!  and>&&  or>||
SELECT id,NAME FROM mydase
SELECT * FROM mydase where id =4
SELECT * FROM mydase where age<20
SELECT * from mydase where age>=20 AND gender =1
-- 增加
insert into  mydase values (null,'lili',13,2010-12-1,0,17615848307)
INSERT INTO mydase(age,gender) VALUE (40,1)
-- 修改語句
UPDATE mydase SET age = age +10 WHERE id = 2
update mydase set age = age +20 where id = 5
-- 刪除語句
delete from mydase where id = 6
delete from mydase where id in (4,5)



select    count    ---數數總計
select    min    ---最小值
select    max    ---最大值
select    avg    ---平均值

判斷用戶是否提交
  if($_SERVER["REQUEST_METHOD"]==="POST"){
    login();
  }
步驟分析:
1、判斷請求是否是POST  $_SERVER[‘REQUEST_METHOD’]==’POST’
2、校驗表單數據是否為空或者不存,如果不存在就將該表單的name存入數組中
3、點擊提交判斷沒有輸入值就顯示警告


步驟分析:  list.php
1、讀取文件獲取json字元串
2、將json字元串轉換成php數組
3、遍曆數組將數據渲染到頁面上


步驟分析:
1、將選中的文件存儲為永久文件
2、讀取music.json中的數據
(1)將數據轉換成數據數組  json.decode
(2)獲取表單輸入的值存放至數據數組中
3、將數據數組轉換成字元串  json.encode 寫入music.json中
4、添加成功後頁面跳轉至list.php


鏈接庫:
header('content-type:text/html;charset=utf-8');

mysqli_set_charset($conn,"utf8");

    // 連接成功,那麼就可以創建sql語句,執行相關操作
    // 1.新增數據:在執行新增語句的時候,mysqli_query的返回值:如果成功則返回true,否則返回false
    // 2.修改操作:
    // 3.刪除操作


1.創建連接--建立連接
    $conn = mysqli_connect(主機或IP地址,用戶名,密碼,資料庫名稱);
    如果連接成功,就返回一個連接對象(資源),如果連接失敗,返回false

2.設置編碼:主要是解決瀏覽器出現亂碼的問題
    1.伺服器端的編碼和php的編碼不一致:mysqli_set_charset($conn,"utf8") | mysqli_query($conn,"set names utf-8")
    2.php的編碼和瀏覽器端的編碼不一致:header("Content-Type:text/html;charset=utf-8")

3.創建sql語句
    1.新增:數值如果是字元串類型,一定要使用引號包含.如果數據沒有使用引號包含,有可能會有錯
        "insert into temp value('張三')"
    2.刪除和修改一定需要考慮是否有條件

4.執行sql語句
    1.增加刪除和修改:如果成功則返回true,否則返回false
    2.查詢:
        查詢失敗:false
        查詢成功但是沒有數據行:mysqli_num_rows(資源對象--引用)
        查詢成功也有數據行:讀取數據
    3.使用mysqli_query($conn,$sql)

5.接收返回值
    增加刪除和修改:true/false 
    查詢有結果集同時有數據
        mysqli_fetch_array(查詢結果集):每次讀取一行數據,生成數組,裡面包含兩種形式的數據(索引數組,關聯數組)
        mysqli_fetch_assoc:每次讀取一行數據,生成數組,裡面只包含關聯數組
        mysqli_fetch_row:每次讀取一行數據,生成數組,裡面只包含索引數組
    迴圈讀取:
        while($row = mysqli_fetch_assoc(結果集)){
            $arr[] = $row;
        }
6. 釋放資源:及時的關閉連接對象,釋放資源:什麼時候釋放:當與mysql相關的操作執行完畢之後就立刻釋放
    mysqli_close($conn);


<?php 
    header("Content-Type:text/html;charset=utf-8");
   $coon = mysqli_connect("localhost","root","root","mydase");
   mysqli_set_charset($coon,"utf8");
   if(!$coon){
       //echo '連接失敗';
       die("連接失敗");
   }else{
       echo "連接成功";
   }
?>

獲取電腦相隔現在時間
$time1=strtotime();
現在時間
$time2 = time();
 //合併單元格
              //colspan  橫向合併 跨列
              //rowspan  縱向合併 跨行


200 OK
請求已成功,請求所希望的響應頭或數據體將隨此響應返回。出現此狀態碼是表示正常狀態。
403 
請求被拒絕
404  伺服器沒有這個頁面


extension_dir  開啟 配置文件
mysqli         開啟 配置文件
    

==========================================================
//連接庫
$conn=mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME);

//設置sql語句
 $sql="SELECT p.id,p.title,p.feature,p.created,p.content,p.views,p.likes,c.`name`,u.`nickname`,
    (SELECT COUNT(id) FROM comments WHERE comments.post_id=p.`id`) AS  commentCount
    FROM posts p
    LEFT JOIN  categories c ON  c.`id`=p.`category_id`
    LEFT JOIN  users u ON  u.`id`=p.`user_id`
    WHERE p.`category_id`={$categoryId}
    LIMIT 20";

//執行sql語句
    $result=mysqli_query($conn,$sql);//結果集
  header("Content-Type:text/html;charset=utf-8");

//拿到數據
  $postarr=[];
  while($row=mysqli_fetch_assoc($result)){
    $postarr[]=$row;
  }



 header("Content-Type:application/json;charset=utf-8");
     echo  json_encode($response);從資料庫獲取內容並轉換成JSON格式的內容

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 海康&大華&DSS獲取RTSP 實時流 海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream說明:username: 用戶名。例如admin。password: 密碼。例如12345。ip: ...
  • 命令模式(Command Pattern)又稱為行動(Action)模式或交易(Transaction)模式。 定義: 將一個請求封裝成一個對象,從而讓你使用不同的請求把客戶端參數化,對請求排隊或記錄請求日誌,可以提供命令的撤銷和恢復功能。 命令模式類圖如下所示。 命令模式中有如下4個角色。 命令( ...
  • 搬到小機房後終於能用VSCode啦(~~沒錯以前的系統是xp~~) 但是這東西比Dev難搞多了qwq,簡單記一下自己的DIY歷程吧(~~不然全搞炸就涼了~~) 設置語言為中文 可以直接下載插件 讓VSCode支持編譯C++程式 首先要有MingW,一個很simple的方法是直接把DevC++的Min ...
  • 代理模式是一種很常用的模式,JDK也內置了對於代理的支持,動態代理,本文對代理模式進行了介紹,意圖,結構,java實現,對靜態代理和動態代理進行了分析,並且給出了代碼示例,並且介紹了CGLIB的使用。 ...
  • 外觀模式又稱為門面模式Facade是一種簡單的設計模式,但是他背後的思想為迪米特原則,理解門面模式更有助於理解迪米特原則--不要和陌生人說話的原則,可以降低系統的耦合程度,本文介紹了外觀模式的意圖,結構,並且給出了java代碼示例。 ...
  • List 是 Java 開發中經常會使用的集合,你們知道有哪些方式可以初始化一個 List 嗎?這其中不缺乏一些坑,今天棧長我給大家一一普及一下。 1、常規方式 這種就是我們平常用的最多最平常的方式了,沒什麼好說的,後面缺失的泛型類型在 JDK 7 之後就可以不用寫具體的類型了,改進後會自動推斷類型 ...
  • 前言 開心一刻 已經報廢了一年多的電腦,今天特麽突然開機了,嚇老子一跳,只見電腦管家緩緩地出來了,本次開機一共用時一年零六個月,打敗了全國0%的電腦,電腦管家已經對您的電腦失去信心,然後它把自己卸載了,只剩我在一旁發呆。 路漫漫其修遠兮,吾將上下而求索! github:https://github. ...
  • 題目內容: NMEA-0183協議是為了在不同的GPS(全球定位系統)導航設備中建立統一的BTCM(海事無線電技術委員會)標準,由美國國家海洋電子協會(NMEA-The National Marine Electronics Associa-tion)制定的一套通訊協議。GPS接收機根據NMEA-0 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...