คือผมจะทำแอพแลกเปลี่ยนตำแหน่ง GPS ครับ คิดไว้ว่าจะส่งตำแหน่งเป็นข้อความขึ้นเซิฟเวอร์แล้วบันทึกไว้ใน text ไฟล์ครับ
อันนี้โค้ด php
<?php
$myname = $_POST['myname'];
$request = $_POST['requestname'];
$text = $_POST['text'];
$fname = fopen("\\" + $myname + ".txt", "w");
fwrite($fname, $text);
fclose($fname);
$frequest = fopen("\\" + $request + ".txt", "r");
echo fgets($frequest);
fclose($frequest);
?>
myname คือ ชื่อของผู้ส่ง
requestname คือ ชื่อของคนที่เราต้องการรับตำแหน่ง GPS
text คือ ข้อความตำแหน่ง GPS ครับ
หลักการก็คือ แอพบนโทรศัพท์ของผู้ใช้ A จะส่งชื่อนาย A ชื่อนาย B และ ตำแหน่ง GPS ไปยัง server
จากนั้น server จะบันทึกตำแหน่ง GPS ของผู้ส่งไว้ในไฟล์ A.txt และอ่านไฟล์ B.txt จากนั้นส่งตำแหน่งไปยังผู้ใช้ A
ซึ้งผลลัพธ์มันควรจะเป็นตำแหน่งของผู้ใช้ B แต่ แต่กลับได้ตำแหน่งของผู้ใช้ A แทน
อันนั้ทดสอบบน cmd นะครับ ยังไม่ได้สร้างแอพจริงๆ
your name : A
request name : B
your text: 13.759603 100.485395
13.759603 100.485395 [<---ผลลัพธ์ที่ได้จาก server]
press x than enter
คือถ้าไฟล์ B.txt ยังไม่มีแล้วโปรแกรมพึ่งสร้างเองผลัพธ์มันก็ควรจะเป็นข้อความว่างๆแบบนี้ "" ถูกไหมครับ
นี้ไฟล์ .cs
static void Main(string[] args)
{
Console.Write("your name : ");
var myname = Console.ReadLine();
Console.Write("request name : ");
var requestname = Console.ReadLine();
Console.Write("your text: ");
var text = Console.ReadLine();
byte[] byteArray = Encoding.UTF8.GetBytes("myname=" + myname +
"&requestname=" + requestname + "&text=" + text);
foreach (var i in new byte[1])
{
WebRequest request = WebRequest.Create("
http://localhost/serverTest.php");
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
var dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
var response = request.GetResponse();
dataStream = response.GetResponseStream();
var reader = new StreamReader(dataStream);
var responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Console.WriteLine(responseFromServer == null ? "is null" : responseFromServer);
}
Console.Write("press x than enter");
if (Console.ReadLine() == "x") Main(args);
}
และไฟล์บนเครื่อง server ผมใช้ appserv จำลอง ก็ไม่มีไฟล์ A.txt กับ B.txt อยู่ด้วย
ผมไม่เคยเรียน php มาก่อนนะ ไม่รู้เขียนโค้ดถูกไหม ช่วยดูให้ทีครับ
ถามเรื่อง fopen กับ fgets ของ PHP ครับผลลัพธ์มันแปลกๆ
อันนี้โค้ด php
<?php
$myname = $_POST['myname'];
$request = $_POST['requestname'];
$text = $_POST['text'];
$fname = fopen("\\" + $myname + ".txt", "w");
fwrite($fname, $text);
fclose($fname);
$frequest = fopen("\\" + $request + ".txt", "r");
echo fgets($frequest);
fclose($frequest);
?>
myname คือ ชื่อของผู้ส่ง
requestname คือ ชื่อของคนที่เราต้องการรับตำแหน่ง GPS
text คือ ข้อความตำแหน่ง GPS ครับ
หลักการก็คือ แอพบนโทรศัพท์ของผู้ใช้ A จะส่งชื่อนาย A ชื่อนาย B และ ตำแหน่ง GPS ไปยัง server
จากนั้น server จะบันทึกตำแหน่ง GPS ของผู้ส่งไว้ในไฟล์ A.txt และอ่านไฟล์ B.txt จากนั้นส่งตำแหน่งไปยังผู้ใช้ A
ซึ้งผลลัพธ์มันควรจะเป็นตำแหน่งของผู้ใช้ B แต่ แต่กลับได้ตำแหน่งของผู้ใช้ A แทน
อันนั้ทดสอบบน cmd นะครับ ยังไม่ได้สร้างแอพจริงๆ
your name : A
request name : B
your text: 13.759603 100.485395
13.759603 100.485395 [<---ผลลัพธ์ที่ได้จาก server]
press x than enter
คือถ้าไฟล์ B.txt ยังไม่มีแล้วโปรแกรมพึ่งสร้างเองผลัพธ์มันก็ควรจะเป็นข้อความว่างๆแบบนี้ "" ถูกไหมครับ
นี้ไฟล์ .cs
static void Main(string[] args)
{
Console.Write("your name : ");
var myname = Console.ReadLine();
Console.Write("request name : ");
var requestname = Console.ReadLine();
Console.Write("your text: ");
var text = Console.ReadLine();
byte[] byteArray = Encoding.UTF8.GetBytes("myname=" + myname +
"&requestname=" + requestname + "&text=" + text);
foreach (var i in new byte[1])
{
WebRequest request = WebRequest.Create("http://localhost/serverTest.php");
request.Method = "post";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
var dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
var response = request.GetResponse();
dataStream = response.GetResponseStream();
var reader = new StreamReader(dataStream);
var responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Console.WriteLine(responseFromServer == null ? "is null" : responseFromServer);
}
Console.Write("press x than enter");
if (Console.ReadLine() == "x") Main(args);
}
และไฟล์บนเครื่อง server ผมใช้ appserv จำลอง ก็ไม่มีไฟล์ A.txt กับ B.txt อยู่ด้วย
ผมไม่เคยเรียน php มาก่อนนะ ไม่รู้เขียนโค้ดถูกไหม ช่วยดูให้ทีครับ