PDA

View Full Version : مبتدی: اعتبار سنجی در PHP با تکنولوژی AJAX



viper2009
پنج شنبه 20 خرداد 1389, 22:48 عصر
سلام

آیا امکان استفاده از آجاکس در PHP هست؟
اگر هست چطور می توانم برای اعتبار سنجی استفاده کنم؟
از جاوا اسکریپت استفاده کردم ولی جواب نداده چون وب سایت ساخته شده کمی متفاوته

اگر هم با خود PHP هم بشه بد نیست ولی فکر کنم در در همان لحظه مثل جاوا اسکریپت صورت نمی کیره و حتماً باید از سمت سرور دستورات اجرا بشه

از دوستان در این زمینه راهنمایی می خوام اگر کدهایی را همراه با مثال ارائه کنند ممنون می شوم.

eshpilen
پنج شنبه 20 خرداد 1389, 22:54 عصر
اعتبار سنجی سمت کلاینت رو باید با جاوااسکریپت انجام داد.
جاوااسکریپت میتونه از روی اطلاعات موجود در فایلهای پیکربندی برنامهء PHP ساخته بشه تا همیشه هماهنگ و آپدیت باشه و سمت کلاینت و سرور هر دو یک منبع مشترک داشته باشن. یه برنامه نوشته بودم که همینطور بود و کد ولیدیت کردن سمت کلاینت و سرور هردو از یکسری متغییرها داخل PHP ساخته میشدن.
البته برای بعضی چیزا که نیاز به سمت سرور داره مثل چک کردن اینکه نام کاربری ای که کاربر در صفحهء ثبت نام وارد میکنه قبلا رجیستر شده یا نه با اجاکس انجام میشه (بصورت مکمل ولیدیت با جاوااسکریپت).

alimooghashang
پنج شنبه 20 خرداد 1389, 23:44 عصر
جه نوع اعتبارسنجی میخواهید انجام بدید؟
یعنی اطلاعات با چه چیز هایی باید مقایسه بشن؟
اگه از روی سرور اطلاعات چک میشن، با ajax میشه ولی اگه درحد چک کردن صحت ایمیل و آدرس و تلفن و ایناس باید در سمت کلاینت اجرا بشه و جاوا اسکریپت کافیه!

viper2009
جمعه 21 خرداد 1389, 00:34 صبح
فقط در حد چک کردن خالی نبودن فیلدها و راهنمایی در طریقه پرکردن فیلد به کاربر

اگر مثالی بزنید ممنون می شوم

من خودم از این روش استفاده کردم ولی برای سایتی که می خوام بکار ببرم کار نمی کنه

مثال زیر یک جدول ضرب را درست می کنه و اگر فیلد ها را پر نکنید پیغام می ده




<html>
<head>
<title>Section3</title>
<script Language="JavaScript">
function CreatePage(){
var a = txtTitle.value
var b = txtTo.value
var c = txtLink.value
var d = txtRows.value
var e = txtCols.value
var f = txtBorder.value
document.writeln("<h1>" + a + "</h2><hr>")
document.writeln("<a herf=" +b + "> " + c + "</a><br>")
document.writeln("<br><table border=" + f + ">")
for(i=1; i<=d; i++){
document.writeln("<tr>")
for(j=1; j<=e; j++){
document.writeln("<td>" + i*j + "</td>")
}
document.writeln("</tr>")
}
document.writeln("</table>")
}
function validatepage(){
if (txtRows.value<=0){
alert("لطفاً فیلدها را پر کنید")
txtRows.focus()
}
else{
CreatePage()
}
</script>
</head>
<body>
<center><h1>Create Dynamic Page With JavaScript!</h1></center></hr>
<b>Title : <Input Type="Text" Name="txtTitle"><br><hr>
Text Link : <Input Type="Text" Name="txtLink">
Link To : <Input Type="Text" Name="txtTo">
<br><hr>
Table ; </b><br>
<Li>Rows : <Input Type="Text" Name="txtRows">
<Li>Columns : <Input Type="Text" Name="txtCols">
<Li>Border : <Input Type="Text" Name="txtBorder">
<br><hr>
<Input Type="Button" Value="Create Page!" OnClick="validatepage()">
</Body>
</html>

alimooghashang
جمعه 21 خرداد 1389, 01:00 صبح
خوب این با یک جاوااسکریپت ساده حل میشه!

مثلا این کد برای چک کردن فیلد ایمیل است





<script type="text/javascript">

function validateEmail(fld) {

if(fld.value != "")
{
var re = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
if(!re.test(fld.value))
{
fld.style.background = 'Yellow';
document.getElementById('mailDIV').innerHTML="حروف ایمیل نامعتبر است.";
return false;
}
} else
{
fld.style.background = 'Yellow';
document.getElementById('mailDIV').innerHTML="لطفا ايميل را وارد کنيد.";
return false;
}

fld.style.background = 'White';
document.getElementById('mailDIV').innerHTML="";

return true;


}




function validateFormOnSubmit(theForm) {

var mailok;
mailok=validateEmail(theForm.mail);
if (mailok)
{
return true;
} else return false;
}



</script>

<form name="f1" method="post" onsubmit="return validateFormOnSubmit(this);">

<table border="0" width="100%" dir="rtl" style="border-collapse: collapse; ">
<tr>
<td>ادرس ايميل:</td>
<td width="312"><input type="text" id="mail" name="mail" size="50"></td>
<td width="171"><div id="mailDIV"></div></td>
</tr>
<tr>

<td></td>

<td width="312">
<input type=submit value="submit">
</td>
<td></td>
</tr>
</table>

</form>

viper2009
جمعه 21 خرداد 1389, 01:12 صبح
جناب alimooghashang (http://barnamenevis.org/forum/member.php?u=35292) ممنون

یک مشکل دیگه وجود داره این هست که با این کد چطوری هماهنگ کنم؟

فرم ساخته شده اطلاعات را ثبت می کنه در خاصیت اکشن فرم
این کد وجود داره

<form name="form" method="post" action="<?php print $PHP_SELF."?index=submitted" ?>">

و این هم خاصیت های کلید ثبت کننده

<input name="submit" type="submit" class="button" id="submit" tabindex="24"
onClick="validatepage()" value="ثبت اطلاعات" />

با کدی که شما ارائه کردید تداخلی ایجاد نمی کنه؟
فقط بهش خاصیت onsubmit بدم؟

alimooghashang
جمعه 21 خرداد 1389, 01:16 صبح
ببینید فرمتون چه اطلاعاتی داره؟
کافیه مقادیر دیگه ای که میخواهید چک بشه رو داخل تابع validateFormOnSubmit چک کنید!
فرم تا وقتی که این تابع true برنگردونه ارسال نمیشه!

نه شما onsubmit نمیتونی بدی!
اصلا onclicke رو هم بردار!
اگه فقط یه ایمیل داری همین که من نوشتم کافیه!

viper2009
جمعه 21 خرداد 1389, 01:26 صبح
ببینید فرمتون چه اطلاعاتی داره؟
کافیه مقادیر دیگه ای که میخواهید چک بشه رو داخل تابع validateFormOnSubmit چک کنید!
فرم تا وقتی که این تابع true برنگردونه ارسال نمیشه!

نه شما onsubmit نمیتونی بدی!
اصلا onclicke رو هم بردار!
اگه فقط یه ایمیل داری همین که من نوشتم کافیه!

ببخشید نمی تونم کل فرم را ارسال کنم چون برای شرکته

این فرم دارای دو صفحه هست
صفحه اول کل اطلاعات کاربر را می گیره و فرم دوم اطلاعات را ثبت می کنه
بخاطر همین که گفتم شاید تداخلی داشته باشه

هنوز امتحان نکردم شاید با کدی که ارائه کردید مشکل حل شده باشه
می خواستم مطمئن باشم

alimooghashang
جمعه 21 خرداد 1389, 01:30 صبح
اها منظورتون از تداخل رو فهمیدم
نه تداخلی ایجاد نمیشه!
ولی این رو بدونین اگه validateFormOnSubmit رو بزارید و فرم اشتباه باشه به هیچ وجه submit نمیشه!

trade_mark
جمعه 21 خرداد 1389, 03:14 صبح
ولی این رو بدونین اگه validateFormOnSubmit رو بزارید و فرم اشتباه باشه به هیچ وجه submit نمیشه!
میشه !
کاربر اگه جاوا اسکریپت رو غیر فعال کنه به راحتی می تونه این مورد رو دور بزنه
به نظر من از validate کردن سمت سرور هم بعد از کلاینت استفاده کن

alimooghashang
جمعه 21 خرداد 1389, 03:29 صبح
میشه !
کاربر اگه جاوا اسکریپت رو غیر فعال کنه به راحتی می تونه این مورد رو دور بزنه
به نظر من از validate کردن سمت سرور هم بعد از کلاینت استفاده کن
دقیقا
نکته ای که یادم رفت بگم!