php
  • html
  • textarea
  • 2012-03-23 63 views 0 likes 
    0

    我這是從以前的頁面展開了文本區域頁切斷所以:文本區,在引號

    echo "<form action='index.php' method='post'> 
    Your Post:<br/> 
    <textarea name='comments' cols='100' rows='100'>".$_GET["msg"]."</textarea> 
    <br/> 
    <input type=submit value='submit'> 
    </FORM>"; 
    

    我得到的問題是不是看起來「味精」的所有數據,以獲得通過跨越,或郵件獲取在它到達一個引號例如點切「

    我希望它填補這段文字textarea的文字:

    所以這是我的第二個博客帖子這個任務,我已經進步了一下,因爲我以前的帖子

    然而

    只添加這對文本區域這樣的:

    所以這是我的第二個博客帖子這個任務,我

    正如我說的,似乎不包含任何更多的字符串達到引號之後。反正有這個,所以我可以傳遞整個信息?

    編輯

    我要補充,我知道一個更爲簡單的解決辦法是從MySQL數據庫再次獲得消息,因爲這是我使用的是什麼,但我只是好奇,以這是如何工作的。

    if(isset($_POST['edit'])) { 
    //$_SESSION['postToEdit'] = $_POST['editPost']; 
    $message = htmlentities($_POST['editPost'], ENT_QUOTES); 
    header("location:editPost.php?msg=$message"); 
    

    這就是我做的數據一旦從這種形式發佈:

    foreach($posts as $postid=>$post) 
          { 
           echo '<div class="blogPosts">'.$post; 
           if(isset($_SESSION['username'])) { 
            if($_SESSION['isAdmin'] == "true") { 
    
             echo "<br/><br/><form name='adminTools' action='index.php' method='post'> 
             <input type='hidden' name='editPost' value='$post'> 
             <input type='submit' value='Edit' name='edit'/> 
             <input type='hidden' name='deletePost' value='$postid'> 
             <input type='submit' value='Delete' name='delete' /></form> 
             </div>"; 
    
    +0

    http://php.net/manual/en/function.htmlentities.php – 2012-03-23 02:12:46

    回答

    0

    我想想我明白了。

    header("location:editPost.php?msg=$message");沒有很好聞。

    如果你只是想解決這個問題使用http://php.net/manual/en/function.urlencode.php和所獲得的價值http://www.php.net/manual/en/function.urldecode.php

    你得到一個POST請求,然後用頭位置轉發它的時候。這絕對是一個糟糕的做法。當您將參數作爲查詢字符串傳遞給?msg=$message

    由於MVC和相似的應用程序(n層應用程序)現在是標準,因此可能會發生此問題。你不應該這樣做意粉代碼,混合HTML和PHP,並使用標題作爲你的FrontController調度器。

    我建議你使用例如SLIM框架。如果你不想學這個。您至少應遵循here所述的標準。

    E.g.:

    <?php 
    // index.php 
    
    // load and initialize any global libraries 
    require_once 'model.php'; 
    require_once 'controllers.php'; 
    
    // route the request internally 
    $uri = $_SERVER['REQUEST_URI']; 
    if ($uri == '/index.php') { 
        list_action(); 
    } elseif ($uri == '/index.php/show' && isset($_GET['id'])) { 
        show_action($_GET['id']); 
    } else { 
        header('Status: 404 Not Found'); 
        echo '<html><body><h1>Page Not Found</h1></body></html>'; 
    } 
    

    總之,創建一個FrontController文件,將映射到根據該請求所希望的動作(控制器),而無需使用header()以執行特定動作(例外的是僅當需要實際的標頭,其實)。

    +0

    謝謝你的回答,我知道框架可以使這種類型的網頁編碼更好,但是這是一個手動練習,必須手動編寫。你給出的答案實際上解決了我的問題是正確的:) – W0lf7 2012-03-23 09:41:35

    +0

    你仍然可以手動分離視圖,控制器和模型。就像我發佈的例子。一個框架,它不是必要的。事情是,你不應該使用'header()'來處理請求。 – 2012-03-23 22:03:33

    1
    echo "<form action='index.php' method='post'> 
    Your Post:<br/> 
    <textarea name='comments' cols='100' rows='100'>".htmlspecialchars($_GET["msg"])."</textarea> 
    <br/> 
    <input type=submit value='submit'> 
    </FORM>"; 
    

    textarea的似乎是它的一個奇怪的容器,但這是你的電話

    +0

    不幸的是,這似乎不工作,我張貼了更多來自我的頁面的代碼。 – W0lf7 2012-03-23 02:43:28

    -1

    在顯示查詢字符串和stripslashe($ _ GET ['msg'])函數之前,先使用addslashes($ message)。 點擊addslashes()stripslashes()以獲取更多參考。

    相關問題