乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      如何使PHP文件與HTML代碼更好的分離?

       yliu277 2015-07-11

       大家都知道,php是一種服務(wù)器端的內(nèi)嵌html式的腳本編程語言.可是按照內(nèi)嵌html方式來作一網(wǎng)站的話,代碼很快就變得龐大而且不可控制.如何才能使php代碼與html分離,做出類似dw的lib(模板)而使得頁面更加容易修改并且代碼容易維護(hù)呢?

        后來,看了很多文章,說phplib可以實(shí)現(xiàn),隨手看了幾頁,覺得頭暈?zāi)X漲,頓時(shí)沒有了看下去的欲望(那位大蝦如果有此心得,敬請(qǐng)不吝賜教,先行謝過!).可是問題還得解決,在郁悶了多日之后,一次偶然機(jī)會(huì),得以下載vbb論壇的源碼,粗粗看過之后,發(fā)現(xiàn)除了php文件外,很少看見html碼.心想這不就是我想要的樣式嗎,看吧.依然頭暈?zāi)X漲:(,唯一的收獲是知道了它把html碼放在數(shù)據(jù)庫里,通過php文件調(diào)用,經(jīng)過一系列處理后,用eval函數(shù)將希望的變量帶入生成所需要的動(dòng)態(tài)頁.這樣,我就沒再看vbb源碼,而轉(zhuǎn)入eval函數(shù)了.php中文手冊(cè)是這樣介紹eval函數(shù)的:

        函式:eval()

        雜項(xiàng)函式庫

        eval

        將值代入字串之中。

        語法: void eval(string code_str);

        傳回值: 無

        函式種類: 資料處理

        內(nèi)容說明

        本函式可將字串之中的變數(shù)值代入,通常用在處理資料庫的資料上。參數(shù) code_str

        為欲處理的字串。值得注意的是待處理的字串要符合 PHP 的字串格式,同時(shí)在結(jié)尾

        處要有分號(hào)。使用本函式處理后的字串會(huì)沿續(xù)到 PHP 程式結(jié)束。

        使用范例

      <?php
      $string = '杯子';
      $name = '咖啡';
      $str = '這個(gè) $string 中裝有 $name.<br>';
      echo $str;
      eval( "$str = "$str";" );
      echo $str;
      ?>
      本例的傳回值為

        這個(gè) $string 中裝有 $name.

      這個(gè) 杯子 中裝有 咖啡.

        例子測(cè)試沒有任何問題.可是,當(dāng)我測(cè)試如下代碼時(shí),卻出現(xiàn)了錯(cuò)誤:

      <?
      $aa='my name is yyy!';
      $str='<input type="text" name="textfield" value="$aa">';
      eval( "$str = "$str";" );
      echo $str;
      ?>

        百思不得其解后,求救,在網(wǎng)友提出的一系列解決方案中,終于以這種方式運(yùn)行成功:

      <?
      $aa='my name is yyy!';
      $str='<input type="text" name="textfield" value="'$aa'">';
      eval( "$str = "$str";" );
      echo $str;
      ?>
      可是,當(dāng)我把$str 插入如下一個(gè)表中然后又提取出時(shí),又出錯(cuò)了,簡(jiǎn)直惱火

        死了.

        數(shù)據(jù)庫 evaltest

        # 表結(jié)構(gòu) 'envtest'

      CREATE TABLE envtest (
      id tinyint(4) NOT NULL auto_increment,
      sour mediumtext,
      PRIMARY KEY (id),
      UNIQUE id (id),
      KEY id_2 (id)
      );
      #表內(nèi)容 'envtest'

        INSERT INTO envtest VALUES( '1', '<input type="text" name="textfield" value="$aa">');

        php文件如下:

      <?
      $aa='my name is yyy!';
      $conn=mysql_connect('localhost','root','');
      $sele='select sour from envtest where id=1';
      $res=mysql_db_query('evaltest',$sele);
      $arra=mysql_fetch_array($res);
      $str=$arra['sour'];
      eval( "echo "$str";" );
      ?>
      再看看php中文手冊(cè),發(fā)現(xiàn)這么一句話:"待處理的字串要符合 PHP 的字串格式",什么叫"符合 PHP 的字串格式"(有誰知道,麻煩告訴一聲)?我不知道,也無從查找,只好看看字串處理函數(shù).發(fā)現(xiàn)htmlspecialchars()好像可用,于是試了一把:

      <?
      $aa='my name is yyy!';
      $conn=mysql_connect('localhost','root','');
      $sele='select sour from envtest where id=1';
      $res=mysql_db_query('evaltest',$sele);
      $arra=mysql_fetch_array($res);
      $str=htmlspecialchars($arra['sour']);
      eval( "echo "$str";" );
      ?>
      可是在頁面上顯示是這樣的:

        <input type="text" name="textfield" value="my name is yyy!">

        變量帶入成功,可顯示不符合要求.察看文件源碼,內(nèi)容如下:

        <input type="text" name="textfield" value="my &bsp name &bsp is yyy!">

        再看看手冊(cè)的htmlspecialchars()的用法,發(fā)現(xiàn)此函數(shù)對(duì)字串作了如下操作:

        & (和) 轉(zhuǎn)成 &

        " (雙引號(hào)) 轉(zhuǎn)成 "

        < (小于) 轉(zhuǎn)成 <

        > (大于) 轉(zhuǎn)成 >

        再查找,沒發(fā)現(xiàn)與此函數(shù)作用相反的函數(shù),于是,自己加了幾行代碼,再作如下調(diào)試,終于成功.

      <?php
      function dehtml($str){
      $str=str_replace('"','"',$str);
      $str=str_replace('<','<',$str);
      $str=str_replace('>','>',$str);
      $str=str_replace('&','&',$str);    
      return $str;
      } 
      $aa='my name is yyy!';
      $conn=mysql_connect('localhost','root','');
      $sele='select sour from envtest where id=1';
      $res=mysql_db_query('evaltest',$sele);
      $arra=mysql_fetch_array($res);
      $str=HTMLSpecialChars($arra['sour']);
      eval( "echo dehtml("$str");" );
      ?>
      在這個(gè)代碼調(diào)試成功后,我又把一個(gè)內(nèi)容復(fù)雜的html頁面的源碼加入一變量后插入到evaltest表中,


      再次測(cè)試,也成功了.

        有關(guān)eval函數(shù)用法里的"待處理的字串要符合 PHP 的字串格式",我想是經(jīng)過HTMLSpecialChars()函數(shù)處理過的字串吧,不知正確與否,有待方家斧正.

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多