PHP是一種服務器端語言,所以你可以從不是執行它從你的客戶端JavaScript。期。對話框沒有顯示,因爲你有一些JS錯誤,執行該命令是因爲HTML在服務器上呈現,並且在將整個HTML發送到瀏覽器之前執行PHP。
順便說一句,你不應該做一個shell_exec
基於這樣的確認對話框。
這可能是一個辦法:
你的HTML的部分:
<script>
function shutDown() {
if (confirm ('Are you sure ?'))
{
var xhReq = new XMLHttpRequest();
xhReq.open("POST", "ajax.php", false);
xhReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhReq.send("cmd=shutdown");
var serverResponse = xhReq.responseText;
alert(serverResponse); // Shows the return from the PHP script
} else {
window.location.href = "index.php";
}
}
</script>
<a href="javascript:void(0)" onclick="javascript:shutDown()"/>shutdown</a>
你的PHP文件(ajax.php),用於處理AJAX請求(S)的部分:
if(isset($_POST["cmd"]) && $_POST["cmd"] == "shutdown") {
// your shutdown code
// I'm not sure if "sudo" really works in this context, because you have to verify with a password, except your php process is already running with sudo rights
shell_exec('sudo shutdown -r now');
}
// you can return something here,
// but it only makes sense if you don't shutdown the server
// you are running the website to shutdown ;)
使用
window.location
,這將是不可能的相反。當JS執行時,PHP已經完成了它的工作。看看「服務器端」與「客戶端」語言 –
「php」是作爲用戶對服務器的網頁請求執行的,因此它是**預處理的超文本**無論你在這裏嘗試過什麼都是不可能的。 – Rayon
你可以做的最好的事情是做一個Ajax調用,並執行PHP代碼,如果你的JavaScript變量爲true .. – Naruto