สอบถามผู้รู้ภาษา PHP เกี่ยวกับการใช้ค่า $_POST ใน Netฺbeans
Code (register.php)
<?php include './header.php';?>
<section>
<div>
<div>
<div class="col-sm-4">
<div class="signup-form"><!--sign up form-->
<h2>New User Sign Up</h2>
<form method="POST" action="register_process.php">
<input type="text" name="re[username]"required="required" placeholder="Username"/>
<input type="password" name="re[password]" required="required" placeholder="Password"/>
<input type="text" name="re[first_name]" required="required" placeholder="First Name"/>
<input type="text" name="re[last_name]" required="required" placeholder="Last Name"/>
<input type="text" name="re[email]" required="required" placeholder="E-mail"/>
<textarea cols="100" rows="5" name="re[address]" required="required" placeholder="Address"></textarea>
<button type="submit" class="btn btn-default">Sign Up</button>
</form>
</div><!--/sign up form-->
</div>
</div>
</div>
</section><!--/form-->
<?php include './footer.php';?>
Code (register_process.php)
<?php
include './connection.php';
$myre = $_POST['re'];
if(!empty($myre['username']) &&
!empty($myre['passwordl']) &&
!empty($myre['first_name']) &&
!empty($myre['last_name']) &&
!empty($myre['email']) &&
!empty($myre['address'])
){
$sql = "INSERT INTO users(username,password,user_level)
VALUES('".$myre['username']."',
'".md5($myre['password'])."',
'member')";
$result = mysql_query($sql) or die("Can not Register");
if($result){
$sql2 = "INSERT INTO user_details(user_id,first_name,last_name,email,address,created)
VALUES('".mysql_insert_id()."',
'".$myre['first_name']."',
'".$myre['last_name']."',
'".$myre['email']."',
'".$myre['address']."',
'".date("Y-m-d H:i:s")."')";
$result2 = mysql_query($sql2);
if($result2){
echo "Register Complete < a href='index.php'>Back to Index Page </a>";
}else{
echo "Can not Register Because, Failure to Register < a href='index.php'>Back to Register Page </a>";
}
}
}else{
echo "Can not Register Because, You are Register Fill in Missing < a href='index.php'>Back to Register Page</a>";
}
?>
เขียนใน Netฺbeans แล้ว ในบรรทัดที3 ของ register_process.php
$myre = $_POST['re']; เครื่องมือ(Netbeans)มันบอกว่า Do not Access Superglobal $_POST ให้ใช้ filter_input(),condition with is _() funtions,est
อยากรู้ว่ามันเป็น bug ของ Netbeans หรือครับ หรือว่าผมเขียน code ผิด เวลา ใส่ข้อมูลลงใน form register.php
มันจะขึ้นว่า echo "Can not Register Because, You are Register Fill in Missing < a href='index.php'>Back to Register Page</a>
ผมมั่นใจว่ามีคนสามารถตอบคำถามได้แน่ครับทีนี้เวบ์อันดับหนึ่งของคนไทยในตอนนี้มีคนเก่งทีสามารถตอบได้แน่ครับ พอดีผมมือใหม่หัดทำเวบ์น่ะครับถ้าอย่างไงก็ขอโทษด้วยน่ะครับTag : PHP
Date :
2016-01-25 17:46:40
By :
โคนัน
View :
2149
Reply :
7
ขอบคุณ คุณ v น่ะครับ ใจดีมากครับ 555 แล้วผมต้องเขียนอย่างไงดีครับ ถ้า $_POST ไม่ได้พอดีผมยังใหม่มากเลยครับ สงสัยจะแย่แน่เลยครับสำหรับผมนี้ คุณv ตั้งใจอธิบายแล้วผมยังไม่ค่อยเข้าใจเลยครับ อย่างไงก็ขอโทษคุณ v ด้วยน่ะครับ ขอบคุณนํ้าใจคุณ v น่ะครับผม
_/\_ ขอบคุณน่ะครับ
Date :
2016-01-27 03:26:48
By :
โคนัน
ที่มันแจ้งใน netbeans ถ้ามันไม่ไฮไลท์แดงๆแสดงว่ามันเตือนหรือแนะนำ ไม่ใช่ส่วนที่จะ error หรือใช้ไม่ได้อะไรหรอก
การตรวจสอบค่าที่รับจาก super global อย่าง $_POST, $_GET, $_FILE, $_COOKIE, $_SESSION อะไรพวกนี้ ให้เอามาตรวจสอบก่อนเอาไปใช้งาน โดยการตรวจสอบก็อยู่ที่คุณนั่นแหละครับ
สมมุติว่าคุณทำฟอร์มกรอกข้อมูล 1 ฟอร์ม มี input name (ชื่อ), phone (เบอร์โทร)
พอเป็นอย่างนี้แน่นอนว่าทั้ง name, phone จะต้องไม่มี html และ name เป็น string, phone เป็นตัวเลขอย่างเดียว. คุณก็ตรวจเอาเลยครับ
Code (PHP)
<?php
$name = '';
if (isset($_POST['name'])) {
$name = trim($_POST['name']);
}
$phone = '';
if (isset($_POST['phone'])) {
$phone = trim($_POST['phone']);
}
// start validate
if ($name == null) {
// ชื่อไม่ได้กรอก แสดง error ไป
echo 'กรุณากรอกชื่อ.';
exit;
}
if ($phone != null && !is_numeric($phone)) {
echo 'กรุณากรอกเบอร์โทรเป็นตัวเลขเท่านั้น.';
exit;
}
// re-format value. ฟอร์แมตค่าใหม่ให้ปลอดภัยในการเอาไปใช้
$name = htmlspecialchars($name);
คุณก็ลองทำความเข้าใจดูแล้วก็ออกแบบโค้ดที่ดีกว่านี้แล้วกัน ผมเขียนอย่างง่ายๆยกตัวอย่างเฉยๆ ไม่เหมาะกับเอาไปใช้จริงๆนะครับ
Date :
2016-01-27 23:13:24
By :
mr.v
_/\_ ขอบคุณน่ะครับ
$myre = filter_input(INPUT_POST,"re",FILTER_VALIDATE_E-MAIL);
ใช่ไหมครับ
echo "Can not Register Because, You are Register Fill in Missing < a href='index.php'>Back to Register Page</a>
ทำไหมมันยังอยุ่ล่ะครับผมขอโทษน่ะครับ
Date :
2016-01-28 01:01:04
By :
โคนั้น
เพิ่งเขาใจ 555 ขอบคุณคุณ Mr v น่ะครับ แอบบอกใบ้ให้ ผมรอ PHP 7 ในnetbeansน่ะครับ
Date :
2016-03-13 10:25:49
By :
โคนัน
Load balance : Server 02