PDA

View Full Version : سوال: اجرای PHP در رویداد Javascript



msdn1223
سه شنبه 15 اسفند 1391, 16:18 عصر
سلام
دوستان من یه بلوکی دارم به این صورت:


<input type="button" onclick="<?php sss(); ?>" />

<?php

function sss()
{
session_destroy();
echo "alert(1)";
}

?>



همونطور که متوجه شدین میخوام موقع زدن دکمه session_destroy() اجرا بشه، دکمه دکمه ی خروج هستش

ولی نمیدونم چرا وقتی صفحه رو رفرش میکنم سشن من از بین میره!

جالب اینجاست خط echo "alert(1)"; وقتی دکمه رو میزنم اجرا میشه ولی وقتی صفحه رفرش میشه اجرا نمیشه!
ولی نمیدونم از کجا و چرا سشن های من از بین میرن!
وقتی هم که خط session_destroy() رو غیر فعال میکنم و صفحه رو رفرش میکنم سشن هام حذف نمیشن!
پس مطمئنم که مشکل از این خطهف واین که چرا این خط با رفرش صفحه باید اجرا بشه؟

ممنون میشم نظرتونو بدید

2undercover
سه شنبه 15 اسفند 1391, 16:46 عصر
جاااااااااااااااان! شما دارید JS رو با PHP ترکیب می کنید! این کار فقط با AJAX ممکنه نه اینطوری!

msdn1223
سه شنبه 15 اسفند 1391, 17:27 عصر
دوست من یعنی چی؟ مگه نمیشه تو بلوک php جاوا نوشت؟ من خیلی اینکارو میکنم!

dousti_design
سه شنبه 15 اسفند 1391, 17:57 عصر
دوست عزیز شما باید از ajax استفاده کنید. داخل یک event جاوا نمیشه که یه زبان سرور ساید رو فراخوانی کرد همینجوری.
فایلی که اتچ کردم رو نگاه کنید.
یه سرچی در مورد ای جکس هم بکنید.

msdn1223
سه شنبه 15 اسفند 1391, 18:26 عصر
ممنون
خب من همین کار رو با jquery انجام میدادم و نتایج یه فایل رو برمیگردوندم
مثلا:


$("#btnlogout").click(function(){
var link = "views/user/login_user.php?logout=1";
$("#aa").load(link);
});


ارز کدوم استفاده کنم بهتره؟ اونی که شما دادین یا این روش jquery ؟

dousti_design
سه شنبه 15 اسفند 1391, 18:54 عصر
توی کدی که شما قرار داده بودید اثری از جی کوئری نبود. هر کدوم که راحت تری:چشمک:

msdn1223
چهارشنبه 16 اسفند 1391, 00:27 صبح
ممنون

خب حالا من مثل کد شما عمل میکنم، فرض کنید کدی مثل این نوشتم


<a href="#" onclick="getData('views/user/logout_user.php?logout=1','v')" onmouseup="document.location = 'http://localhost/project/admin/index.php'" >خروج</a>


خب بعد از خالی کردن سشن باید برم صفحه اصلی دیگه، من گذاشتم رو ماوس آپ بره صفحه اصلی! این کار درستیه؟ نظر شما چیه؟ یا اصلا این کدی که شما دادین امکانی داره که مشخص کنم بعد از انجام عملیات حذف سشن یعه عملیات دیگه ای رو انجام بده؟

dousti_design
چهارشنبه 16 اسفند 1391, 11:52 صبح
نه درست نیست. فایل جاوا اسکریپتی که بهت دادم رو به این شکل بکن:


var XMLHttpRequestObject2 = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject2 = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject2 = new ActiveXObject("Microsoft.XMLHTTP");
}
function getData(dataSource,divID)
{


if(XMLHttpRequestObject2) {
try
{
var obj = document.getElementById(divID);
//alert(dataSource);
XMLHttpRequestObject2.open("GET", dataSource);
XMLHttpRequestObject2.send(null);
XMLHttpRequestObject2.onreadystatechange = function()
{
if (XMLHttpRequestObject2.status == 200 && XMLHttpRequestObject2.readyState == 4)
{

//if(obj)
obj.innerHTML = XMLHttpRequestObject2.responseText;
document.location = 'index.php';
//else
// alert(XMLHttpRequestObject2.responseText);


}


}
}
catch(ex)
{
alert(ex);
}

}
}

به جای index.php آدرس صفحه ایندکست رو بذار