PDA

View Full Version : سوال: چرا رویداد readystate برابر با 0 است؟



hmkhafan
سه شنبه 24 دی 1392, 20:51 عصر
با سلام و خسته نباشید خدمت تمامی برنامه نویسان و دوستان

در کدهای من رویداد readystate برابر با صفره و هر کاری میکنم 4 نمیشه

کدم اینه:



<script>
var XmlHttp=null;
//XmlHttpRequest function
function GetXMLHTTPObject()
{

try
{
XmlHttp=new XMLHttpRequest();
}
catch (e)
{
try
{
XmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
XmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return (XmlHttp);
}
//check function
function Checkuser()
{


XmlHttp=GetXMLHTTPObject();
if(XmlHttp==null)
{
alert("this browser dos not support Ajax!");
return ;
}
url='checkpage.php?user='+ document.getElementById('user').value;

XmlHttp.onreadystatechange = stateChanged();
XmlHttp.open('GET',url,true);

XmlHttp.send(null);
return false;
}
//stateChanged function
function stateChanged()
{

if(XmlHttp.readyState==4 || XmlHttp.readyState=="complete")
{
if(XmlHttp.responseText==1)
{
document.getElementById('user').style.border="1px solid #FF0000";
}
else
{
document.getElementById('user').style.border="1px solid #00FF00";
}
}
}

</script>




کد سمت سرور هم اینه:



<?php
$con=mysql_connect('localhost','root','');
$db=mysql_select_db('ajax',$con);
$sql="SELECT * FROM `users` WHERE `username` ='".$_GET['user']."'";
$r=mysql_query($sql);
$result=mysql_num_rows($r);
echo( $result);
?>



کد فرمم هم اینه:


<table>
<tr>
<td><label for="name" >real name</label></td>
<td><input type="text" id="name"/></td>
</tr>
<tr>
<td><label for="user" >username</label></td>
<td><input type="text" id="user"/></td>
</tr>
<tr>
<td><label for="pass" >password</label></td>
<td><input type="text" id="pass"/></td>
</tr>
<tr>
<td><input type="button" id="btnsubmit" value="submit" onclick="Checkuser();"/></td>
</tr>
</table>


ممنون میشم اگه جوابم رو زود بدید چون واقعا بهش احتیاج دارم.

با تشکر

Javidhb
چهارشنبه 25 دی 1392, 01:29 صبح
کداتون بنظر نمیاد مشکلی داشته باشه....
ارورتون ممکنه از url باشه (به احتمال زیاد)
readystat وقتی برابر 0 هست که هیچ عملیاتی شروع نشده باشه... که معمولا به خاطر آدرس اشتباه پیش میاد.

تست کنید ببینید میتونید همون url که توی javascript استفاده کردید رو بصورت مستقیم توی مرورگر هم اجرا کنید (برای user از یه مقدار معتبر استفاده کنید)....

hmkhafan
چهارشنبه 25 دی 1392, 16:04 عصر
بله به طور مستقیم جواب میده، دیگه پاک گیج شدم.
ولی عیب نداره بالاخره میفهمم مشکل از کجاست.

Javidhb
چهارشنبه 25 دی 1392, 23:44 عصر
این قسمت کدت رو به این شکل تغییر بده:

XmlHttp.onreadystatechange = function(){
stateChanged();
};

از اون ایرادای الکی بود!

منبع (http://stackoverflow.com/questions/751269/ajax-wont-get-past-readystate-1-why)

ولی بهتره از jquery استفاده کنی.. هم کدهای کمتری مینویسی، هم از این اشکالا برات پیش نمیاد..

hmkhafan
جمعه 27 دی 1392, 15:42 عصر
هنوز تست نکردم ولی ممنون
بذار تست کنم ببینم چی میش:لبخندساده:ه!

kb0y667
یک شنبه 06 بهمن 1392, 03:57 صبح
سمت سرور خیلی خطرناک عمل کردی هااااااا !!
فردا پس فردا نگی نگفتی

مثال خیلی ساده فرض کن یکی یوزر نیم وارد کنه :

1' or '1'='1
نتیجه میشه :

$sql="SELECT * FROM `users` WHERE `username` ='1' or '1'='1'";

درمورد حملات XSS مطالعه کن ، بای

hmkhafan
دوشنبه 07 بهمن 1392, 10:25 صبح
مرسی که گوشزد نمودی این کدها جنبه تست داره

موفق باشی!