Login mySQL

Aperto da Flavio93Zena, Giovedì - 19 Febbraio 2015 - 17:55

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Flavio93Zena

Beh siamo alle prese col CryEngine ed è più piccante di Unity, oltre che più rompiscatole su alcune cose... Il mio problema sarebbe sempre questo http://www.simplemachines.org/community/index.php?topic=526956.0 il fatto è che deve essere una query fatta bene priva di potenziali iniezioni sql e roba simile. Oltre al fatto di funzionare ;D
I problemi sono:
1) So che bisogna fare la query in php ma non so migliorare quella che ho scritto nel topic stesso...
2) Con CryEngine devo forse interfacciare flash per farlo comunicare col linguaggio nativo (C++). Per C++ e flash ci può pensare il programmatore, ma per php no.
3) La query deve essere sicura, assolutamente. Ho bisogno di SSL nel caso? Se sì, dove devo metterlo per non fare un gran casino col forum?

Grazie in anticipo per eventuali suggerimenti! :)

P.s.: per dare qualche informazione in più posto anche la query che ho al momento:
<?php

include 'conf/connection.php';

$username $_POST['member_name'];
$password $_POST['passwd'];
$sha1pass sha1(strtolower($username) . $password);

if(
$username != "" || $sha1pass != "")
{
$sql "SELECT member_name, passwd FROM smf_members WHERE member_name = '".$username."' AND passwd = '".$sha1pass."'";
$query mysql_query($sql);
$ar mysql_fetch_array($query);

if($username == $ar['member_name'] && $sha1pass == $ar['passwd'])
{
echo $ar['id_member'];
}
else
{
echo "error";
}
}

else
{
echo "errorEmpty";
}

?>

emanuele

Allora, vediamo se ho capito.

Tu hai un programma che gira sul computer di un utente. Un programma scritto in C++.
Questo programma deve "sondare" il server, inviare uno user name ed una password, e verificare che l'utente e che la password combaci con quella archiviata.

Sono sulla strada giusta?

Bene, vado avanti di un passo sperando di esserlo.

User name e passwrod sono quelli del tuo forum SMF.
Quindi tu vorresti scrivere un file in grado di verificare che lo user e la password inviati da un client siano nel db di SMF.
Esatto fino a qui?

Questo potrebbe funzionare:
<?php
require_once('/path/to/SSI.php');

// Da LogInOut.php
// No funky symbols either.
if ((!isset($_POST['user']) || $_POST['user'] == '') || preg_match('~[<>&"\'=\\\]~'preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~'''$_POST['user'])) != 0)
{
echo $txt['error_invalid_characters_username'];
}
// Hmm... maybe 'admin' will login with no password. Uhh... NO!
elseif (!isset($_POST['passwrd']) || $_POST['passwrd'] == '')
{
echo $txt['no_password'];
}
else
{
if (ssi_checkPassword($_POST['user'], $_POST['passwd'], true))
echo 'success';
else
echo 'wrong_pair';
}
die();


Quello che il tuo client deve fare è POST'are lo user name come "user" e la password (in plain text) come "passwd".

Non è "perfettamente" allineato con SMF, ma quel che manca non dovrebbe essere di tuo interesse (i.e. il codice per migrare la password dopo una conversione da un altro forum a SMF ed eventuali integrazioni con altri sistemi).
L'unico "edge case" che potrebbe in qualche modo interessarti è che la funzione ssi_checkPassword non consente di fare il login con l'email invece che con lo user name, ma non credo sia particolarmente rilevante.

Flavio93Zena

#2
Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 20:24
Allora, vediamo se ho capito.

Tu hai un programma che gira sul computer di un utente. Un programma scritto in C++.
Questo programma deve "sondare" il server, inviare uno user name ed una password, e verificare che l'utente e che la password combaci con quella archiviata.
Hmm sì.

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 20:24
Sono sulla strada giusta?
Come quasi sempre ;) :P

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 20:24
User name e passwrod sono quelli del tuo forum SMF.
Quindi tu vorresti scrivere un file in grado di verificare che lo user e la password inviati da un client siano nel db di SMF.
Esatto fino a qui?
Yesss.

Citazione
Questo potrebbe funzionare:
<?php
require_once('/path/to/SSI.php');

// Da LogInOut.php
// No funky symbols either.
if ((!isset($_POST['user']) || $_POST['user'] == '') || preg_match('~[<>&"\'=\\\]~'preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~'''$_POST['user'])) != 0)
{
echo $txt['error_invalid_characters_username'];
}
// Hmm... maybe 'admin' will login with no password. Uhh... NO!
elseif (!isset($_POST['passwrd']) || $_POST['passwrd'] == '')
{
echo $txt['no_password'];
}
else
{
if (ssi_checkPassword($_POST['user'], $_POST['passwd'], true))
echo 'success';
else
echo 'wrong_pair';
}
die();
Lo leggo a malapena... Però... Il floodcontroller? Lo richiama dall'SSI?

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 20:24
Quello che il tuo client deve fare è POST'are lo user name come "user" e la password (in plain text) come "passwd".
Postare nel senso che deve connettersi al file php e mandargli quelle info...? Non sono sicuro di averlo capito... Devo spiegarlo al tizio che me lo scrive in C++ quindi devo capirlo bene >_<
Occhio alle eventualy typo - il codice parla di passwrd mentre te dici passwd, siccome ho avuto a che fare con entrambe le occorrenze... ;) Oltretutto nel db è passwd... Non mi è molto chiara sta cosa.

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 20:24
Non è "perfettamente" allineato con SMF, ma quel che manca non dovrebbe essere di tuo interesse (i.e. il codice per migrare la password dopo una conversione da un altro forum a SMF ed eventuali integrazioni con altri sistemi).
L'unico "edge case" che potrebbe in qualche modo interessarti è che la funzione ssi_checkPassword non consente di fare il login con l'email invece che con lo user name, ma non credo sia particolarmente rilevante.
Difatti non mi interessano, potrei comunque farlo dal forum quando sarà il momento ;) E il login dal gioco lo farei esclusivamente con lo username (come in ogni altro gioco, lol).

Grazie mille intanto :)

emanuele

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Lo leggo a malapena...
Tempo di mettere gli occhiali? :P

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Però... Il floodcontroller? Lo richiama dall'SSI?
spamProtection('login');
prima di testare la password.

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 20:24
Quello che il tuo client deve fare è POST'are lo user name come "user" e la password (in plain text) come "passwd".
Postare nel senso che deve connettersi al file php e mandargli quelle info...? Non sono sicuro di averlo capito... Devo spiegarlo al tizio che me lo scrive in C++ quindi devo capirlo bene >_<
ehhh....
Non sono pratico di C++, ma suppongo che se lo devi spiegare a qualcuno che conosce il C++, del codice sia meglio di mille parole:
https://github.com/JosephP91/curlcpp
l'esempio che inizia cone "Here's instead, the creation of an HTTPS POST login form".
Ignora "HTTPS" e dovrebbe essere quello che deve essere fatto.
Ovviamente, poi, dovrà verificare cosa la pagina restituisce, ma questo va oltre le mie competenze...

Ma onestamente, c'è ancora qualcosa che mi sfugge.
Il gioco sarà single o multi player?
Perché se è multi, immagino che vi dovrà essere un server dedicato su cui girerà un programma dedicato il cui unico compito sarà gestire i giocatori e mi pare strano che CryEngine non fornisca di suo un sistema per autenticare i giocatori al server...

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Occhio alle eventualy typo - il codice parla di passwrd mentre te dici passwd, siccome ho avuto a che fare con entrambe le occorrenze... ;) Oltretutto nel db è passwd... Non mi è molto chiara sta cosa.
Hey!
I can't type without typos. :P
Ad ogni modo basta che sia consistente all'interno dello script.

Vediamo, per ora il codice dovrebbe assomigliare a:
<?php
require_once('/path/to/SSI.php');

spamProtection('login');

// Da LogInOut.php
// No funky symbols either.
if ((!isset($_POST['user']) || $_POST['user'] == '') || preg_match('~[<>&"\'=\\\]~'preg_replace('~(&#(\\d{1,7}|x[0-9a-fA-F]{1,6});)~'''$_POST['user'])) != 0)
{
echo $txt['error_invalid_characters_username'];
}
// Hmm... maybe 'admin' will login with no password. Uhh... NO!
elseif (!isset($_POST['passw']) || $_POST['passw'] == '')
{
echo $txt['no_password'];
}
else
{
if (ssi_checkPassword($_POST['user'], $_POST['passw'], true))
echo 'success';
else
echo 'wrong_pair';
}
die();


Ho usato "passw" che credo sia quello che viene generato dall'esempio in C++ che ho linkato sopra.

Flavio93Zena

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 23:10
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Lo leggo a malapena...
Tempo di mettere gli occhiali? :P
Eh li ho è quello il problema XD

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 23:10
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Però... Il floodcontroller? Lo richiama dall'SSI?
spamProtection('login');
prima di testare la password.
Good. Però mi viene in mente anche... E se l'account non è attivo? Se è bannato (nei diversi modi can't post can't login can't register?)? E cosa effettivamente succede se si attiva lo spamProtection? Non siamo in una pagina php quindi... >_<

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 23:10
Ma onestamente, c'è ancora qualcosa che mi sfugge.
Il gioco sarà single o multi player?
Perché se è multi, immagino che vi dovrà essere un server dedicato su cui girerà un programma dedicato il cui unico compito sarà gestire i giocatori e mi pare strano che CryEngine non fornisca di suo un sistema per autenticare i giocatori al server...
Multi... Lol.
Stupisce anche me invece CryEngine pecca proprio in questa cosa, la documentazione è paurosamente insufficiente su questo punto - difatti la stanno riscrivendo a manetta, ogni volta che guardo una pagina è stata aggiornata nell'ultimo mese al massimo.

Citazione di: emanuele il Giovedì - 19 Febbraio 2015 - 23:10
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 21:14
Occhio alle eventualy typo - il codice parla di passwrd mentre te dici passwd, siccome ho avuto a che fare con entrambe le occorrenze... ;) Oltretutto nel db è passwd... Non mi è molto chiara sta cosa.
Hey!
I can't type without typos. :P
Ad ogni modo basta che sia consistente all'interno dello script.

Vediamo, per ora il codice dovrebbe assomigliare a:
codice

Ho usato "passw" che credo sia quello che viene generato dall'esempio in C++ che ho linkato sopra.
Per me va bene che hai usato passw ma se nel database è passwd funziona o c'è bisogno di logica addizionale? Fosse per me rimpiazzerei tutti con passwd e bon ;D


Qualche info in più. Siamo in un'interfaccia flash sostenuta da un programma in C++
Il gioco beh dovrebbe andare in locale e richiamare i dati dei giocatori da colonne addizionali che aggiungeremo nel database, almeno la teoria è questa. Potremmo usare smf_members oppure creare una nuova tabella e associare lo userID, per poi aggiungere altri dati di modo da non rendere smf_members ancora più enorme di quanto già non sia... Non saprei, se hai suggerimenti in merito sono i benvenuti ugualmente :)

emanuele

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
E se l'account non è attivo?
E' già preso in considerazione da ssi_checkPassword.

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Se è bannato (nei diversi modi can't post can't login can't register?)?
SSI.php si occupa dei full ban per conto suo. Gli altri... beh, non erano nelle specifiche. :P

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
E cosa effettivamente succede se si attiva lo spamProtection? Non siamo in una pagina php quindi... >_<
Beh, ovviamente dovrà occuparsene il gioco.
Lo script potrà al massimo ritornare l'informazione che l'utente è bannato, ma nulla più.

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Multi... Lol.
Stupisce anche me invece CryEngine pecca proprio in questa cosa, la documentazione è paurosamente insufficiente su questo punto - difatti la stanno riscrivendo a manetta, ogni volta che guardo una pagina è stata aggiornata nell'ultimo mese al massimo.
Beh, il fatto che la documentazione sia carente non vuol dire che non esista, ad esempio:
http://docs.cryengine.com/display/CPPAPI/IHTTPGateway
IHTTPGateway::PostURL Direi che può essere quello che serve per POST'are dati ad un server/script.

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Per me va bene che hai usato passw ma se nel database è passwd funziona o c'è bisogno di logica addizionale? Fosse per me rimpiazzerei tutti con passwd e bon ;D
Irrilevante.

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Qualche info in più. Siamo in un'interfaccia flash sostenuta da un programma in C++
Oddio, esiste ancora flash? :P

Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Il gioco beh dovrebbe andare in locale e richiamare i dati dei giocatori da colonne addizionali che aggiungeremo nel database, almeno la teoria è questa. Potremmo usare smf_members oppure creare una nuova tabella e associare lo userID, per poi aggiungere altri dati di modo da non rendere smf_members ancora più enorme di quanto già non sia... Non saprei, se hai suggerimenti in merito sono i benvenuti ugualmente :)
ehm:
http://docs.cryengine.com/display/SDKDOC4/Setting+Up+a+Multiplayer+Server
un server multiplayer da quanto posso vedere, richiede un programma che giri *sul server* ed a cui i client si connettono e con cui comunicheranno:
http://docs.cryengine.com/display/SDKDOC4/CryNetwork

Da quel che capisco lo schema è:

| server (macchina) => server (software) | <--- internet ---> | client (software) <= client (macchina) |

Il client (software) si connette via internet ad un software dedicato sul server. Questo software si occupa di tenere in comunicazione i vari client connessi, che non comunicheranno mai con script php o altro, ma solo ed unicamente con il server (software).
Sarà quinti il server (software) a "cercare" i dati nel database e poi comunicarli ai client.

Ovviamente non sono particolarmente ferrato, quindi potrei aver preso capre per cavoli...

Flavio93Zena

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
E se l'account non è attivo?
E' già preso in considerazione da ssi_checkPassword.
Good :)

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Se è bannato (nei diversi modi can't post can't login can't register?)?
SSI.php si occupa dei full ban per conto suo. Gli altri... beh, non erano nelle specifiche. :P
Eh lo so lol mi è venuto in mente dopo.

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
E cosa effettivamente succede se si attiva lo spamProtection? Non siamo in una pagina php quindi... >_<
Beh, ovviamente dovrà occuparsene il gioco.
Lo script potrà al massimo ritornare l'informazione che l'utente è bannato, ma nulla più.
Praticamente devo aggiungere una condizione if user is banned then show reason solo fatto in C++ se ho capito bene. La ragione del ban dove...???

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Multi... Lol.
Stupisce anche me invece CryEngine pecca proprio in questa cosa, la documentazione è paurosamente insufficiente su questo punto - difatti la stanno riscrivendo a manetta, ogni volta che guardo una pagina è stata aggiornata nell'ultimo mese al massimo.
Beh, il fatto che la documentazione sia carente non vuol dire che non esista, ad esempio:
http://docs.cryengine.com/display/CPPAPI/IHTTPGateway
IHTTPGateway::PostURL Direi che può essere quello che serve per POST'are dati ad un server/script.
Il problema è che te sapevi esattamente cosa cercare, io no xD bella, difatti anche il programmatore ha detto che è quello :)

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Per me va bene che hai usato passw ma se nel database è passwd funziona o c'è bisogno di logica addizionale? Fosse per me rimpiazzerei tutti con passwd e bon ;D
Irrilevante.
Però non lo capisco >_< come fa a riconoscere la variabile passwd se viene fornita sotto un nome diverso?

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Qualche info in più. Siamo in un'interfaccia flash sostenuta da un programma in C++
Oddio, esiste ancora flash? :P
Sì per interfacciare C++ e php >_<

Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
Il gioco beh dovrebbe andare in locale e richiamare i dati dei giocatori da colonne addizionali che aggiungeremo nel database, almeno la teoria è questa. Potremmo usare smf_members oppure creare una nuova tabella e associare lo userID, per poi aggiungere altri dati di modo da non rendere smf_members ancora più enorme di quanto già non sia... Non saprei, se hai suggerimenti in merito sono i benvenuti ugualmente :)
ehm:
http://docs.cryengine.com/display/SDKDOC4/Setting+Up+a+Multiplayer+Server
un server multiplayer da quanto posso vedere, richiede un programma che giri *sul server* ed a cui i client si connettono e con cui comunicheranno:
http://docs.cryengine.com/display/SDKDOC4/CryNetwork

Da quel che capisco lo schema è:

| server (macchina) => server (software) | <--- internet ---> | client (software) <= client (macchina) |

Il client (software) si connette via internet ad un software dedicato sul server. Questo software si occupa di tenere in comunicazione i vari client connessi, che non comunicheranno mai con script php o altro, ma solo ed unicamente con il server (software).
Sarà quinti il server (software) a "cercare" i dati nel database e poi comunicarli ai client.

Ovviamente non sono particolarmente ferrato, quindi potrei aver preso capre per cavoli...
Il problema è che come avrai ben visto questa è l'unica pecca del CryEngine, non c'è un tutorial nè una documentazione che ti spieghi bene bene cosa devi fare D: quelle pagine lì le conoscevo ma non dicono granchè, sono solo molto tecniche su cose che ritengo meno importanti (i dettagli del funzionamento e i metodi) e molto molto criptiche sul COME farle funzionare :/
Anche se non sei ferrato hai capito come funziona, te lo confermo. Ho frainteso a capire io cosa intendevi col "programma". Quello dovrebbe occuparsi in effetti delle varie connessioni, resta da capire anche qui il "come". Chiaramente è possibile ma la documentazione si riferisce solo a come fare un server a "mappe", nel senso che mi ricorda quelli di Unreal Tournament (tanto so che lo conosci, lol), e il nostro non è un FPSArena, ma un MMOFPS... Deve esserci un modo di fare più stanze, lobby e inventario, ma nessuno si è mai degnato di scrivere qualcosa di ben fatto al riguardo.

E... Grazie ancora :)

Flavio93Zena

Citazione di: Flavio93Zena il Venerdì - 20 Febbraio 2015 - 05:24
Citazione di: emanuele il Venerdì - 20 Febbraio 2015 - 00:05
Citazione di: Flavio93Zena il Giovedì - 19 Febbraio 2015 - 23:33
E cosa effettivamente succede se si attiva lo spamProtection? Non siamo in una pagina php quindi... >_<
Beh, ovviamente dovrà occuparsene il gioco.
Lo script potrà al massimo ritornare l'informazione che l'utente è bannato, ma nulla più.
Praticamente devo aggiungere una condizione if user is banned then show reason solo fatto in C++ se ho capito bene. La ragione del ban dove...???
Cercando meglio la ragione del ban è in `smf_ban_groups`.`reason`
Mentre non trovo l'ID del membro bannato nel db, ho trovato chiaramente la mail e il ban group ma non l'ID - perchè mi serve ti domanderai... Beh come faccio a fare un check per  vedere se uno è bannato o meno? O meglio, dove sono le cose che devo controllare, perchè il codice sarà in C++ più la chiamata del php menzionato sopra...

emanuele

La tabella è {db_prefix}ban_items.
La rottura di palle maggiore è il ban per IP, che richiede una query un po' antipatica, ma il resto è lì.

Flavio93Zena

Credevo anch'io, però in quella tabella ho queste colonne:
Testi completi   
id_ban
id_ban_group
ip_low1
ip_high1
ip_low2
ip_high2
ip_low3
ip_high3
ip_low4
ip_high4
hostname
email_address
id_member
hits
is_ipv6
ip_low5
ip_high5
ip_low6
ip_high6
ip_low7
ip_high7
ip_low8
ip_high8

Molte sono rimasugli dalla mod IPv6, credo dovrei dropparne un po' ma non so quali (a naso tutta quella roba low high)... Beh loggo poi sul sito di test e faccio un confronto sul db.
Il problema è che la colonna id_member non riporta affatto l'ID del membro D: o meglio se deve riportare quello giusto... Non lo fa. So bene chi ho bannato e gli ID dei "membri" che ho bannato, ti assicuro che non corrispondono, oltretutto la maggioranza dei valori in quella colonna è "0" :| Sono un pochino wtf...

emanuele

Ogni riga rappresenta un "ban item", ogni "ban item" può bannare per diverse condizioni:
* IP
* email
* host
* utente
o combinazioni di esse.

Se crei un ban (a dire il vero sarebbe più corretto dire un trigger) per IP, il "ban item" non conterrà l'id dell'utente perché stai bannando per IP.
Se crei un ban/trigger per email stessa storia.
Se crei un ban/trigger in cui è bannato l'utente (o anche l'utente), allora in tal caso la colonna id_member conterrà l'id dell'utente.

Tu non puoi basarti esclusivamente sull'id dell'utente per verificare un ban, devi necessariamente verificare *tutto* con una query che assomiglierà a:
SELECT id_ban
FROM {db_prefix}ban_items
WHERE {ip_utente_splittato_per_ottetti nel range}
    OR hostname = {hostname_utente}
    OR email_address = {email_utente}
    OR id_member = {id_utente}

Nota: questo non è SQL corretto, è solo pseudo-codice per far capire più o meno come deve essere impostata la query.

Detto questo, non son particolarmente convinto che tu debba scrivere la query per sapere se l'utente è bannato. Come ho detto in precedenza, SSI si occupa di verificare i ban (anche se forse devi cambiare valore ad una variabile, è da verificare), quindi se esegui quel file (ah tra parentesi, se lo fai via C++, almeno non fare il fetch dell'url, esegui php "direttamente" e leggi in qualche modo il risultato dell'esecuzione, altrimenti ti ritrovi con un programma sul server che chiama un il server stesso via http per sapere cosa fare, ed onestamente la cosa sarebbe piuttosto... ehm... diciamo illogica), quindi basta leggere il risultato dell'esecuzione del file e saprai se l'utente è bannato o meno.

Flavio93Zena

Poi inoltro al programmatore. Altra cosa... Permessi del file php necessari? Ho la vaga impressione che un 644 in questo caso potrebbe non funzionare...

emanuele


Flavio93Zena

Non saprei, deve eseguire e ritornare il risultato in... Mah. Se dici così evidentemente basta lasciare 644 ;D :P

Flavio93Zena

Citazione di: emanuele il Lunedì - 02 Marzo 2015 - 22:12
Detto questo, non son particolarmente convinto che tu debba scrivere la query per sapere se l'utente è bannato. Come ho detto in precedenza, SSI si occupa di verificare i ban (anche se forse devi cambiare valore ad una variabile, è da verificare), quindi se esegui quel file (ah tra parentesi, se lo fai via C++, almeno non fare il fetch dell'url, esegui php "direttamente" e leggi in qualche modo il risultato dell'esecuzione, altrimenti ti ritrovi con un programma sul server che chiama un il server stesso via http per sapere cosa fare, ed onestamente la cosa sarebbe piuttosto... ehm... diciamo illogica), quindi basta leggere il risultato dell'esecuzione del file e saprai se l'utente è bannato o meno.
Ho riletto meglio, wait. Perchè un programma sul server che chiama il server? Il login dovrebbe essere parte dell'eseguibile del gioco... O no? Non credo comporti problemi di sicurezza, dovrebbe essere inclusa nel php, che non può essere modificato esternamente, per cui possono fare tutti i reverse engineering che vogliono sull'exe che non mi fregherebbe nulla, direi.
???

Discussioni simili (3)