ใช้คำสั่งสั่ง sleep แล้วหน้าเว็บต้องใช้เวลาโหลดตามเวลาของ sleep ต้องแก้ไขอย่างไรครับ
เขียนโปรแกรมยังไงเอามาดูครับ วาง flow control แบบไหนจะได้ช่วยแก้ไขให้ได้ เขียนแบบนี้ งง
คือไม่รู้จะเปิด relay ทำไม ลักษณะการทำงาน บน browser เป็นการ transfer ข้อมูลที่เป็น text แล้วมา complie html/javascript บน client
ถ้าข้อมูลมาไม่ครบ ยังไม่มีคำสั่ง ปิด connection มันก็จะยังไม่แสดงผล
Date :
2020-03-29 16:42:51
By :
Chaidhanan
ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2020-03-29 16:42:51
รายละเอียดของการตอบ ::
Code (PHP)
<!DOCTYPE html>
<html lang="en">
<head>
<meta name=”viewport” content=”initial-scale=2.0,width=device-width”/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap -->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
<title>Login by.devtai.com</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<?php
session_start();
include_once('raspi_connect.php');
if (isset($_POST['submit'])){
$email= $_POST['email'];
$password= $_POST['password'];
$sql = "SELECT * FROM `register` WHERE `email` = '".$email."'
AND `password`= '".$password."' AND `active` ='No' AND `status`='0' " ; // 0
$result=$conn->query($sql);
$row = $result->fetch_array();
$_SESSION['name']=$row['name'];
$_SESSION['email']=$row['email'];
$_SESSION['status']=$row['status'];
if($result->num_rows>0){
$sql = "SELECT * FROM `login2` WHERE `status` = '1' " ;
$result=$conn->query($sql);
if($result->num_rows>0){
echo 'มีผู้ใช้งานช่องนี้อยู่ กรุณาใช้อุปกรณ์ในช่องอื่น';
}else{
$strSQL = "UPDATE register SET status = '1' WHERE email = '".$email."' ";
$objResult=$conn->query($strSQL);
$sql = "INSERT INTO `login2` (`email`,`name`,`date_start`,`check_out`,`date_end`,`status`)
VALUES ('".$_SESSION['email']."','".$row['name']."','".date('Y-m-d H:i:s')."','0','".date('Y-m-d H:i:s',strtotime("+5 second"))."','1')";
$result=$conn->query($sql);
$Uid =mysqli_insert_id($conn);
$_SESSION['login_id']=$Uid;
header('location:page2.php');
}
}else{
echo 'กรุณาลงทะเบียน';
}}
?>
<div align="center">
<img src = "https://upload.wikimedia.org/wikipedia/th/6/62/KMUTNB-LOGO.jpg" width="120" height="120" vspace="10">
<style type="text/css">
#btn{
width:50%;
align="center">
}
</style>
<div class="container" style="padding-top:10px" >
<div class="row">
<div class="col-xs-12">
<div class="col-xs-12" style="background-color:#FFE4B5">
<h3 align="center">
<span class="glyphicon glyphicon-lock"> </span>
Login </h3>
<form name="form1" action="" method="POST" id="login" class="form-horizontal">
<div class="form-group">
<div class="col-xs-12">
<input type="email" name="email" class="form-control" required placeholder="Email" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<input type="text" name="password" class="form-control" required placeholder="Password" />
</div>
</div><div class="form-group">
<div class="form-group">
<div class="col-sm-12">
<button type="submit" class="btn btn-warning" id="btn" name="submit">
<span class="glyphicon glyphicon-log-in"> </span>
Login </button>
<div class="col-md-12">
<lable>
<a href="register.php"><font color="#FF6600" size=2 >register</a></font>
</label>
</div>
</div>
<div class="col-md-12">
<lable>
<a href="forget.php"><font color="#FF6600" size=2 >forget your password</a></font>
</label>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
[/quote-no
Code (PHP)
<?php
session_start();
include_once('raspi_connect.php');
$sql = "SELECT * FROM `register` WHERE `id` = '".$_SESSION['id']."' ";
$result=$conn->query($sql);
$row = $result->fetch_array();
$sql = "SELECT * FROM `login2` WHERE `login_id`= '".$_SESSION['login_id']."' ";
$result=$conn->query($sql);
$row2 = $result->fetch_array();
$Uid =mysqli_insert_id($conn);
?>
<html>
<head>
<title>page2</title>
<body >
<h1 align = 'center'><font color="#FF6600" size=200 face=" Impact"> Welcome</font>
</h1>
<h3 align = 'center' line-height: 1pt> คุณ <?php echo $row2['name'];?> ได้ยืมอุปกรณ์จากช่อง หมายเลข1</h3><br/>
<h3 align = 'center' line-height: 1pt> กรุณาคืนในวันที่ <?php echo $row2['date_end'];?></h3><br>
</body>
</body>
</head>
</html>
<?php
system("i2cset -y 1 0x20 0x00 0xFD");
system ("i2cset -y 1 0x20 0x12 0x02");
sleep(30);
system ("i2cset -y 1 0x20 0x12 0x00");
?>
Date :
2020-03-29 16:54:33
By :
1372589436224688
1 การใช้ html ควรใช้หลังจาก php ไม่ควร ใช้ก่อนคำสั่ง php เพราะคุณจะใช้ session_start ไม่ได้
2 เปิดการแสดง error ไว้ด้วย จะได้รู้ว่า error อะไรบ้าง (error เพียบ 55555555)
3 สิ่งที่ควรทำคือ จัด flow control ซะใหม่ให้มันเป็น ai มากขึ้น
ตรวจสอบช่องทางการ login ก่อน ถ้าไม่ว่างก็ควรจะ login ในช่องทางอื่น ให้ผู้ใช้เลย
ไม่ใช่ให้เขาไป login ช่องทางอื่น มันไม่ make sense
4 เปลี่ยน คำสั่งการ query จากการต่อ string ด้วย global variable ไปใช้ เครื่องมือของ mysqli
เช่นคำสั่ง prepare เพื่อป้องกัน sql injection
5 เมื่อใช้ คำสั่ง header เพื่อ redirect ควรใส่คำสั่ง exit; เพื่อจบโปรแกรม ณจุดนั้น
6 ศึกษาโปรแกรมที่ใช้เขียนร่วมกันให้ดีด้วย style css ที่เขียนมันไม่ถูกไวยกรณ์ หรือก๊อปปี้มาก็อ่านและใช้ให้ถูก
<style type="text/css">
#btn{
width:50%;
align="center">
}
</style>
//----------------------------------------------------------
ตัวอย่างการเขียน ที่ปลอดภัย และถูก algorithm
Code (PHP)
<?php
session_start();
include_once('raspi_connect.php');
$msg='';
if (isset($_POST['submit'])){
$sql = "SELECT * FROM `login2` WHERE `status` = '1' " ;
$result=$conn->query($sql);
if($result->num_rows>0){
$msg='มีผู้ใช้งานช่องนี้อยู่ กรุณาใช้อุปกรณ์ในช่องอื่น';
// ตรงนี้ จะให้เขา login ช่องทางไหนก็กำหนดไป ไม่ใช่ให้เขาเลือก
}else{
$email= $_POST['email'];
$password= $_POST['password'];
$sql = "SELECT * FROM `register` WHERE `email` = ? AND `password`= ? AND `active` ='No' AND `status`='0' " ; // 0
$stmt = $conn->prepare($sql);
$stmt->bind_param('ss',$email,$password);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows>0){
$row = $result->fetch_object();
$stmt1 = $conn->prepare('UPDATE register SET status = '1' WHERE email = ?');
$stmt1->bind_param('s',$email); $stmt->execute(); $stmt1->close();
$sql = "INSERT INTO `login2`
(`email`,`name`,`date_start`,`check_out`,`date_end`,`status`)
VALUES (?,?,?,0,?,1)";
$stmt1 = $conn->prepare($sql);
$stmt1->bind_param('',$row->email,$row->name,date('Y-m-d H:i:s'),date('Y-m-d H:i:s',time()+5));
$stmt1->execute();
$row->login_id=$stmt1->insert_id;
$_SESSION['login']=json_encode($row);
// เปลี่ยนการกำหนด session โดยใช้ หลายตัวแปรในการเก็บ
// ให้เก็บเป็น ก้อน object เวลานำมาใช้ ก็ decode ออกมาเป็น object
header('location:page2.php');
exit; // หลัง redirect ควรจบโปรแกรม ณ ตรงนี้ ไม่ต้องปล่อยให้ทำงานต่อไปอีก
}else{
$msg='กรุณาลงทะเบียน';
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta name=”viewport” content=”initial-scale=2.0,width=device-width”/>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap -->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css"
integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
<title>Login by.devtai.com</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<style type="text/css">
#btn{ width:50%; align: center; }
</style>
</head>
<body>
<?=($msg>''? $msg : '')?>
<div align="center">
<img src = "https://upload.wikimedia.org/wikipedia/th/6/62/KMUTNB-LOGO.jpg" width="120" height="120" vspace="10">
<div class="container" style="padding-top:10px" >
<div class="row">
<div class="col-xs-12">
<div class="col-xs-12" style="background-color:#FFE4B5">
<h3 align="center">
<span class="glyphicon glyphicon-lock"></span> Login
</h3>
<form name="form1" action="" method="POST" id="login" class="form-horizontal">
<div class="form-group">
<div class="col-xs-12">
<input type="email" name="email" class="form-control" required placeholder="Email" />
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<input type="text" name="password" class="form-control" required placeholder="Password" />
</div>
</div>
<div class="form-group">
<div class="form-group">
<div class="col-sm-12">
<button type="submit" class="btn btn-warning" id="btn" name="submit">
<span class="glyphicon glyphicon-log-in"> </span> Login
</button>
<div class="col-md-12">
<lable><a href="register.php"><font color="#FF6600" size=2 >register</a></font></label>
</div>
</div>
<div class="col-md-12">
<lable><a href="forget.php"><font color="#FF6600" size=2 >forget your password</a></font></label>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
และตรงไหน มันการ relay ยังไม่เห็นเลย หรือใช้ศัพท์ผิด redirect
ส่วนไฟล์ page2.php ลองศึกษาจากตัวอย่าง และเขียนเองดู มันไม่น่าจะยาก
ประวัติการแก้ไข 2020-03-29 20:09:05
Date :
2020-03-29 20:05:53
By :
Chaidhanan
Load balance : Server 02