[REZOLVAT] AJAX+PHP: Nu trimite valorile catre database.php

Discutii legate de AJAX, jQuery, MooTools, Prototype, Dojo, Yahoo! UI Library,script.aculo.us, ExtJS,AngularJS, Backbone.js, Ember.js, KnockoutJS

Moderator: Moderatori

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

[REZOLVAT] AJAX+PHP: Nu trimite valorile catre database.php

Mesajde LXS » Sâm Ian 10, 2009 2:48 am

Am facut un formular care are 2 campuri si un selector.
Fisierul database.php, contine o conexiune catre baza de date. Completand cele 2 campuri si selectand un server, ar trebui sa se conecteze la server daca utilizatorul si parola sunt introduse corect, fara a mai fi nevoie de a apasa butonul submit, deoarece folosesc AJAX pentru a updata fisierul realtime!
Am facut foarte multe verificari am verificat daca variabilele au vreo valoare sau sunt nule. Desigur toate variabilele sunt nule! :(. Nu stiu de ce nu trimite formularul valorile catre fisierul database.php cand folosesc AJAX ca sa le updateze realtime?!

Cele 2 fisiere:

index.php

Cod: Selectaţi tot

<?PHP
// Aici este cod HTML;
$template = <<<TEMPLATE
<HTML>
<HEAD>
<SCRIPT type="text/javascript">
// Aici este cod JavaScript;
function showText(val)
{
   if(val.length==0)
   {
      document.getElementById("showText").innerHTML="";
      return;
   }
   xmlHttp=browserValidator();
   if(xmlHttp==null)
   {
      alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
      return;
   }
   var url="database.php";
   xmlHttp.onreadystatechange=changedState;
   xmlHttp.open("POST",url,true);
   xmlHttp.send(null);
}
function changedState()
{
   if(xmlHttp.readyState==4)
   {
      document.getElementById("showTexts").innerHTML=xmlHttp.responseText;
   }
}
function browserValidator()
{
   var xmlHttp;
   try
   {
      // Numai pentru browserele Firefox, Opera 8.0+, Safari;
      xmlHttp=new XMLHttpRequest();
   }
   catch(e)
   {
      try
      {
         // Numai pentru browserul Internet Explorer;
         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
         try
         {
            // Alte browsere.
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch(e)
         {
            // Eroare daca browserul nu este compatibil cu aplicatia.
            alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
            return false;
         }
      }
   }
   return xmlHttp;
}
</SCRIPT>
<TITLE>
MySQL Connector...
</TITLE>
</HEAD>
<BODY>
<FORM name="LXS" action="#" method="POST">
<B><FONT color="red">Server:</FONT></B>
<SELECT id="server" name="server" onclick="showText(this.value)">
<OPTION value="localhost">Default (localhost)</OPTION>
<OPTION value="" selected="yes">NONE</OPTION>
</SELECT>
<B><FONT color="red">Utilizator:</FONT></B><INPUT type="text" name="utilizator" size="10" maxlength="15" onkeyup="showText(this.value)">
<B><FONT color="red">Parola:</FONT></B><INPUT type="password" name="parola" size="10" maxlength="15" onkeyup="showText(this.value)">
</FORM>
<SPAN id="showTexts"></SPAN>
</BODY>
</HTML>
TEMPLATE;
print $template;
?>



database.php

Cod: Selectaţi tot

<?PHP
// Aici este cod PHP;
@$getserver = $_POST['server'];
@$getutilizator = $_POST['utilizator'];
@$getparola = $_POST['parola'];
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip == '127.0.0.1')
{
   if((!empty($getserver))&&(!empty($getutilizator))&&(!empty($getparola)))
   {
      print '<B>Ai introdus urmatoarele valori in cele 2 campuri:</B><BR><BR>Server: '.$getserver.'<BR>Utilizator: '.$getutilizator.'<BR>Parola: '.$getparola.'<BR>';
      $connect = mysql_connect($getserver,$getutilizator,$getparola);
      if($connect == true)
      {
      print 'Conexiune reusita!';
      }
      else
      {
      print 'Conexiune nereusita: Utilizator sau Parola introdusa incorrect, sau in cel mai rau caz acest server nu exista!';
      }
   }
   else
   {

      print 'Pentru a afisa urmatoarele date trebuie sa apasati butonul accept, si campurile sa nu fie goale verificati inainte de a apasa butonul!';
   }
}
else
{
   print '<CENTER><B>Nu sunteti autorizat sa vizitati aceasta pagina, va rugam sa luati legatura cu administratorul site-ului sau cu cei de la suport! Ip-ul dumneavoastra este '.$ip.'</B></CENTER>';
}
?>
Ultima oară modificat Vin Ian 16, 2009 12:40 am de către LXS, modificat de 3 ori în total.



dechim
Senior Member
Mesaje: 1486
Membru din: Mar Mai 10, 2005 11:53 pm
Localitate: Drobeta Turnu Severin

Mesajde dechim » Sâm Ian 10, 2009 1:39 pm

In index.php in loc de
print $template;
trebuie:
print html_entity_decode($template);

Si mai ai una mica
document.getElementById(&quot;showText&quot;).innerHTML=&quot;&quot;;
(nu e showText, e showTexts)

Poti sa schimbi si in editor &quot; cu "

Ar trebui sa trimiti si header-ul prin ajax

Cod: Selectaţi tot

   xmlHttp.open('POST', url, true);
   //xmlhttp.setRequestHeader('X-Referer', document.location);
     xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
     xmlHttp.setRequestHeader("Content-Length", str.length);
     xmlHttp.setRequestHeader("Connection", "close");
     xmlHttp.send(str);

// str este stringul cu variabilele post de trimis

Ma rog ... merge si asa !

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

Mesajde LXS » Sâm Ian 10, 2009 4:45 pm

Am remediat toate greselile dar nu imi merge... AJAX doar imi apeleaza fisierul database.php dar nu trimite valori catre el....
Am facut cum ai zis dar nu merge...
MS

EDIT: Am incercat cu metoda GET si functioneaza. Dar prefer medoda POST va rog help!

dechim
Senior Member
Mesaje: 1486
Membru din: Mar Mai 10, 2005 11:53 pm
Localitate: Drobeta Turnu Severin

Mesajde dechim » Sâm Ian 10, 2009 10:29 pm

Modifici un pic functia showText()

Cod: Selectaţi tot

function showText()
{
   var server = document.LXS.server.options[document.LXS.server.selectedIndex].value;
   var utilizator = document.LXS.utilizator.value;
   var parola = document.LXS.parola.value;

   var str = '?server='+server+'&utilizator='+utilizator+'&parola='+parola;
    xmlHttp=browserValidator();
    if(xmlHttp==null)
    {
        alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
        return;
    }
    var url="database.php";
    xmlHttp.onreadystatechange=changedState;
    xmlHttp.open("POST",url,true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    xmlHttp.setRequestHeader("Content-Length", str.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(str);
}


Vezi ca nu mai are parametru, determina valorile din forma singura, modifici si onkeyup, onclick corespunzator
EDIT:
Am uitat si verificarea: if (server.length==0 || utilizator.length==0 || parola.length==0) return;

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

Mesajde LXS » Dum Ian 11, 2009 4:11 pm

Da, javascript primeste datele de la formular , dar php nu. AJAX doar apeleaza fisierul PHP, nu stiu de ce nu trimite datale din javascript to php??? Nu stiu ce sa mai fac dar metoda POST cred ca nu functioneaza, mentionez ca metoda GET a functionat in schimb metoda POST nu....

Asa arata fisierele acum...:

index.php

Cod: Selectaţi tot

<?PHP
// Aici este cod HTML;
$template = <<<TEMPLATE
<HTML>
<HEAD>
<SCRIPT type="text/javascript">
// Aici este cod JavaScript;
function showText()
{
   var server = document.LXS.server.options[document.LXS.server.selectedIndex].value;
   var utilizator = document.LXS.utilizator.value;
   var parola = document.LXS.parola.value;

   if((server.length||utilizator.length||parola.length)==0)return showTexts.innerHTML="0 Value";
    var str = '?server='+server+'&utilizator='+utilizator+'&parola='+parola;
    xmlHttp=browserValidator();
    if(xmlHttp==null)
    {
        alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
        return;
    }
    var url="database.php";
    xmlHttp.onreadystatechange=changedState;
    xmlHttp.open("POST",url,true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    xmlHttp.setRequestHeader("Content-Length", str.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(str);
}
function changedState()
{
   if(xmlHttp.readyState==4)
   {
      document.getElementById("showTexts").innerHTML=xmlHttp.responseText;
   }
}
function browserValidator()
{
   var xmlHttp;
   try
   {
      // Numai pentru browserele Firefox, Opera 8.0+, Safari;
      xmlHttp=new XMLHttpRequest();
   }
   catch(e)
   {
      try
      {
         // Numai pentru browserul Internet Explorer;
         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
         try
         {
            // Alte browsere.
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch(e)
         {
            // Eroare daca browserul nu este compatibil cu aplicatie.
            alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
            return false;
         }
      }
   }
   return xmlHttp;
}
</SCRIPT>
<TITLE>
MySQL Connector...
</TITLE>
</HEAD>
<BODY>
<FORM name="LXS" action="" method="POST">
<B><FONT color="red">Server:</FONT></B>
<SELECT id="server" name="server" onclick="showText()">
<OPTION value="localhost">Default (localhost)</OPTION>
<OPTION value="" selected="yes">NONE</OPTION>
</SELECT>
<B><FONT color="red">Utilizator:</FONT></B><INPUT type="text" id="utilizator" name="utilizator" size="10" maxlength="15" onkeyup="showText()">
<B><FONT color="red">Parola:</FONT></B><INPUT type="password" name="parola" id="parola" size="10" maxlength="15" onkeyup="showText()">
</FORM>
<SPAN id="showTexts"></SPAN>
</BODY>
</HTML>
TEMPLATE;
print html_entity_decode($template);
?>



database.php

Cod: Selectaţi tot

<?PHP
$getserver = $_POST['server'];
$getutilizator = $_POST['utilizator'];
$getparola = $_POST['parola'];
$ip = $_SERVER['REMOTE_ADDR'];
// Aici este cod PHP;
if ($ip == "127.0.0.1")
{
   if((!empty($getserver))&&(!empty($getutilizator))&&(!empty($getparola)))
   {
      print "<B>Ai introdus urmatoarele valori in cele 2 campuri:</B><BR><BR>Server: ".$getserver."<BR>Utilizator: ".$getutilizator."<BR>Parola: ".$getparola."<BR>";
      $connect = mysql_connect($getserver,$getutilizator,$getparola);
      if($connect == true)
      {
      print "Conexiune reusita!";
      }
      else
      {
      print "Conexiune nereusita: Utilizator sau Parola introdusa incorrect, sau in cel mai rau caz acest server nu exista!";
      }
   }
   else
   {
      print "Pentru a afisa urmatoarele date trebuie sa apasati butonul accept, si campurile sa nu fie goale verificati inainte de a apasa butonul!";
   }
}
else
{
   print "<CENTER><B>Nu sunteti autorizat sa vizitati aceasta pagina, va rugam luati contact su administratorul site-ului sau cu cei de la suport! Ip-ul dumneavoastra este ".$ip."</B></CENTER>";
}
?>

dechim
Senior Member
Mesaje: 1486
Membru din: Mar Mai 10, 2005 11:53 pm
Localitate: Drobeta Turnu Severin

Mesajde dechim » Lun Ian 12, 2009 8:51 am

Am adaugat in database.php, linia
<?PHP
$getserver = $_POST['server'];
$getutilizator = $_POST['utilizator'];
$getparola = $_POST['parola'];
$ip = $_SERVER['REMOTE_ADDR'];

echo "Server : $getserver <br /> Utilizator: $getutilizator <br /> Parola : $getparola <br /> IP: $ip <br />";


si merge!
Nu stiu la tine de ce nu vrea

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

Mesajde LXS » Lun Ian 12, 2009 8:54 pm

Linia asta:

Cod: Selectaţi tot

var server = document.LXS.server.options[document.LXS.server.selectedIndex].value;


[EDIT]
Am incercat si asa:

Cod: Selectaţi tot

var selectServer = document.getElementById('server').selectedIndex;
var server = document.getElementById('server')[selectServer].value;


Exista vre-o alta modialitate de a lua valorile din selector cu JavaScript?????

RE-edit: Si am mai observat o chestie daca selectez optiunea NONE atunci merge conditia if din codul JavaScript daca selectez optiunea localhost nu mai apare apare conditia din JavaScipt (asta inseamna ca are o valoare de gen white space), dar ma intreb de ce conditia din PHP returneaza blocul else daca are o valoare (!empty()).
[/EDIT]

Nu returneaza nici o valoare am crezut ca e devina browserul si nu suporta anumite obiecte dar am incercat pe doua browsere pe IE si pe FIREFOX campul user si pass trimite PHP-ului valorile dar selectorul cu id="server" nu...
MS mult pentru tot, o sa ma mai chiunui cu linia aia o sa mai citesc niste tutoriale despre JavaScript options[] sa vad de ce nu imi merge...
MS inca odata :D :occasion5:

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

Mesajde LXS » Mie Ian 14, 2009 8:53 pm

Va rog helpp nu stiu ce se intampla am incercart in foarte multe feluri dar nici un rezultat!!!

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Joi Ian 15, 2009 5:36 am

pentru valoarea campului cu id="select" de exemplu:
var select = document.getElementById('select')
var valueselect = select.options[select.selectedIndex].text

Bafta

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Joi Ian 15, 2009 10:17 am

oceans scrie:pentru valoarea campului cu id="select" de exemplu:
var select = document.getElementById('select')
var valueselect = select.options[select.selectedIndex].text

Bafta
Mai corect este

Cod: Selectaţi tot

var valueselect = select.options[select.selectedIndex].value
In cazul <option value='x'>y</option> cele doua proprietati (.text si .value) au valori diferite.

oceans
Senior Member
Mesaje: 504
Membru din: Mar Noi 13, 2007 3:06 pm

Mesajde oceans » Joi Ian 15, 2009 1:58 pm

Da in ultima perioada am folosit tot mai mult .text, nu stiu care e mai corect sau nu dar presupun ca ai dreptate din moment ce text-ul poate sa contina si spatii.

onclick="showText()"

incearca

onchange="showText()"

LXS
Senior Member
Mesaje: 375
Membru din: Dum Oct 05, 2008 8:34 pm
Localitate: Timisoara
Contact:

Mesajde LXS » Vin Ian 16, 2009 12:32 am

Multumesc tuturor pentru ajutor :D nici gand nu era problema variabilei server ea prelua valorile corect din selector ci "?" din fata server nici nu ma gandeam la asta...
"?" - trebuie sters, pentru a functiona corect
!!!GRESIT!!!:

Cod: Selectaţi tot

var str = '?server='+server+'&utilizator='+utilizator+'&parola='+parola;

!!!CORRECT!!!:

Cod: Selectaţi tot

var str = 'server='+server+'&utilizator='+utilizator+'&parola='+parola;

Acum functioneaza tot corect, tot scriptu aici:
index.php

Cod: Selectaţi tot

<?PHP
// Aici este cod HTML;
$template = <<<TEMPLATE
<HTML>
<HEAD>
<SCRIPT type="text/javascript">
// Aici este cod JavaScript;
function showText()
{
   var server = document.LXS.server.options[document.LXS.server.selectedIndex].value;
   var utilizator = document.LXS.utilizator.value;
   var parola = document.LXS.parola.value;
   if((server.length||utilizator.length||parola.length)==0)return showTexts.innerHTML="0 Value";
    var str = 'server='+server+'&utilizator='+utilizator+'&parola='+parola;
    xmlHttp=browserValidator();
    if(xmlHttp==null)
    {
        alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
        return;
    }
    var url="database.php";
    xmlHttp.onreadystatechange=changedState;
    xmlHttp.open("POST",url,true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
    xmlHttp.setRequestHeader("Content-Length", str.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(str);
}
function changedState()
{
   if(xmlHttp.readyState==4)
   {
      document.getElementById("showTexts").innerHTML=xmlHttp.responseText;
   }
}
function browserValidator()
{
   var xmlHttp;
   try
   {
      // Numai pentru browserele Firefox, Opera 8.0+, Safari;
      xmlHttp=new XMLHttpRequest();
   }
   catch(e)
   {
      try
      {
         // Numai pentru browserul Internet Explorer;
         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch(e)
      {
         try
         {
            // Alte browsere.
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
         catch(e)
         {
            // Eroare daca browserul nu este compatibil cu aplicatie.
            alert('Browserul dumneavoastra nu suporta aceasta aplicatie, va rugam instalati o versiune compatibila. (Exemplu: Firefox)');
            return false;
         }
      }
   }
   return xmlHttp;
}
</SCRIPT>
<TITLE>
MySQL Connector...
</TITLE>
</HEAD>
<BODY>
<FORM name="LXS" action="" method="POST">
<B><FONT color="red">Server:</FONT></B>
<SELECT id="server" name="server" onChange="showText()">
<OPTION value="localhost">Default (localhost)</OPTION>
<OPTION value="">NONE</OPTION>
</SELECT>
<B><FONT color="red">Utilizator:</FONT></B><INPUT type="text" id="utilizator" name="utilizator" size="10" maxlength="15" onkeyup="showText()">
<B><FONT color="red">Parola:</FONT></B><INPUT type="password" name="parola" id="parola" size="10" maxlength="15" onkeyup="showText()">
</FORM>
<SPAN id="showTexts"></SPAN>
</BODY>
</HTML>
TEMPLATE;
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip == "127.0.0.1")
{
   print html_entity_decode($template);
}
else
{
   print "<CENTER><B>Nu sunteti autorizat sa vizitati aceasta pagina, va rugam luati contact cu Administratorul site-ului sau cu cei de la Suport! Adresa dumneavoastra IP este ".$ip."</B></CENTER>";
}

?>

database.php

Cod: Selectaţi tot

<?PHP
// Aici este cod PHP;
error_reporting(0);
$getserver = $_POST['server'];
$getutilizator = $_POST['utilizator'];
$getparola = $_POST['parola'];
$ip = $_SERVER['REMOTE_ADDR'];
echo "<B>FOR DEBUGING: </B>"."<BR><BR>";
print "Server : $getserver <br /> Utilizator: $getutilizator <br /> Parola : $getparola <br /> IP: $ip <br /><BR>";
print "<B>STATUS: </B>"."<BR><BR>";
if((!empty($getserver))&&(!empty($getutilizator))&&(!empty($getparola)))
{
   $connect = mysql_connect($getserver,$getutilizator,$getparola);
   if($connect == true)
   {
      print "Conexiune reusita!";
   }
   else
   {
      print "Conexiune nereusita: Utilizator sau Parola introdusa incorrect, sau in cel mai rau caz acest server nu exista!";
   }
}
else
{
   print "Pentru a afisa urmatoarele date trebuie sa apasati butonul accept, si campurile sa nu fie goale verificati inainte de a apasa butonul!";
}
?>

:lol:


Înapoi la “Librarii Javascript”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 20 vizitatori