Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Trimitere blank-uri intr-o fct AJAX
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Subiectul anterior :: Subiectul următor  
Autor Mesaj
ynfonet



Data înscrierii: 14/Dec/2005
Mesaje: 124

Trimis: Mar Sep 02, 2008 10:28 am    Titlul subiectului: Trimitere blank-uri intr-o fct AJAX  

Buna ziua

am urm cod:
==========
Cod:
   <script type="text/javascript" language="javascript">
      function createXmlHttpObject(){
        var xmlHttp;
        try {   // Firefox, Opera 8.0+, Safari
          xmlHttp = new XMLHttpRequest();
        }catch(e){   //Internet Explorer
          try{
            xmlHttp = new ActiveObject("Msxml2.XMLHTTP");
         }catch(e){
           try {
             xmlHttp = new ActiveObject("Microsoft.XMLHTTP");
           }catch(e){
             alert ("Your browser does not support AJAX!");
             return;
           }
         }
        }
        return xmlHttp;
      }   //END function GetXmlHttpObject
      function showField(fieldID,fieldValue){
        var fid  = fieldID;
        var fval = fieldValue;
        xmlHttp = createXmlHttpObject();
        var url = "valid.php";
        url = url+"?fid="+fid+"&fval="+fval;
        xmlHttp.onreadystatechange = function(){
               if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
                   document.getElementById("showData"+fid).innerHTML = xmlHttp.responseText;
               }
              }   //END functionstateChange         
        xmlHttp.open("GET",url,true);
        xmlHttp.send();
      }   //END function validateField


iar la apelarea functiei:

Cod:
onclick=showField(this.id,'".$val1."')


vreau sa incarce
Cod:
$val1 = "aaa   bbb   ccc ".$ct1." ddd      ";
$ct1=1111111;


insa imi apare msg de err, si nu imi ruleaza functia

Datorita spatiilor din stringul trimis la server.

Cum pot ciompensa aceasta deficienta (si eventual alte caractere speciale)?

Multumesc anticipat[/code]
Sus  
Amenthes



Data înscrierii: 12/Dec/2005
Mesaje: 620

Trimis: Mar Sep 02, 2008 10:32 am    Titlul subiectului:  

http://developer.mozilla.org/index.php?title=En/Core_JavaScript_1.5_Reference/Global_Functions/EncodeURI&highlight=encodeURI

http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Functions/encodeURIComponent

si ca fallback:

http://developer.mozilla.org/index.php?title=En/Core_JavaScript_1.5_Guide/Predefined_Functions/Escape_and_unescape_Functions&highlight=encodeURI
Sus  
ynfonet



Data înscrierii: 14/Dec/2005
Mesaje: 124

Trimis: Mar Sep 02, 2008 11:16 am    Titlul subiectului:  

adica modific linia:

Cod:
url = url+"?fid="+fid+"&fval="+fval;


astfel:
Cod:
url = url+"?fid="+fid+"&fval="+encodeURI(fval);


???

url-ul acela ma duce intr-un fis php
unde am :
valid.php
=======
Cod:
<?php

if(isset($_GET['fid'])) {
  $fid  = $_GET['fid'];
  $fval = $_GET['fval'];
 
  echo $fval;
 
?>


In acest fis. $fval nu este codat?
Cum revin aici la forma lui initiala?

Multumesc anticipat
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu

Trimis: Mar Sep 02, 2008 11:20 am    Titlul subiectului:  

Recomand sa folosesti encodeUriComponent, nu encodeUri. In plus, nu trebuie sa iti bati capul, variabilele vor fi trimise la request cum trebuie (escaped), si interpretate ca atare de codul php (unescaped).
Sus  
ynfonet



Data înscrierii: 14/Dec/2005
Mesaje: 124

Trimis: Mar Sep 02, 2008 1:31 pm    Titlul subiectului:  

Cod:
$val1 = "aaa   bbb   ccc ".$ct1." ddd      ";
$ct1=1111111;


devine:

Cod:
$val1 = "AAA  bbb   CCC".$ct1."ddd        ". $ct2 ."";

$ct2 = "(stare IS NULL OR TRIM(stare)='') AND TRIM(valid)='OK'";


$ct2 se vrea a fi o instructiune mysql ('SELECT ... FROM table1 WHERE $ct2 GROUP BY ... ORDER BY...')

la transmiterea $ct2 in forma aceasta nu raspunde

Cum as putea trimite acele caractere?

Multumesc anticipat
Sus  
mihaitha



Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu

Trimis: Mar Sep 02, 2008 1:54 pm    Titlul subiectului:  

Mda, un asemenea string e cam greu sa il trimiti prin GET. Recomand sa folosesti AJAX POST sa trimiti valorile ( http://www.openjs.com/articles/ajax_xmlhttp_using_post.php )
Sus  
olympia



Data înscrierii: 26/Mai/2008
Mesaje: 179

Trimis: Mar Sep 02, 2008 4:00 pm    Titlul subiectului:  

dupa parerea mea, sunt mai multe probleme:

- xmlHttp.send(null); //fara null merje doar pe IE
- onclick=showField(this.id,'".$val1."') //de unde 'this'? cred ca trebuie sa trimiti argumentele functiei si atat. in plus, ceva nu pare corect aici. ai un handler js in string php? dk nu, de ce $val1 nu e in taguri php cu echo?
- este nerecomandat sa trimiti o interogare sql in ajax. interogarea o ai in scriptul de prelucrare - in ajax trimiti doar variabilele (e o vulnerabilitate majora);

n-am timp sa mai uit mai mult, asta e ce pare la prima vedere. problema nu e din cauza ca trimiti "blankuri".
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> AJAX
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community