關於PHP的PHP SELF的問題

時間 2021-05-23 04:08:11

1樓:陽光上的橋

有時候$php_self確實沒有定義,這個與ini設定有關,用下面的語句肯定能解決問題:

<?php

echo <<

end;

?>

2樓:匿名使用者

以上說的是更改伺服器的方法,也可以在php第一行加以下**,同樣可以遮蔽本頁的notice

<?

error_reporting(e_all ^ e_notice);

//////

?>

3樓:匿名使用者

在前面加上

$php_self = $_server['php_self'] ? $_server['php_self'] : $_server['script_name'];

這個是 discuz! 裡面定義 $php_self 裡面的**

4樓:人稱赫哥

$php_self 表示當前的php檔案

這是php的幾個系統的變數 比如你的a.php檔案在 /www/g/f/

那麼如果你只是 echo $php_self 那麼就會得到 /www/g/f/a.php

另外php這樣系統函式還有不少 比如 $remote_addr 表示獲取客戶端的ip

這些東西在 phpinfo()中都可以看到

注意這裡這些字母都是大寫的

你說的下面那個問題是由於那個offset變數的值影響到了 內部的sql語句

打個比方說 裡面的**是這樣寫的

$sql="select * from table"

if($offset) $sql=$sql."order by ".$offset; //如果offset有值那麼就按照$offset的欄位名排序

當offset為0時 用預設的排序

這裡比如你的表中有乙個name欄位 你在超連結中可以這樣下 ?offset=name

但是當人為的輸入了 offset=asd的時候 滿足$offset 不為空的條件 所以真個sql就變成了 select * from table order by asd

因為asd 欄位在資料庫中沒有 所以這個時候就會出現sql執行的錯誤提示

當然這種提示會暴露出一些錯誤 這方便在除錯的時候檢查**

但是也帶來了一定的安全隱患 所以php**在執行的時候你可以選擇兩種處理錯誤的的方式

一是:在函式前加上@符號可以完全遮蔽程式輸出的錯誤

二是:使用or die 比如很常見的 在mysql的連線函式

mysql_connect("localhost","root","") or die("無法連線到資料庫伺服器")

所以你上面的問題就是只要你找到那個mysql_fetch_row(...)改為@mysql_fetch_row(...) 或者在後面加上 or die("所提供的查詢結果不是乙個有效的mysql返回結果")

我也是乙個php愛好者 大家共同學習共同進步

關於php判斷當月開始和結束的時間戳的問題

沒必要自己判斷,系統有讀取本月天數的函式date t 這個要是不對,你砍我!除錯過!y date y time m date m time d date d time t0 date t 本月一共有幾天 t1 mktime 0,0,0,m,1,y 建立本月開始時間 t2 mktime 23,59,5...

php簡單echo問題,乙個簡單的php問題,如何清除輸出?

加個判斷好了 temp foreach user as k v temp v echo v 如果上一次迴圈輸出的登入名和這次迴圈的登入名相等就跳過這次迴圈,進行下一次迴圈。否則儲存本次迴圈的登入名到中間變數 temp中,並輸出登入名。temp 用於儲存上一次輸出的登入名。continue 的作用是結...

關於php中雙引號的巢狀,關於PHP中雙引號的巢狀

echo 這個語句是顯示字串和變數內容相疊加的一種寫法。echo 這個雙引號是php程式直接認定的 php 這句話在html中列印完成的樣子是 因為在php中採用了雙引號做字串的引號,那麼其中想輸出雙引號,就要使用 的方式,這樣,這個雙引號就被php認為是字串,而非php功能性的引號了。當然,還有很...