AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Sockets does not send data to php file (https://forums.alliedmods.net/showthread.php?t=240656)

OnePL 05-19-2014 12:39

Sockets does not send data to php file
 
sockets does not send data to php file
plugin code:
PHP Code:

#include <amxmodx>
#include <sockets>

new HOST[] = "127.0.0.1";
new 
FILE[] = "test.php";

new 
Server[64];
new 
nick[33][32], ip[33][23], sid[33][35];
new 
socketerror;

public 
plugin_cfg() {
    
get_cvar_string("hostname"Server63);
    
socket socket_open(HOST801error);
}

public 
client_putinserver(id) {
    
get_user_name(idnick[id], 31);
    
get_user_ip(idip[id], 221);
    
get_user_authid(idsid[id], 34);

    
set_task(2.0"test"id+101);
}

public 
test(id) {
    
id -= 101;

    new 
sData[256];
    
format(sData255"GET /%s?name=%s&authid=%s&ip=%s&server=%s HTTP/1.0^r^n"FILEnick[id], sid[id], ip[id], Server);
    
format(sData255"%sHost: %s^r^n^r^n"sDataHOST);
    
socket_send(socketsDatastrlen(sData));


php file:
PHP Code:

<?php
    $link 
mysqli_connect(hostuserpassdb);

    
$name $_GET['name'];
    
$authid $_GET['authid'];
    
$ip $_GET['ip'];
    
$server $_GET['server'];

    
mysqli_query($link"INSERT `sockets_test` (name, authid, ip, server) VALUES ('$name', '$authid', '$ip', '$server')");
?>

when go in from the www is a query to the mysql database be execute
where is the mistake in the plugin?

claudiuhks 05-20-2014 01:21

Re: Sockets does not send data to php file
 
PHP Code:

#define SOCK_STREAM 1 // good you use this one, but better to use the definition
#define SOCK_DGRAM 2 

I believe you have to replace HTTP/1.0^r^n with HTTP/1.1^n and no empty space after Host:.

The characters like !@#$%^&*()_+| and so on, must be replaced with their HEX values.

PHP Code:

        /*
            ** Uses HEX instead of characters.
        */
        
static PCHAR HEXTable[256U] =
        {
            
"00""01""02""03""04""05""06""07""08""09""0a""0b""0c""0d""0e""0f""10""11",
            
"12""13""14""15""16""17""18""19""1a""1b""1c""1d""1e""1f""20""21""22""23",
            
"24""25""26""27""28""29""2a""2b""2c""2d""2e""2f""30""31""32""33""34""35",
            
"36""37""38""39""3a""3b""3c""3d""3e""3f""40""41""42""43""44""45""46""47",
            
"48""49""4a""4b""4c""4d""4e""4f""50""51""52""53""54""55""56""57""58""59",
            
"5a""5b""5c""5d""5e""5f""60""61""62""63""64""65""66""67""68""69""6a""6b",
            
"6c""6d""6e""6f""70""71""72""73""74""75""76""77""78""79""7a""7b""7c""7d",
            
"7e""7f""80""81""82""83""84""85""86""87""88""89""8a""8b""8c""8d""8e""8f",
            
"90""91""92""93""94""95""96""97""98""99""9a""9b""9c""9d""9e""9f""a0""a1",
            
"a2""a3""a4""a5""a6""a7""a8""a9""aa""ab""ac""ad""ae""af""b0""b1""b2""b3",
            
"b4""b5""b6""b7""b8""b9""ba""bb""bc""bd""be""bf""c0""c1""c2""c3""c4""c5",
            
"c6""c7""c8""c9""ca""cb""cc""cd""ce""cf""d0""d1""d2""d3""d4""d5""d6""d7",
            
"d8""d9""da""db""dc""dd""de""df""e0""e1""e2""e3""e4""e5""e6""e7""e8""e9",
            
"ea""eb""ec""ed""ee""ef""f0""f1""f2""f3""f4""f5""f6""f7""f8""f9""fa""fb",
            
"fc""fd""fe""ff"
        
}; 

Like %dc, %fd, %d0 and so on...
Keep in mind that a valid normal character is between -2 and 255 inclusive. Do not consider -2 and -1, they're MOUSE1 and MOUSE2 buttons AFAIK. You got much work to do if you're dealing with unicode characters.

OnePL 05-20-2014 08:50

Re: Sockets does not send data to php file
 
eh .. I do not understand. Would you mind show it on the code from the first post?

claudiuhks 05-21-2014 09:21

Re: Sockets does not send data to php file
 
Quote:

Originally Posted by OnePL (Post 2140259)
eh .. I do not understand. Would you mind show it on the code from the first post?

That's a kind of a private work, anyways, not tested.

PHP Code:

safeStr(const myStr[], outStr[], const outStrLen)
{
 static const 
charsTbl[256][3] =
 {
  
"%00""%01""%02""%03""%04""%05""%06""%07""%08""%09""%0a""%0b""%0c""%0d""%0e""%0f""%10""%11",
  
"%12""%13""%14""%15""%16""%17""%18""%19""%1a""%1b""%1c""%1d""%1e""%1f""%20""%21""%22""%23",
  
"%24""%25""%26""%27""%28""%29""%2a""%2b""%2c""%2d""%2e""%2f""%30""%31""%32""%33""%34""%35",
  
"%36""%37""%38""%39""%3a""%3b""%3c""%3d""%3e""%3f""%40""%41""%42""%43""%44""%45""%46""%47",
  
"%48""%49""%4a""%4b""%4c""%4d""%4e""%4f""%50""%51""%52""%53""%54""%55""%56""%57""%58""%59",
  
"%5a""%5b""%5c""%5d""%5e""%5f""%60""%61""%62""%63""%64""%65""%66""%67""%68""%69""%6a""%6b",
  
"%6c""%6d""%6e""%6f""%70""%71""%72""%73""%74""%75""%76""%77""%78""%79""%7a""%7b""%7c""%7d",
  
"%7e""%7f""%80""%81""%82""%83""%84""%85""%86""%87""%88""%89""%8a""%8b""%8c""%8d""%8e""%8f",
  
"%90""%91""%92""%93""%94""%95""%96""%97""%98""%99""%9a""%9b""%9c""%9d""%9e""%9f""%a0""%a1",
  
"%a2""%a3""%a4""%a5""%a6""%a7""%a8""%a9""%aa""%ab""%ac""%ad""%ae""%af""%b0""%b1""%b2""%b3",
  
"%b4""%b5""%b6""%b7""%b8""%b9""%ba""%bb""%bc""%bd""%be""%bf""%c0""%c1""%c2""%c3""%c4""%c5",
  
"%c6""%c7""%c8""%c9""%ca""%cb""%cc""%cd""%ce""%cf""%d0""%d1""%d2""%d3""%d4""%d5""%d6""%d7",
  
"%d8""%d9""%da""%db""%dc""%dd""%de""%df""%e0""%e1""%e2""%e3""%e4""%e5""%e6""%e7""%e8""%e9",
  
"%ea""%eb""%ec""%ed""%ee""%ef""%f0""%f1""%f2""%f3""%f4""%f5""%f6""%f7""%f8""%f9""%fa""%fb",
  
"%fc""%fd""%fe""%ff"
 
};
 static 
iterVar;
 
outStr[0] = '^0';
 for (
iterVar 0iterVar strlen(myStr); iterVar++)
 {
  if (!(
<= myStr[iterVar] <= charsmax(charsTbl)))
   continue;
  
add(outStroutStrLencharsTbl[myStr[iterVar]]);
 }
}
public 
client_putinserver(clId)
{
 static 
svName[256], svNewName[512], clName[64], clNewName[256], clSteam[64], clNewSteam[256], \
  
clAddr[64], clNewAddr[256], svNameCVarIdclUserIdsockIderrIdtmpBuffer[1024], bufferLen;
 if (!
svNameCVarId)
  
svNameCVarId get_cvar_pointer("hostname");
 
get_pcvar_string(svNameCVarIdsvNamecharsmax(svName));
 
get_user_name(clIdclNamecharsmax(clName));
 
get_user_authid(clIdclSteamcharsmax(clSteam));
 
get_user_ip(clIdclIpcharsmax(clIp), 1);
 
clUserId get_user_userid(clId);
 
sockId socket_open("127.0.0.1"80SOCKET_TCPerrId);
 if (!
errId)
 {
  
safeStr(clNameclNewNamecharsmax(clNewName));
  
safeStr(clSteamclNewSteamcharsmax(clNewSteam));
  
safeStr(clIpclNewIpcharsmax(clNewIp));
  
safeStr(svNamesvNewNamecharsmax(svNewName));
  
bufferLen formatex(tmpBuffercharsmax(tmpBuffer), "GET /index.php?cl_name=%s&cl_steam=%s&cl_ip=%s&sv_name=%s&cl_id=%d&cl_userid=%d HTTP/1.1^nHost:127.0.0.1^r^n^r^n", \
   
clNewNameclNewSteamclNewAddrsvNewNameclIdclUserId);
  
socket_send(sockIdtmpBufferbufferLen);
  
socket_close(sockId);
 }


Now the problem are the Unicode characters. I've never worked with them and Sockets simultaneously.

OnePL 05-21-2014 16:11

Re: Sockets does not send data to php file
 
PHP Code:

#include <amxmodx>
#include <sockets>

new HOST[] = "127.0.0.1";
new 
FILE[] = "test.php";

new 
Server[64];
new 
nick[33][32], ip[33][23], sid[33][35];
new 
socketerror;

public 
plugin_cfg() {
    new 
swName[64]; get_cvar_string("hostname"swName63);
    
safeStr(swNameServer63);
    
socket socket_open(HOST801error);
}

public 
client_putinserver(id) {
    static 
nick[32], ip[23], sid[35];
    
get_user_name(idnick31);
    
get_user_ip(idip221);
    
get_user_authid(idsid34);

    
safeStr(nicknick[id], 31);
    
safeStr(ipip[id], 22);
    
safeStr(sidsid[id], 34);

    
set_task(2.0"test"id+101);
}

public 
test(id) {
    
id -= 101;

    new 
sData[256];
    
formatex(sData255"GET /%s?name=%s&authid=%s&ip=%s&server=%s HTTP/1.1^nHost:%s^r^n^r^n", \
    
FILEnick[id], sid[id], ip[id], ServerHOST);
    
socket_send(socketsDatastrlen(sData));
}

safeStr(const myStr[], outStr[], const outStrLen) {
    static const 
charsTbl[256][4] = {
        
"%00""%01""%02""%03""%04""%05""%06""%07""%08""%09""%0a""%0b""%0c""%0d""%0e""%0f""%10""%11",
        
"%12""%13""%14""%15""%16""%17""%18""%19""%1a""%1b""%1c""%1d""%1e""%1f""%20""%21""%22""%23",
        
"%24""%25""%26""%27""%28""%29""%2a""%2b""%2c""%2d""%2e""%2f""%30""%31""%32""%33""%34""%35",
        
"%36""%37""%38""%39""%3a""%3b""%3c""%3d""%3e""%3f""%40""%41""%42""%43""%44""%45""%46""%47",
        
"%48""%49""%4a""%4b""%4c""%4d""%4e""%4f""%50""%51""%52""%53""%54""%55""%56""%57""%58""%59",
        
"%5a""%5b""%5c""%5d""%5e""%5f""%60""%61""%62""%63""%64""%65""%66""%67""%68""%69""%6a""%6b",
        
"%6c""%6d""%6e""%6f""%70""%71""%72""%73""%74""%75""%76""%77""%78""%79""%7a""%7b""%7c""%7d",
        
"%7e""%7f""%80""%81""%82""%83""%84""%85""%86""%87""%88""%89""%8a""%8b""%8c""%8d""%8e""%8f",
        
"%90""%91""%92""%93""%94""%95""%96""%97""%98""%99""%9a""%9b""%9c""%9d""%9e""%9f""%a0""%a1",
        
"%a2""%a3""%a4""%a5""%a6""%a7""%a8""%a9""%aa""%ab""%ac""%ad""%ae""%af""%b0""%b1""%b2""%b3",
        
"%b4""%b5""%b6""%b7""%b8""%b9""%ba""%bb""%bc""%bd""%be""%bf""%c0""%c1""%c2""%c3""%c4""%c5",
        
"%c6""%c7""%c8""%c9""%ca""%cb""%cc""%cd""%ce""%cf""%d0""%d1""%d2""%d3""%d4""%d5""%d6""%d7",
        
"%d8""%d9""%da""%db""%dc""%dd""%de""%df""%e0""%e1""%e2""%e3""%e4""%e5""%e6""%e7""%e8""%e9",
        
"%ea""%eb""%ec""%ed""%ee""%ef""%f0""%f1""%f2""%f3""%f4""%f5""%f6""%f7""%f8""%f9""%fa""%fb",
        
"%fc""%fd""%fe""%ff"
    
};
    static 
iterVar;
    
outStr[0] = '^0';

    for(
iterVar 0iterVar strlen(myStr); iterVar++) {
        if(!(
<= myStr[iterVar] <= charsmax(charsTbl))) continue;

        
add(outStroutStrLencharsTbl[myStr[iterVar]]);
    }


1. not get nickname
2. not get authid
3. not get ip address
4. not get server name
5. not send data to php file

Black Rose 05-21-2014 18:00

Re: Sockets does not send data to php file
 
I tried your first code without any problems.
I just wrote to a file instead of SQL and replaced some special characters with URL encoded versions. Other than that, no changes. You're testing it wrong. Probably an SQL problem.
DEBUG!

OnePL 05-22-2014 04:14

Re: Sockets does not send data to php file
 
solved
not read socket when I opened it in plugin_cfg()
I moved to the plugin_init() and works

I have the next problem, code:

PHP Code:

public Message(id) {
    new 
reason[64], sData[256];
    
read_args(reason63);
    
remove_quotes(reason);
    
trim(reason);
    
ucfirst(reason);

    
formatex(sData255"GET /%s?name=%s&authid=%s&ip=%s&server=%s&reason=%s HTTP/1.1^nHost:%s^r^n^r^n", \
    
FILEnick[id], sid[id], ip[id], ServerreasonHOST);
    
socket_send(socketsDatastrlen(sData));


I have this function under the command /send, I type a reason, but that reason does not send

claudiuhks 05-22-2014 07:13

Re: Sockets does not send data to php file
 
Quote:

Originally Posted by OnePL (Post 2140981)
solved
not read socket when I opened it in plugin_cfg()
I moved to the plugin_init() and works

I have the next problem, code:

PHP Code:

public Message(id) {
    new 
reason[64], sData[256];
    
read_args(reason63);
    
remove_quotes(reason);
    
trim(reason);
    
ucfirst(reason);

    
formatex(sData255"GET /%s?name=%s&authid=%s&ip=%s&server=%s&reason=%s HTTP/1.1^nHost:%s^r^n^r^n", \
    
FILEnick[id], sid[id], ip[id], ServerreasonHOST);
    
socket_send(socketsDatastrlen(sData));


I have this function under the command /send, I type a reason, but that reason does not send

You're code seems fine. But the code amount is not enough.


All times are GMT -4. The time now is 09:39.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.