2012-06-01 8 views
1

내 스크립트 중 하나에 문제가 있습니다. 서버는 PHP에서 실행 중이며, 메신저는 AJAX를 사용하여 데이터를 게시합니다. 여기에 내 대본이있다.

PHP 스크립트 :

<?php 

include './connConf.php'; 

if (isset($_POST['pStr'])){ 
    $preStr=$_POST['pStr']; 
    $query="SELECT * FROM advisory WHERE projname in (SELECT projname FROM advisorydata WHERE prefixStr LIKE '%$preStr')"; 
    $result=mysql_query($query); 
    $num=mysql_numrows($result); 
    if ($num > 0){ 
     echo "<font style=\"font-size:12px\" color=\"#FF6820\" face=\"Century Gothic\"><b>Search Result :</b></font><br><br>"; 
     for ($x=0;$x<$num;$x+=1){ 
      echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Project Name:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"projname")."</b></font><br>"; 
      echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">APMS ID:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"apmsid")."</b></font><br>"; 
      echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Prefix/es:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"projprefix")."</b></font><br>"; 
      echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Usage Type:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"usagetype")."</b></font><br>"; 
      echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Rate:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"projrate")."</b></font><br>"; 
      echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Offer Details:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"offerdetails")."</b></font><br><br>"; 
     } 
    }else{ 
     echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">No results found ...</font>"; 
    } 
}else{ 
    echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Problems encountered while processing the data ...</font>"; 
} 
?> 

JS 스크립트 :

function QueryPrefix() 
{ 
    var xmlhttp; 
    var pStr = document.getElementById('Editbox2'); 
    var htmlHolder = document.getElementById('Html1'); 
    var butStr = document.getElementById('Button1'); 

    if (pStr.value.length == 0){ 
     alert("Please enter a value on the box provided!"); 
     return; 
    } 
    pStr.value=""; 

    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4) 
      { 
       htmlHolder.innerHTML=xmlhttp.responseText; 
       butStr.disabled=false; 
      } 
    } 
    butStr.disabled=true; 

    xmlhttp.open("POST","searchutype.php",false); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send("pStr=" + pStr.value); 
} 
+1

아마도 stackoverflow 또는 다른 프로그래밍 사이트 중 하나에 대해 더 좋은 질문 일 수 있습니다. 왜''pStr.value = ""'를 설정하고 나중에''xmlhttp.send ("pStr ="+ pStr.value ")의 값을 사용하려고합니까? 그리고, 당신이 이것을하기 위해 jQuery와 같은 것을 사용하지 않는 이유가 있습니까? 좀 더 쉽게 만들 수 있습니다 ... 비록이 접근법이 좀 더 가볍습니다. – tfitzgerald

+0

오, 소년. 이 문제와 관련이 없지만 매우 중요합니다. 전체 데이터베이스가 손상 될 수있는 심각한 보안 허점이 있습니다. ** SQL 인젝션 **을 읽어보십시오. 또한 ** 캐스 캐이 딩 스타일 시트 **를 사용하면 코드를 훨씬 쉽게 읽을 수 있으며 전송할 데이터 양도 줄일 수 있습니다. –

답변

0

나는 문제를 재현 시도하고 서버에서 클라이언트와 PHP 5.2로 크롬을 사용, 나를 위해 작동하는 것 같다. 그러나 Content-Length 헤더를 헤더로 보내지는 않는다는 것을 알았습니다. 이는 문제 일 수 있습니다. 추가해보기 :

var post = "pStr=" + pStr.value; 
xmlhttp.setRequestHeader("Content-length",post.length); 

물론 게시하기 전에 pStr.value를 URL 인코딩해야합니다. 이전에 nickb가 말했듯이 jquery와 같은 프레임 워크 라이브러리를 사용하지 않는 이유는 무엇입니까?

관련 문제