php,mysq,js的特殊字元

2021-06-27 15:31:20 字數 995 閱讀 4164

雙休日連續加班,真是好爽……痛苦的不是寫不出**,而是寫出**老闆不滿意要你重做啊。

最近趕乙個**專案,既然是做**,那麼js和html是一定要打交道的,至於伺服器指令碼語言我們用的是php,這兩天加班的時候遇到了幾個問題,而且竟然都是特殊字元的問題,好記性不如爛筆頭,在這裡做個記錄免得忘記。

1.js和php

我試圖把乙個php變數傳給js函式,作為url的引數,用js跳轉,可沒想到,經js這麼一轉手資料就變了,原來是因為變數的值中帶了'+'字元,而js會把'+'字元當成字串連線符而忽略掉它。而對這種情況一般的處理方法是替換,js對傳入的資料進行處理,把加號進行替換,轉成url編碼的'%2b'即可,可以用replace函式。而這裡還有乙個問題,php如果在**中讀取get引數中有加號,會把它當成空格,因為空格的url的一種編碼是'+'。

2.mysql和php

我試圖向mysql資料庫中插入一條資料的時候,mysql卻向我返回乙個錯誤,檢查後發現原來php的sql語句中的乙個字串變數帶了單引號',而單引號在mysql中是特殊字元,導致了sql語句變化,結果出錯了。這種情況很簡單,只要把那個字串變數進行轉義處理即可,這裡可以用php的addslashes()函式,其實,乙個**必須要對這類變數進行處理,不然是非常脆弱的,很容易被攻破。乙個例子就是使用者登入時可以在密碼框輸入"'' or ''=''";這時如果**沒有對資料進行處理的話,任何人都可以輕易登入系統了。

3.html和php

我試圖向網頁列印乙個已經帶有資料的表單時,乙個input框中資料卻總是錯誤,檢查後發現原來是雙引號"搞的鬼,我們要使input一開始就帶值的話只有設定它的value="某變數a",當a中有雙引號時,很明顯value=""這句話就被改變了,這種情況下處理的方法是要把變數a進行html的轉義,對html有些了解就知道,html使用一些特殊的字串表示一些特殊字元,而其中乙個為大家所熟知的就是' '在html中表示的是乙個空格,進行html轉義用的php函式是htmlspecialchars()。

魔鬼往往隱藏在細節中,這句話真是足以為一生的警句啊。

shell的特殊字元

點 命令 點 命令是乙個shell內部命令,它可以使使用者在當前的shell中執行程式,而不建立子程序。注釋 shell指令碼的注釋符號 重定向符 用法 command filename,可以將command的輸出儲存在filename檔案中。同 類似,但表示追加。用法 command filena...

特殊字元的分隔

特殊字元的分隔 system.out.println 方法一 string aa sss ccc string vv aa.split system.out.println 以 分隔的陣列長度 vv.length system.out.println 方法二 string bb aaaa cccc ...

特殊的空格字元

特殊的空格字元 author 大風 在asp程式設計中,我們常常使用trim rtrim ltrim 函式去掉一些資料的開頭和結尾的空格,筆者最近寫了乙個asp聊天室,有下面的一段 dim name,title name trim request.form name password trim re...