Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,913

HOME > Client Script Forum > สอบถามวิธีกำหนดค่า HTML ที่ encode แล้วลงใน input หรือ textarea



 

สอบถามวิธีกำหนดค่า HTML ที่ encode แล้วลงใน input หรือ textarea

 



Topic : 134475



โพสกระทู้ ( 3,539 )
บทความ ( 8 )



สถานะออฟไลน์




ผมมีไฟล์บันทึกข้อมูลดังนี้
Code (PHP)
<?php
session_start();

if ($_POST) {
    // สำหรับบันทึก
    $name = htmlspecialchars(trim($_POST['name']), ENT_QUOTES);
    $_SESSION['name'] = $name;
    $output = [];
    $output['saved'] = true;
    $output['name'] = $name;
    
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($output);
    exit();
}


if (isset($_SESSION['name'])) {
    // สำหรับ ajax ดึงไปแสดง
    $name = $_SESSION['name'];
    $output = [];
    $output['name'] = $name;

    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($output);
    exit();
}

ชื่อไฟล์ save.php





อันนี้เป็นไฟล์ php สำหรับทดสอบทำงานปกติธรรมดาโดยยังไม่มี js ajax
Code (PHP)
<?php
session_start();

if ($_POST) {
    $name = htmlspecialchars(trim($_POST['name']), ENT_QUOTES);
    $_SESSION['name'] = $name;
    header('Location: test01.php', true, 302);
    exit();
}

if (isset($_SESSION['name'])) {
    $name = $_SESSION['name'];

    echo 'saved result: ' . $name . '<br>' . PHP_EOL;
}
?>
<form method="post" action="save.php">
    <input type="text" name="name" value="<?php if (isset($name)) {echo $name;} ?>" maxlength="50">
    <br>
    <button type="submit">Save</button>
</form>
<p>Normal php save/display.</p>

ชื่อไฟล์ test01.php

ไฟล์ข้างบนนี้ ถ้ากรอกชื่อลงไปว่า <p>p</p> แล้วบันทึกแล้ว reload มันก็จะแสดงออกมาใน input ถูกต้องเหมือนตอนที่พิมพ์เลย แต่ว่าเมื่อเป็น JS (ด้านล่าง)...





Code (JavaScript)
<div id="saved-result-text" style="display:none;">
    saved result: <span id="saved-result"></span>
</div>

<form id="saveForm" method="post">
    <input id="name" type="text" name="name" value="" maxlength="50">
    <br>
    <button type="submit" onclick="return ajaxSave();">Save</button>
</form>
<p>Normal JS save/display.</p>


<script>
    function ajaxSave() {
        let formData = new FormData(document.getElementById('saveForm'));
        let xhr = new XMLHttpRequest();

        xhr.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                let response = JSON.parse(this.response);
                if (response.saved === true) {
                    window.location.reload();
                }
            }
        };

        xhr.open('POST', 'save.php');
        xhr.send(formData);

        return false;
    }


    document.addEventListener('DOMContentLoaded', function() {
        let xhr = new XMLHttpRequest();

        xhr.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                let response = JSON.parse(this.response);
                if (response && response.name) {
                    document.getElementById('saved-result-text').style = '';
                    document.getElementById('saved-result').innerHTML = response.name;
                    document.getElementById('name').value = response.name;
                }
            }
        };

        xhr.open('GET', 'save.php');
        xhr.send();

        return false;
    }, false);
</script>

ชื่อไฟล์ test02.php
ไฟล์นี้ เมื่อบันทึกชื่อว่า <p>p</p> แล้ว reload ในช่อง input จะกลับกลายเป็น &lt;p&gt;p&lt;/p&gt; ซึ่งไม่ตรงตามตอนที่พิมพ์ลงไป
ทำยังไงให้มันแสดงผลให้ถูกต้องครับ?
มีวิธีอื่นนอกจาก decode มันไหม? เพราะรู้สึกใน php ไม่ต้องทำอะไรเลยตอนแสดงผล และการ decode มันจะเสี่ยงเกิดช่องโหว่ xss หรือไม่?



Tag : JavaScript, Ajax







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-11-07 10:50:51 By : mr.v View : 22 Reply : 0
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามวิธีกำหนดค่า HTML ที่ encode แล้วลงใน input หรือ textarea
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่