1 registered members (3s05bmmc),
740
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Quick Super Noob Question about Connecting
[Re: EpsiloN]
#450049
04/05/15 16:43
04/05/15 16:43
|
Joined: Apr 2005
Posts: 1,988 Canadian, Eh
DLively
OP
Serious User
|
OP
Serious User
Joined: Apr 2005
Posts: 1,988
Canadian, Eh
|
About the Servers listing, I've also never done this, but I'm planning it for my next project.
The theory is this: Every play that clicks "Start server" sends URL GET parameters to my webpage, a certain .php file that records his IP, PORT, Server name, Players in server, map name in a MySQL table. Then, every client that clicks on "Servers list" will send GET method parameters to my webpage, again a certain .php file, that will spit out all servers recorded in the MySQL table as text. The client's game will parse this text to separate the servers and show them on screen. Once the player clicks "Join", he'll use the IP that was given by my website for that particular server to connect a session. When a server is closed, it will again send data to my website to get it off the list. Also, each time a client disconnects, the server will send data to modify the information in the table to show accurate players count for that server.
All this is done with a MySQL table and basic PHP.
If you don't know what GET parameters are, search on google. GET is the vars sent with the website address in the URL input box on your Internet Explorer.
The only hard part is parsing the returned text. Not that its hard, but there are countless ways to implement that...
Thanks dude, This is awesome! This makes good sense, I just need to put the theory to work for myself now. I've been building websites so php and mysql is like riding a bike Edit: (if you know how to ride a bike I suppose)
Last edited by DLively; 04/05/15 16:44.
|
|
|
Re: Quick Super Noob Question about Connecting
[Re: DLively]
#450075
04/06/15 10:19
04/06/15 10:19
|
Joined: Jan 2006
Posts: 968
EpsiloN
User
|
User
Joined: Jan 2006
Posts: 968
|
No problem I will be doing the same thing soon, so if you have any problems contact me and I'll try to help. Also, here's a long forgotten MMO project I was working on, as an example of a character creation with a PHP and MySQL system:
STRING* character_creation_str="";
STRING* client_username_str="";
STRING* client_password_str="";
function create_character()
{
character_creation = 1;
str_cpy(character_creation_str,"op=7&user=");
str_cat(character_creation_str,client_username_str);
str_cat(character_creation_str,"&pass=");
str_cat(character_creation_str,client_password_str);
str_cat(character_creation_str,"&app=0000000000&pos=0000000x0000000x0000000");
var createchar_http_id = http_sendpost("http://www.mesetts.com/game_req.php",character_creation_str);
while (!http_status(createchar_http_id)) { wait(1); } //wait for the server to reply
if (http_status(createchar_http_id) == 1) //transfer successful?
{
http_result(createchar_http_id,character_creation_str); //get the replied IP
if(str_cmp(character_creation_str,"41") == 1)
{
info_num = 13;
str_cpy((info_txt.pstring)[0],"Character created!\nEntering game...");
pan_controller(info_ok , SHOW_PAN);
}
else
{
info_num = 12;
str_cpy((info_txt.pstring)[0],"Could not create. Please,\ncontact the administrator immediately!\nError code: ");
str_cat((info_txt.pstring)[0],character_creation_str);
pan_controller(info_ok , SHOW_PAN);
}
}
else
{
info_num = 12;
str_cpy((info_txt.pstring)[0],"Could not connect to database server.");
pan_controller(info_ok , SHOW_PAN);
}
http_free(createchar_http_id); //always cleanup the httpid!
}
And the PHP part:
if($operation == 7) { // If register request
if(isset($_GET['user'])) { // If user received
$user = $_GET['user']; // Get it
}
else {
echo '43'; // Else return 5 - no user posted
return;
}
if(isset($_GET['pass'])) { // If pass received
$pass = $_GET['pass']; // Get it
}
else {
echo '44'; // Else return 6 - no pass posted
return;
}
if(isset($_GET['app'])) {
$app = $_GET['app'];
}
else {
echo '48';
return;
}
if(isset($_GET['pos'])) {
$pos = $_GET['pos'];
}
else {
echo '49';
return;
}
$user = stripslashes($user); // Strip slashes
$pass = stripslashes($pass);
$user = mysql_real_escape_string($user); // Remove bad characters
$pass = mysql_real_escape_string($pass);
$app = stripslashes($app);
$app = mysql_real_escape_string($app);
$pos = stripslashes($pos);
$pos = mysql_real_escape_string($pos);
$mysqli_query_str="SELECT * FROM users WHERE nick='$user' and parola='$pass'"; // Prepare query
$result=$mysqli->query($mysqli_query_str); // Look for user
// Mysql_num_row is counting table row
$count=$result->num_rows;
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){ // If match found
$row = $result->fetch_assoc();
if($row['character'] != null)
{
echo "46"; // Already present
return;
}
else {
$mysqli_query_str="INSERT INTO characters (appearance, position) VALUES('$app','$pos')"; // Prepare query
$result=$mysqli->query($mysqli_query_str); // Register user in database
if($result) {
$charid = $mysqli->insert_id;
$mysqli_query_str='UPDATE users SET `character`="'.$charid.'" WHERE `nick`="'.$user.'" AND `parola`="'.$pass.'"'; // Prepare query
$result=$mysqli->query($mysqli_query_str); // Register user in database
if($result) {
echo "41"; // Success creating char and inserting
//echo "<br />" . $charid . " | " . $result . "<br />" . $mysqli_query_str;
}
else {
echo "40"; // Success creating/failed linking
//echo "<br />" . $mysqli->error;
return;
}
}
else {
echo "47"; // Failed creating
return;
}
}
}
else {
echo '45'; // Else - no user found / bad pass
return;
}
}
pan_controller is a function that shows/hides my panels in this case... Don't laugh at my PHP it was a long time ago...
|
|
|
Re: Quick Super Noob Question about Connecting
[Re: EpsiloN]
#450082
04/06/15 13:59
04/06/15 13:59
|
Joined: Apr 2005
Posts: 1,988 Canadian, Eh
DLively
OP
Serious User
|
OP
Serious User
Joined: Apr 2005
Posts: 1,988
Canadian, Eh
|
Thank you! This will be great to learn from. Better a little late, than never Your php is not bad enough to laugh at You may already know this but you can place functions in functions.
$user = stripslashes(mysql_real_escape_string($user));// Strip slashes & Remove bad characters
$pass = stripslashes(mysql_real_escape_string($pass));
....
$result=$mysqli->query("SELECT * FROM users WHERE nick='$user' and parola='$pass'");
I like php because of how 'dynamic' the usability of the syntax is. Cheers
|
|
|
|