Query di un db "dall'esterno"

Sto usando ajax per fare una query ad un db, cio mi collego ad uno script php(che si trova sullo stesso dominio del db) con uno script javascrip e ne ottengo i risultati della query.

Questo funziona fin tanto che lo script php e quello javascript sono sullo stesso domino.

Il mio problema che per forza di cose lo script javascript non potr mai essere sullo stesso dominio di quello php, e quindi mi viene sollevata l'eccezione "permessi negati".

C' una soluzione per aggirare il problema?

inviato 10 anni fa
blow
blow
1
X 0 X

chi mostra quest'errore?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Lo mostra firefox dopo alcuni secondi che cerca di connettersi al database.

Ma l'unico modo per accedere ad un db essere nel suo stesso domino? Mi sembra tanto strano...

risposto 9 anni fa
blow
blow
1
X 0 X

Tieni presente che chi sta accedendo al DB e PHP quindi, fintanto che lo script PHP non viene spostato dalla macchina su cui gira MyQL, non dovrebbe cambiare nulla.

Quindi il problema dei permessi non riguarda il'interazione PHP - MySQL ma Javascript - PHP. Non credo quindi che quell'errore si riferisca ad un problema di accesso la database ma pittosto venga generato dal codice PHP, forse per impedire di essere richiamato da Javascript "estraneo".

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Si quello lo so, lo so l'eccezione viene sollevata perch cerco di accedere ad un php "esterno" volevo sapere se il problema era aggirabile...

risposto 9 anni fa
blow
blow
1
X 0 X

Tieni presente che una chiamata AJAX ad uno script PHP comunque esterna, nel senso che proviene dal browser mentre a rispondere c' il PHP che sul server...

Comunque il cotrollo potrebbe essere proprio nel codice PHP quindi potresti controllare se effettivamente lo script ad impedire tale connessione, ed eventualmente rimuovere il controllo.

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

No non c' nessun controllo, nello scritp php ci ho messo una semplice query ad un db.

Lo so che lo script javascript a livello client, ma funziona solo se contenuto sotto lo stesso dominio dello script php...

risposto 9 anni fa
blow
blow
1
X 0 X

E perch? Chi ne impedisce il funzionamento? :o

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

ah non saprei :D

Ma stato pensato cos! Per problemi di sicurezza penso...

risposto 9 anni fa
blow
blow
1
X 0 X

Pensato da chi? E cosa?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Chi ha "inventato" AJAX, pensando di controllare un db dinamicamente con javascript, probabilmente ha ritenuto giusto che per problemi di sicurezza lo script javascript debba girare sotto il dominio di quello php.

;D

risposto 9 anni fa
blow
blow
1
X 0 X

la tua ipotesi la negazione del web 2.0 :crazy:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ma mica un'ipotesi...ho provato eh!

Non va, e cercando un po' in rete sembra normale...

risposto 9 anni fa
blow
blow
1
X 0 X

potresti riportare il codice, sia javascript che PHP?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Certo, qui il javascript:

var myRequest=null;

function CreateXmlHttpObject(myFunction) {
 var xmlhttpObject=null;
 try{
  xmlhttpObject=new XMLHttpRequest();
 }catch(e){
  try{
    xmlhttpObject=new ActiveXObject("Msxml2.XMLHTTP");
  }catch(e){
    xmlhttpObject=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
 xmlhttpObject.onreadystatechange=myFunction;
 return xmlhttpObject;
}

function result(){
  if (myRequest.readyState==4&& myRequest.status==200) {
    alert(myRequest.responseText);
  }
}

function requestHttpConnection(web){
  myRequest=CreateXmlHttpObject(result);
  myRequest.open("GET",web+"?link="+link);
  myRequest.send(null);
}
//==================================================================================

E qui il PHP (query.php):

<?php include('config\config.php');
if(isset($_GET['link'])){
$link=$_GET['link'];
}
$punt_db = mysql_connect($host,$user,$psw) or $conn="Errore nella connessione al database&";
mysql_select_db($db,$punt_db) or $conn="Impossibile raggiungere il database".$db."&";
$query="SELECT * FROM ".$tab." WHERE web_link='".$link."'";
$ris=mysql_query($query,$punt_db) or $conn="Errore nella query&";
while($riga=mysql_fetch_object($ris)){
echo $riga->draw_data;
}
mysql_free_result($ris);
mysql_close($punt_db);
?>
risposto 9 anni fa
blow
blow
1
modificato 9 anni fa
X 0 X

Quando faccio myRequest.open("GET",web+"?link="+link); al posto di web c' ovviamente l'URL di query.php

risposto 9 anni fa
blow
blow
1
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda