Connessione a un database esterno
Connessione a un database esterno postato il 31/10/2013 22:31:07 nel forum programmazione, open source e hosting
Salve a tutti
Ho cercato nel forum ma non ho trovato nulla che faccia al caso mio. Se tale domanda dovesse già essere stata posta mi scuso e se poteste darmi il link con la discussione ve ne sarei grato, perché io proprio non l'ho trovata.
Vi espongo il mio problema:
Ho realizzato due siti con altervista (chiamiamoli SITO_A e SITO_B). Il promo (SITO_A) è quello del gioco che sto realizzando con gdrcd, mentre il secondo (SITO_B) è un sito esterno che sto cercando di creare io. Vorrei far sì che SITO_B si rifacesse al database di SITO_A. Per creare la connessione al database ho utilizzato il codice che ho trovato qui: http://www.allwebfree.it/php_mysql_connessione.php ↗. Vi posto il codice da me realizzato:
// dati di accesso
$host = "www.altervista.org";
$login = "SITO_A";
$password = "pswSITO_A";
$db = "my_SITO_A";
// connessione
$conn = mysql_connect($host,$login,$password) or
die('Connessione fallita: ' . mysql_error());
// seleziona database
mysql_select_db($db, $conn) or
die('Selezione database fallita: ' . mysql_error());
Il problema è che mi dice che è impossibile fare la connessione. Il messaggio che esce è questo: Connessione fallita: Access denied for user 'SITO_B'@'localhost' (using password: NO).
Ho anche provato a sostituire nel codice $host = "www.altervista.org"; con $host = "www.SITO_A.altervista.org"; ma nulla.
Qualcuno sa dirmi come posso risolvere il problema?
Pagine → 1 2
01/11/2013 00:37:08
Ciao,è sicuramente un problema di host.
Prova cosi:
sperando tu abbia windows 7, apri il menu start, scrivi nella casella ricerca CMD e premi invio. Dovrebbe aprirsi il prompt dei comandi.
digita "ping www.tuodominioacuivuoicollegarti.it" e premi invio. a quel punto dovrebbe comparirti l'indirizzo ip tradotto dal DNS. A quel punto, sostituisci in host, mettendo quell' indirizzo ip.
Spero funzioni!
01/11/2013 00:50:22
Non sapevo che così si potesse ottenere l'ip. Ho provato ma non funziona lo stesso, mi esce sempre la solita scritta.
01/11/2013 01:04:42
^^ a questo punto provo a verificare se altervista prevede la connessione non da localhost! Dammi un attimo che ti dico!
01/11/2013 01:09:15
Pare che altervista non consenta le connessioni esterne.
L'unica scelta, cosi su due piedi...e considerando che è l'una e sono stanchissimo è sfruttare php webservice json.
;)
01/11/2013 01:27:59
Ah bene, che non so nemmeno cosa sia. Mi toccherà vederlo e fare delle prove. Grazie mille. :-)
02/11/2013 15:03:14 e modificato da blancks il 02/11/2013 15:10:29
Non è possibile collegarsi dall'esterno ad un database su altervista.
http://forum.it.altervista.org/php-mysql-e-apache-htaccess/82557-vorrei-entrare-sul-mio-db-altervista-tramite-programma.html#post610948 ↗
http://it.altervista.org/wiki/index.php/Parametri_di_connessione_MySQL ↗
edit: Utilizza MySqli per la connessione al db, è un estensione più moderna e aggiornata per dialogare con il db MySql. http://it.php.net/manual/it/mysqli.construct.php ↗
04/11/2013 23:44:31
Esiste un modo per aggirare il problema.
Dovresti creare un semplice script che ti permetta ti fare query al database e di dare come risposta un file xml o json e con quello ci fai quello che vuoi.
Ovviamente devi tenere conto dell'aspetto sicurezza
05/11/2013 10:06:13
breaker ha scritto:
Dovresti creare un semplice script che ti permetta ti fare query al database e di dare come risposta un file xml o json e con quello ci fai quello che vuoi.
Concordo. Altervista non ammette connessioni esterne (e ci potrebbe anche stare, visto che è gratuito, è da altri fornitori NON gratuiti che la cosa mi fa salire l'acido).
Dovresti creare un sistema organizzato più o meno così:
-Sito_A
.database_a
.file che accetta una stringa per lanciare una query al database_a, e restituisce il risultato come xml o json
-Sito_B
.script che invia la query da fare sul database_a al file presente sul Sito_A, per poi decodificare il json (o l'xml) che riceverà come risposta.
Capirai bene che quel passaggio di query fra i due siti è rischiosissimo se non gestito correttamente (se uno si mette in mezzo avrebbe il pieno controllo sul database del Sito_A).
Io eviterei di passare una vera e propria query. Piuttosto andrei a creare un po' di metodi che poi si occuperebbero della generazione della query vera e propria. Insomma piuttosto che passare un
SELECT * FROM utenti WHERE idutente=123
gli darei un bel getDatiUtente(123). Autonomamente il file presente sul Sito_A saprebbe che a quell'input deve associare quella determinata query.
Ovviamente allunghi il codice ed il brodo, ma sulla sicurezza non bisogna mai risparmiare. E comunque una struttura di questo tipo ti darebbe il vantaggio di poter cambiare interamente il database da un giorno all'altro senza sfiorare nessuna delle chiamate che il Sito_B fa. Ti basterebbe riscrivere le query sul file_a ed in un sol colpo sei sicuro che tutto il resto continuerà a funzionare correttamente.
Certo non basta così poco per fermare un malintenzionato, ma è già un punto di partenza.
05/11/2013 18:48:37
Un altro controllo di sicurezza che puoi mettere è un filtro all'ip di chi fa le richieste :)
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Wuthering Waves ↗
New Orleans ↗
Enlisted ↗
Neverness to Everness ↗
CRSED: F.O.A.D. ↗
AlterEgo ↗
World of Tanks ↗
Exclusive Villa GdR ↗
Tiles Survive ↗
War Thunder ↗