Mon 16 Oct 2006 09:58:10
สวัสดีครับ
มีเรื่องรบกวนอีกแล้วครับ โปรแกรมข้างล่างนี้ เป็นเป็นการเช็คว่าถ้าไม่เป็น member ให้แสดงในส่วนที่เป็น Email ว่า member only แต่ถ้าเป็น member แล้ว จะแสดง email ของบริษัทต่างๆให้เห็น
<?session_start()?>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<center>
<?
$pagelen = 10 ;
$_GET["page"] = $_REQUEST['page'];
if (empty($_GET["page"] )) { $_GET["page"] =1; }
$link=mysql_connect("localhost","root","");
if(!$link)
{
print("Error");
}
else
{
mysql_select_db("company",$link);
$sql = "SELECT company, country, email1 from company WHERE UCASE(SUBSTRING(company, 1, 1)) = '".$_GET["alphabet"]."'";
$res=mysql_query($sql,$link);
$num_rows=mysql_num_rows($res);
$totalpage = ceil($num_rows / $pagelen);
$goto = ($_GET["page"] -1) * $pagelen;
$sql = "SELECT company, country, email1 from company WHERE UCASE(SUBSTRING(company, 1, 1)) = '".$_GET["alphabet"]."'LIMIT $goto, $pagelen";
$res = mysql_query( $sql,$link );
echo"<table border=1 cellpadding=3 cellspacing=0>";
echo"<tr><td><font color='#8B0000' face='verdana' size='1'><center><b>Company</b></center></font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'><center><b>Country</b></center></font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'><center><b>Email</b></center></font></td></tr>";
while($row=mysql_fetch_array($res,MYSQL_ASSOC))
{
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>".$row["company"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".$row["country"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".((isset($_SESSION["active"])&&$_SESSION["active"]="ok")?$row["email1"]:"Member only")."</font></td></tr>";
}
echo "</table>";
if ($_GET["page"] > 1) {
$back = $_GET["page"] - 1;
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."\"><img src=\"first.gif\" border=\"0\" align=\"absmiddle\" alt=\"First\"></a>\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."=".$back."\"><img src=\"previous.gif\" border=\"0\" align=\"absmiddle\" alt=\"Previous\"></a>";
}
for($i=1 ; $i<=$totalpage ; $i++) {
if ($i == $_GET["page"] ) {
echo " [<b><font size =+1 color=#990000>$i</font></b>] \n";
} else {
echo " <a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."\">".$i."</a>";
}
}
if ($_GET["page"] < $totalpage) {
$next = $_GET["page"] +1;
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."=".$next."\"><img src=\"next.gif\" border=\"0\" align=\"absmiddle\" alt=\"Next\"></a>";
echo " <a href=\"$PHP_SELF?page=".$totalpage."\"><img src=\"last.gif\" border=\"0\" align=\"absmiddle\" alt=\"Last\"></a> \n";
}
}
?>
นอกจากสิทธิ์ของ member ที่จะเห็น email ของบริษัทต่างๆแล้ว สิทธิ์ของ member อีกอย่างหนึ่งได้แก่ การที่สามารถ click ที่ชื่อ company แล้วสามารถเห็นรายละเอียดของบริษัทนี้ๆได้ ได้แก่ ชื่อบริษัท, บุคคลที่สามารถติดต่อได้, ที่อยู่บริษัท, รายละเอียดสินค้าและกลุ่มสินค้า ซึ่งส่วนของ code โปรแกรมที่จะนำมาเขียนเพิ่มได้แก่ ส่วนที่เป็นตัวหนังสือสีแดง
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>".$row["company"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".$row["country"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".((isset($_SESSION["active"])&&$_SESSION["active"]="ok")?$row["email1"]:"Member only")."</font></td></tr>";
ซึ่งผมคิดว่าจะต้องเขียนในส่วนของ company ให้เหมือนกับส่วนของ email ดังนี้
echo"<td><font color='#8B0000' face='verdana' size='1'>".((isset($_SESSION["active"])&&$_SESSION["active"]="ok")?$row["company"]:"Member only")."</font></td>
ปัญหาคือ
ผมไม่อยากให้โชว์เป็น Member only ผมอยากให้คนที่ไม่ใช่ member click ที่ชื่อบริษัทแล้ว ขึ้น pop up ขึ้นมาบอกว่า
"Member only Please enter your
user name_____________
and password______________"
เมื่อใส่ username และ password แล้ว ก็จะเข้าสู่ระบบ member
เพราะฉะนั้นสิ่งที่ผมต้องเขียนมี 2 ส่วนได้แก่
ส่วนที่ 1 ส่วนที่เป็น pop up ว่าให้ใส่ username และ password
ส่วนที่ 2 เมื่อ member ใส่ username และ password แล้ว กลับมา click ที่ชื่อบริษัทจะ link ไปดูรายละเอียดของบริษัทนี้ได้
คิดได้แต่เขียนไม่ได้ คิดมาทั้งคืนแล้วครับ ผมคิดว่า จะต้องนำโปรแกรม
1. ส่วนที่เป็น pop up จะต้องเขียนดังนี้
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.product.value == "0"){
alert("Member only, please fill your username and password");
obj.product.focus();
return false;
}
return true;
}
</script>
ผมกำลังคิดแก้ในส่วนของ pop up ข้างบนนี้ แต่ไม่ทราบในส่วนของ object ว่าจะเขียนอย่างไร? คือกำลังสับสนว่าจะเขียนอย่างไร
ช่วยแนะนำด้วยครับ
อนันต์
window //เป็น browser window object
|- document //เป็นเอกสารต่างๆที่ถูกโหลดขึ้นมาแสดงผล
|- form //เป็น form ต่างๆที่วางอยู่บน document
|- input //เป็น object ของ input สามารถอ้างโดยชื่อ (name) ของ object นั้นๆ
|- value //เป็น property ของแต่ละ input object ที่เก็บค่าที่แสดงอยู่ของ input object
|- ฯลฯ
|- id //เป็น object ชนิดใดๆที่มีการ define identity ที่วางอยู่บน document
|- applet //เป็น object ของ java applet
|- anchor //เป็น object ของ link (<a> tag)
|- frame //เป็น object ของ frame window บน document
|- image //เป็น object ของ image (<img> tag)
|- ฯลฯ
ดังนั้นจาก โค๊ดเช่น
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username");
obj.username.focus();
return false;
}
return true;
}
</script>
<form action="" onsubmit="return validate(this)">
<input type="text" name="username"><input type="submit" value="submit">
</form>
เมื่อมีการ submit form จะเกิด evet onsubmit กับ form object โดยโค๊ดนี้มีการ handle event ไว้โดยให้นำค่าที่ return จาก function validate มาใช้งานโดยพร้อมกันนั้นก็ส่ง object ของตัว form เองไปเป็น parameter ด้วย (โดยใช้ keyword "this")
การทำงานของ function เมื่อรับค่า parameter มาจะถูก alias เป็นชื่อ object ใน function ก็มีการตรวจสอบว่าภายใน object นั้นๆมี object ที่ชื่อ username มีค่าเป็น "" หรือไม่ ถ้าใช่ก็ให้ alert
จากนั้นก็ให้มีการ focus บน object ที่ชื่อ username นั้นแล้วคืนค่ามาเป็น false ส่วนถ้า object ที่ชื่อ username นั้นๆ ไม่มีค่าเป็น "" ก็จะคืนค่าเป็น true
object form จะรับค่าที่ return มาแล้วตรวจสอบว่าเป็น false หรือไม่ ถ้าเป็น false ก็จะไม่มีการส่งค่าไปยังเอกสารที่ระบุไว้ใน action attribute
ถ้าคุณส่งค่าตามตัวอย่างใน function นั้นๆสามารถอ้างถึงชื่อ input ใดๆบน form ได้เลยครับ เช่น
ถ้ามี input ชื่อ password ก็สามารถอ้างถึง object โดย obj.password ได้ทันทีส่วนถ้าต้องการค่าของ object ก็จะได้เป็น obj.password.value
มองว่า input แต่ละตัวที่วางอยู่บน form นั้นๆเหมือน form เป็นกล่องโดยในกล่องเก็บ input แต่ละตัวไว้ และใน input แต่ละตัวก็ยังมีคุณสมบัติของตัวมันเอง เป็นหลักการของ OOP ครับ
Mon 16 Oct 2006 23:46:36
ขอบคุณครับ ที่กรุณาแนะนำ
ดังนั้นการเขียนให้ pop up ขึ้นมาทั้ง username และ password จะเป็นอย่างนี้ใช่ไหมครับ
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username and password.");
obj.username.focus();
return false;
}
else if{obj.password.value==""){
alert("Please fill your username and password.");
obj.password.focus();
return false;
}
return true;
}
</script>
<form action="member_login.txt" onsubmit="return validate(this)">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
ผมเอา code ข้างบนนี้ไปใส่ในโปรแกรมข้างล่างนี้ใช่ไหมครับ?
<?session_start()?>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
<center>
<?
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username and password.");
obj.username.focus();
return false;
}
else if{obj.password.value==""){
alert("Please fill your username and password.");
obj.password.focus();
return false;
}
return true;
}
</script>
<form action="member_login.txt" onsubmit="return validate(this)">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
$pagelen = 10 ;
$_GET["page"] = $_REQUEST['page'];
if (empty($_GET["page"] )) { $_GET["page"] =1; }
$link=mysql_connect("localhost","root","");
if(!$link)
{
print("Error");
}
else
{
mysql_select_db("company",$link);
$sql = "SELECT company, country, email1 from company WHERE UCASE(SUBSTRING(company, 1, 1)) = '".$_GET["alphabet"]."'";
$res=mysql_query($sql,$link);
$num_rows=mysql_num_rows($res);
$totalpage = ceil($num_rows / $pagelen);
$goto = ($_GET["page"] -1) * $pagelen;
$sql = "SELECT company, country, email1 from company WHERE UCASE(SUBSTRING(company, 1, 1)) = '".$_GET["alphabet"]."'LIMIT $goto, $pagelen";
$res = mysql_query( $sql,$link );
echo"<table border=1 cellpadding=3 cellspacing=0>";
echo"<tr><td><font color='#8B0000' face='verdana' size='1'><center><b>Company</b></center></font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'><center><b>Country</b></center></font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'><center><b>Email</b></center></font></td></tr>";
while($row=mysql_fetch_array($res,MYSQL_ASSOC))
{
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>".$row["company"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".$row["country"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".((isset($_SESSION["active"])&&$_SESSION["active"]="ok")?$row["email1"]:"Member only")."</font></td></tr>";
}
echo "</table>";
if ($_GET["page"] > 1) {
$back = $_GET["page"] - 1;
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."\"><img src=\"first.gif\" border=\"0\" align=\"absmiddle\" alt=\"First\"></a>\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."=".$back."\"><img src=\"previous.gif\" border=\"0\" align=\"absmiddle\" alt=\"Previous\"></a>";
}
for($i=1 ; $i<=$totalpage ; $i++) {
if ($i == $_GET["page"] ) {
echo " [<b><font size =+1 color=#990000>$i</font></b>] \n";
} else {
echo " <a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."\">".$i."</a>";
}
}
if ($_GET["page"] < $totalpage) {
$next = $_GET["page"] +1;
echo "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&alphabet=".$_GET["alphabet"]."=".$next."\"><img src=\"next.gif\" border=\"0\" align=\"absmiddle\" alt=\"Next\"></a>";
echo " <a href=\"$PHP_SELF?page=".$totalpage."\"><img src=\"last.gif\" border=\"0\" align=\"absmiddle\" alt=\"Last\"></a> \n";
}
}
?>
ผมขอสอบถามว่าแล้วผมจะเขียนบรรทัดนี้อย่างไรครับ
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>".$row["company"]."</font></td>";
คือ ชื่อบริษัทนั้นยังแสดงอยู่ แต่เมื่อใดที่คนที่เข้ามาแล้วมา click ที่ชื่อบริษัท ถ้า
1. เป็น member ที่ ใส่ username และ password แล้ว สามารถ click เข้าไปดูรายละเอียดของบริษัทนั้นได้เลย
2. ไม่เป็น member ถ้า click แล้ว จะ pop up ขึ้นมา
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username and password.");
obj.username.focus();
return false;
}
else if{obj.password.value==""){
alert("Please fill your username and password.");
obj.password.focus();
return false;
}
return true;
}
</script>
<form action="member_login.txt" onsubmit="return validate(this)">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
ขอคำแนะนำด้วยครับ
อนันต์
Tue 17 Oct 2006 23:23:03
สวัสดีครับ
รบกวนช่วยตอบกระทู้นี้ด้วยนะครับ
อนันต์
<a href="javascript:;" onclick="window.open('popup.php', 'pw', 'width=250,height=150,toolbars=no,status=no');">Company name</a>
เป็น a link ธรรมดาครับ โดยผมใส่ javascript:; เพื่อให้ไม่เกิดการลิงค์ขึ้น มีค่าเท่ากับ javascript:void();
โดยผม handle event onclick ไว้เมื่อมีการ click ที่ object นี้ก็จะทำงาน script ภายใน
window.open() เป็นฟังก์ชั่นเพื่อเปิด window ขึ้นมาใหม่ครับ โดยมี parameter ที่จำเป็นคือ
1. เอกสารที่ต้องการให้แสดงผลในหน้าที่เปิดขึ้น ในที่นี้ผมต้องการให้เปิดเอกสารชื่อ popup.php
2. ชื่อหน้าต่างที่เปิดขึ้นมา ในที่นี้ผมให้ชื่อว่า pw
ส่วน parameter ที่ 3 เป็น option ในการแสดงผลครับ option ที่สำคัญก็
width เป็นความกว้างของหน้าต่างที่เปิดขึ้น
height เป็นความสูงของหน้าต่างที่เปิดขึ้น
toolbars เป็น flag เพื่อบอกว่าต้องการให้มี toolbar ในหน้าต่างที่เปิดขึ้นหรือไม่
status เป็น flag เพื่อบอกว่าต้องการให้มี status bar ในหน้าต่างใหม่หรือไม่
ยังมี option อีกมากครับเพื่อ customize window แต่ที่ใช้งานบ่อยๆก็มีเท่านี้ครับ
ดังนั้นการ popup เพื่อให้ใส่ username และ password นั้นก็ต้องสร้างเอกสารใหม่เพื่อใช้แสดง form ให้ใส่ username และ password เมื่อ submit ก็ให้ทำการตรวจสอบ username และ password ซึ่งถ้าข้อมูลถูกต้องก็ให้ทำการปิดหน้าต่างโดยใส่
<script language="javascript" type="text/javascript">
window.close();
</script>
ในส่วนท้ายของเอกสาร เพื่อให้เกิดการผิดหน้าต่างที่ pop up ขึ้นมาโดยอัตโนมัติครับ
Wed 18 Oct 2006 01:33:30
ขอบคุณครับ สำหรับคำแนะนำ ผมมี 4 คำถามดังนี้ครับ
1. ลิงค์ที่คุณให้มา ผมนำมาใส่ใน code ดังนี้
while($row=mysql_fetch_array($res,MYSQL_ASSOC))
{
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>
<a href="javascript:;" onclick="window.open('popup.php', 'pw', 'width=250,height=150,toolbars=no,status=no');">
".$row["company"]."</a></font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".$row["country"]."</font></td>";
echo"<td><font color='#8B0000' face='verdana' size='1'>".((isset($_SESSION["active"])&&$_SESSION["active"]="ok")?$row["email1"]:"Member only")."</font></td></tr>";
}
echo "</table>";
ปรากฎว่าเกิด error ดังนี้ครับ
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in c:appservwwwmainindexindex_search1.php on line 38
2. ลิงค์ที่คุณให้มานี้หมายถึงว่า เมื่อ click แล้ว จะ pop up ขึ้นมาให้ใส่ username และ password ซึ่งหมายถึงว่าคนที่เข้ามา click นั้น ยังไม่ได้ใส่ username กับ password มาก่อน แต่กรณีที่ member นั้น ได้ใส่ username กับ password มาเรียบร้อยแล้ว ถ้าเข้ามา click แล้ว pop up นี้จะไม่เกิดขึ้น จะสามารถ click link เพื่อเข้าไปดูรายละเอียดของบริษัทนั้นๆ ได้เลย สรุป จะมี user 2 ประเภท
ประเภทที่ 1 user ที่ได้ key username และ password มาก่อนแล้ว แล้วเข้ามา click company ซึ่งจะต้องมี link เพื่อเข้าไปดูรายละเอียดของบริษัทนั้นๆได้เลย
ประเภทที่ 2 user ที่ยังไม่ได้ key username และ password มาก่อน แล้วเข้ามา click company ซึ่งจะมี pop up เกิดขึ้น เพื่อให้ใส่ username และ password เมื่อใส่เสร็จแล้ว ถึงจะสามารถเข้าไปดูรายละเอียดของบริษัทนั้นๆได้
ซึ่งผมคิดว่าอาจจะต้องเขียนประมาณนี้ได้ไหมครับ
echo"<td><font color='#8B0000' face='verdana' size='1'>".((isset($_SESSION["active"])&&$_SESSION["active"]="ok")?a href="javascript:;" onclick="window.open('popup.php', 'pw', 'width=250,height=150,toolbars=no,status=no');">$row["company"];"</a></font></td></tr>";
}
3. เอกสารที่ชื่อ popup.php นั้น เป็น form ที่เขียนออกมาต่างหากใช่ไหมครับ
file popup.php
<form action="member_login.txt" onsubmit="return validate(this)">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
4. แล้วในส่วนของ code โปรแกรมนี้
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username and password.");
obj.username.focus();
return false;
}
else if{obj.password.value==""){
alert("Please fill your username and password.");
obj.password.focus();
return false;
}
return true;
}
</script>
ผมนำไปใส่ไว้ด้านบนของโปรแกรมนั้นถูกต้องไหมครับ และเขียนถูกหรือเปล่าครับ ขอคำแนะนำด้วยครับ อนันต์
ผมนำไปใส่ไว้ด้านบนของโปรแกรมนั้นถูกต้องไหมครับ และเขียนถูกหรือเปล่าครับ
ขอคำแนะนำด้วยครับ
อนันต์
echo"<tr><td><font color='#8B0000' face='verdana' size='1'><a href=\"javascript:;\" onclick=\"window.open('popup.php', 'pw', 'width=250,height=150,toolbars=no,status=no');\">".$row["company"]."</a></font></td>";
2. การที่ต้องการให้ไฟล์ที่ popup นั้นเป็นไฟล์ที่แสดงข้อมูลรายละเอียด แต่ถ้ายังไม่ login ก็ให้แสดงฟอร์ม login นั้นก็มีวิธีง่ายๆครับ คุณก็ทำการ popup ไฟล์ที่ต้องการแสดงรายละเอียด โดยในส่วนบนของไฟล์ที่ใช้แสดงรายละเอียดก็ ใส่
if(condition ในการตรวจสอบไม่ login){
header("Location: login.php");
}
เท่านี้เมื่อยังไม่มีการ login ก็จะถูก redirect บังคับให้ login ก่อนครับ
3-4 ทั้งหมดนี้ต้องอยู่ในไฟล์ที่ใช้แสดงฟอร์ม login ครับ
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username and password.");
obj.username.focus();
return false;
}
else if{obj.password.value==""){
alert("Please fill your username and password.");
obj.password.focus();
return false;
}
return true;
}
</script>
<form action="member_login.txt" onsubmit="return validate(this)">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="submit">
</form>
Wed 18 Oct 2006 16:26:25
ขอบคุณครับ สำหรับคำแนะนำ
ผมขอลำดับขั้นตอนดังนี้ครับ
กรณี user ที่ไม่ได้ login
1. เริ่มจาก code program นี้
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>
<a href=\"javascript:;\" onclick=\"window.open('popup_company.php', 'pw', 'width=250,height=150,toolbars=no,status=no');\">
".$row["company"]."</a></font></td>";
เมื่อ user click ที่ ชื่อ company โปรแกรมจะ link ไปที่ file popup_company.php ดังนี้
popup_company.php
<?
if($username=="" && $password==""){
header("Location: popup_login.php");
}
Company:<br>
Contact person:<br>
Address:<br>
Country:
?>
ซึ่งใน file นี้จะเช็คว่า user นี้ login แล้วหรือยัง ถ้ายังให้ตรงไปที่ file popup_login.php ผมมีคำถามดังนี้ครับ
1. เงื่อนไขที่บอกว่า ถ้า user ยังไม่ได้ login นั้น กับที่ผมเขียนว่า
<?
if($username=="" && $password==""){
header("Location: popup_login.php");
}
ผมคิดว่าไม่น่าใช่ เพราะที่ผมเขียนนั้นหมายถึงว่า username และ password นั้นเป็นช่องว่าง แล้วการเขียนว่ายังไม่ได้ login นั้นเขียนอย่างไรครับ ช่วยแนะนำด้วยครับ
2. ถ้ายังไม่ได้ login แล้ว redirect ไปยัง file popup_login.php ซึ่งเขียนดังนี้
popup_login.php
<script language="javascript" type="text/javascript">
function validate(obj){
if(obj.username.value == ""){
alert("Please fill your username and password.");
obj.username.focus();
return false;
}
else if{obj.password.value==""){
alert("Please fill your username and password.");
obj.password.focus();
return false;
}
return true;
}
</script>
<font color='#8B0000' face='verdana' size='1'><b>Company information</b> Please fill your username and password.</font>
<form action="login.php" onsubmit="return validate(this)">
<table>
<tr><td><font color="#000000" face="verdana" size="1"><b>Username</b></font></td>
<td><input type="text" name="username" size="20"></td></tr>
<tr><td><font color="#000000" face="verdana" size="1"><b>Password</b></font></td>
<td><input type="password" name="password" size="20"></td></tr>
<tr><td></td><td align="center"><input type="submit" value="submit"></td>
</form>
3. เมื่อ user ได้ key ใส่ username และ password แล้ว form จะส่งไปที่ login.php ซึ่งเขียนดังนี้
login.php
<?
if($_POST["usn"] !=" " && $_POST["psw"] != " ")
{
$link=mysql_connect("localhost", "root", "");
mysql_select_db("member", $link);
$sql="select email1 from member where username='$username' and password='$password'";
$result=mysql_query($sql,$link);
$row=mysql_num_rows($result);
if($row>=1)
{
session_start();
session_register("active");
session_register("username");
$_SESSION["active"]="ok";
$_SESSION["username"]=$username;
print("Welcome member to our website");
}
else
print("Error login");
}
?>
4. เมื่อ user ใส่ username และ password ถูกต้องแล้ว โปรแกรมจะขึ้นว่า "Welcome member to our website" ซึ่งหลังจากนี้แล้วปรกติที่เขียน web กัน จะทำยังไงกันครับ จะ reboot หน้าเว็บใหม่ หรือทำอย่างไร? เพื่อ user จะได้สามารถทำธุรกรรมบนหน้าเว็บเราต่อได้เลย
รบกวนขอคำแนะนำด้วยครับ
$_SESSION["username"] = $username;
ดังนั้นในเวลาผมเช็คว่า login หรือยัง ผมก็ต้องใช้ว่า
if(!isset($_SESSION["active"]) || $_SESSION["active"] != "ok" || !isset($_SESSION["username"]) || $_SESSION["username"] == ""){
header("Location: popup_login.php");
}
เนื่องจากเทคนิคในการสร้างความปลอดภัยให้ระบบไม่เหมือนกัน ใน if condition ผมจึงใส่คำว่า "condition ในการตรวจสอบไม่ login" ครับ
ในส่วนของไฟล์ login.php นั้นถ้าใน form คุณใช้ชื่อ textbox เป็น username และ password ในการรับค่าในไฟล์ login.php ก็ต้องเปลี่ยนเป็น $_POST["username"] และ $_POST["password"] ด้วยครับ
การที่ login แล้วจะให้เป็นอย่างไรนั้นขึ้นอยู่กับว่า policy ของแต่ละโปรแกรมครับ ในส่วนของคุณนั้น ที่ popup ถ้า login แล้วก็จะให้มีการแสดงรายละเอียดของบริษัทที่เลือกทันที ดังนั้นความเห็นส่วนตัวแล้วถ้าหลังจาก popup เพื่อให้ login แล้ว ถ้า login ผ่านก็ควร redirect หน้าที่ login ไปยังหน้าที่แสดงผลตามที่ควรจะเป็นในกรณีที่ user นั้นๆ login แล้วครับ
Wed 18 Oct 2006 23:35:35
สวัสดีและขอบคุณมากครับ
ตอนนี้ผมมีปัญหาอยู่ 2 เรื่องได้แก่
เรื่องที่ 1 เมื่อ user ใส่ username และ password แล้ว เมื่อ click ที่ชื่อบริษัทอีกครั้ง ปรากฎว่าไม่ไปที่ file popup_company.php แต่กลับมาที่ file popup_login.php คือให้ใส่ username และ password ใหม่อีก ขั้นตอนเป็นดังนี้
- เมื่อ user ยังไม่ได้ login หน้าเว็บจะแสดงดังนี้ครับ
[1] 2 3 4 5 6 7 8 9 10 11 12
A.I.E. - Agro Import Export Lt
Bulgaria
Member only
A.I.D.A. di Giangreco Paolo
Italy
Member only
A.I.A. S.p.A. Agricoltura Ital
Italy
Member only
A.F.C. S.A.
Belgium
Member only
A.C.P. International SRL
Italy
Member only
A.B.A. Prosciutti SpA
Italy
Member only
A. Poortman (London) Ltd.
United Kingdom
Member only
A-1 Produce Co.Ltd
Thailand
Member only
A.I.M.O. Acetifici Italiani Mo
Italy
Member only
Aalst Chocolate Pte Ltd
Singapore
Member only
เมื่อ user ใส่ username และ password แล้ว ผมทำการ refresh หน้านี้อีกครั้งปรากฎผลดังนี้ครับ
[1] 2 3 4 5 6 7 8 9 10 11 12
A.I.E. - Agro Import Export Lt
Bulgaria
agroimportexport@yahoo.com
A.I.D.A. di Giangreco Paolo
Italy
aida.giangreco@libero.it
A.I.A. S.p.A. Agricoltura Ital
Italy
aia@aia-spa.it
A.F.C. S.A.
Belgium
frederic.debrun@unifine.be
A.C.P. International SRL
Italy
info@acpinter.it
A.B.A. Prosciutti SpA
Italy
info@abaprosciutti.it
A. Poortman (London) Ltd.
United Kingdom
trading@poortman.com
A-1 Produce Co.Ltd
Thailand
a-1produce@a-1produce.com
A.I.M.O. Acetifici Italiani Mo
Italy
aimo@acetobalsamico.it
Aalst Chocolate Pte Ltd
Singapore
sales@aalst-chocolate.com.sg
e-mail ของ บริษัทต่างๆ จะแสดง email address ออกมา ซึ่งถูกต้อง แต่ พอ click ที่ชื่อบริษัทควรที่จะแสดง file popup_company.php ซึ่งจะแสดงรายละเอียดของบริษัทนั้น แต่ปรากฎว่า ยัง pop up เป็น file popup_login.php ซึ่งให้ใส่ username กับ password ใหม่อีก
echo"<tr><td><font color='#8B0000' face='verdana' size='1'>
<a href=\"javascript:;\" onclick=\"window.open('popup_company.php', 'pw', 'width=250,height=150,toolbars=no,status=no');\">
".$row["company"]."</a></font></td>";
ซึ่ง file popup_company.php ผมเขียนดังนี้ครับ
<?
if(!isset($_SESSION["active"]) || $_SESSION["active"] != "ok" || !isset($_SESSION["username"]) || $_SESSION["username"] == "")
{
header("Location: popup_login.php");
}
?>
Company:<br>
Contact person:<br>
Address:<br>
Country:
ขอคำแนะนำด้วยครับ ทำไมเมื่อ login แล้ว แล้วกลับไป click ที่ชื่อ บริษัท ทำไมถึงไม่ redirect ไปที่ file popup_company.php?
เรื่องที่ 2 เมื่อ popup แล้วใส่ login ผ่านแล้ว จะให้มีการ redirect แสดงรายละเอียดของบริษัทที่เลือกทันที ผมคิดว่าต้องแก้ไข file นี้ โดยเปลี่ยนตรง "Welcome member to our website" นั้นให้ redirect ไปแสดงรายละเอียดของบริษัทที่เลือก รบกวนช่วยแนะนำด้วยครับว่าจะเขียนอย่างไรครับ?
<?
if($_POST["username"] !=" " && $_POST["password"] != " ")
{
$link=mysql_connect("localhost", "root", "");
mysql_select_db("member", $link);
$sql="select email1 from member where username='$username' and password='$password'";
$result=mysql_query($sql,$link);
$row=mysql_num_rows($result);
if($row>=1)
{
session_start();
session_register("active");
session_register("username");
$_SESSION["active"]="ok";
$_SESSION["username"]=$username;
print("Welcome member to our website");
}
else
print("Error login");
}
?>
รบกวนด้วยครับ
อนันต์
ในไฟล์ popup_company.php ที่มีการ check login นั้นมีการเรียกใช้ $_SESSION นั้นต้องมีการเรียกใช้
session_start(); ก่อนด้วยครับ
Sat 21 Oct 2006 21:56:44
สวัสดีครับและขอขอบคุณครับที่กรุณาแนะนำอยู่เสมอ
รบกวนช่วยตอบข้อที่ 2 ในเรื่องการ redirect ไปยังหน้าที่แสดงรายละเอียดของบริษัท หลังจากได้ทำการ login แล้วครับ
อนันต์
Sun 22 Oct 2006 17:26:30
ผมมีคำถามถามเพิ่มเติมดังนี้ครับ
ผมเขียนโปรแกรมแล้วให้ redirect ดังโปรแกรมข้างล่างนี้ครับ
<?
if($_POST["username"] !=" " && $_POST["password"] != " ")
{
$link=mysql_connect("localhost", "root", "");
mysql_select_db("member", $link);
$sql="select email1 from member where username='$username' and password='$password'";
$result=mysql_query($sql,$link);
$row=mysql_num_rows($result);
if($row>=1)
{
session_start();
session_register("active");
session_register("username");
$_SESSION["active"]="ok";
$_SESSION["username"]=$username;
header("Location: main_indexmember.php");
}
else
print("Error login");
}
?>
โปรแกรม main_indexmember.php ด้านล่างนี้ครับ
<html>
<head>
<link rel="stylesheet" href="../stylesheet/webinterface.css" type="text/css" />
</head>
<body>
<?
require"main_head.txt";
?>
<table border=0 cellpadding=5 cellspacing=0 width=782>
<tr>
<td width=150 valign=top bgcolor="#FAEBD7">
<?
require"main_right.txt";
?>
</td>
<td width=370 valign=top>
<br><font color='#228B22' face='verdana' size='1'><center><b>Welcome member <?echo $row["company"];?> to our website.</b></center></font>
<?
require"main_search.txt";
?>
</td>
<td width=262 valign=top>
<?
require"main_left.txt";
?>
</td>
</tr>
</table>
</body>
</html>
ผมอยากให้มีคำว่า welcome member company A (ชื่อบริษัทที่เข้ามา login) to our website.
ผมได้เขียนโค๊ดโปรแกรมเพื่อดึงชื่อบริษัทมาเป็น Welcome member <?echo $row["company"];?> to our website.
ปรากฎว่าไม่มีการดึงชื่อบริษัทสมาชิกที่เข้ามา login นั้นออกมาจากฐานข้อมูล ซึ่งผลที่ได้แสดงเป็น
Welcome member to our website.
ขอคำแนะนำด้วยครับ ว่าจะเขียนอย่างไรถึงจะดึงชื่อบริษัทออกมาแสดงได้ครับ
อนันต์
Sun 22 Oct 2006 18:38:40
ขอบคุณครับ ผมได้แก้โปรแกรมตามนี้ครับ
<html>
<head>
<link rel="stylesheet" href="../stylesheet/webinterface.css" type="text/css" />
</head>
<body>
<?
require"main_head.txt";
?>
<table border=0 cellpadding=5 cellspacing=0 width=782>
<tr>
<td width=150 valign=top bgcolor="#FAEBD7">
<?
require"main_right.txt";
?>
</td>
<?
mysql_select_db("company",$link);
$sql="select company from company where email1='$email1'";
$res=mysql_query($sql, $link);
$n=mysql_num_rows($res);
$row=mysql_fetch_array($res);
?>
<td width=370 valign=top>
<br><font color='#228B22' face='verdana' size='1'><center><b>Welcome member <?echo $row["company"];?> to our website.</b></center></font>
<?
require"main_search.txt";
?>
</td>
<td width=262 valign=top>
<?
require"main_left.txt";
?>
</td>
</tr>
</table>
</body>
</html>
ปรากฎว่าเกิด error ดังนี้ครับ
www.anan is a world food company directory. We have more than 20,000 food companies that you can open business gate to sell or buy food products. Post buy and sell member's food products will send to food company in our database that they agree to receive. Cost of member is USD200/year. If you interest, please register at member register. Food company search
| |||||||||||||







