PDA

View Full Version : سوال: فراخوانی پنجره CMD با PHP



djsaeedkhan
سه شنبه 02 تیر 1394, 03:40 صبح
سلام به دوستان
من میخام یه کلیدی بذارم که وقتی روش کلیک شد پنجره CMD باز بشه و یه IP سرچ بشه. راه حلی دارید؟
این رو هم بگم که نکات امنیتی مهم نیست چون فقط قراره روی لوکال کار کنه

H:Shojaei
سه شنبه 02 تیر 1394, 03:49 صبح
echo exec('ping 127.0.0.1');

djsaeedkhan
سه شنبه 02 تیر 1394, 09:07 صبح
باتشکر
من این کد رو گذاشتم. ولی فقط یه پینگ میکنه و چاپ میکنه.
من میخام پنجره CMD باز بشه
شاید تنظیمات خاصی هست که باید انجام بدم تا باز بشه

680100
سه شنبه 02 تیر 1394, 10:44 صبح
سلام
بفرمایید



execInBackground('start cmd.exe @cmd /k "ping www.barnamenevis.org"');
function execInBackground($cmd) {
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $cmd, "r"));
} else {
exec($cmd . " > /dev/null &");
}
}

djsaeedkhan
سه شنبه 02 تیر 1394, 14:12 عصر
دوستان من همه این کارهارو کردم. ولی نه پنجره ای باز میشه و نه چیزی نمایش داده میشه. لطفا راهنمایی کنید که خروجی به چه شکلی هست.
میگم که: شاید باید چیزی فعال بشه تا نتیجه نشون داده بشه

680100
سه شنبه 02 تیر 1394, 17:21 عصر
درود
با این تیکه کد هم می تونی انجام بدی



exec('start cmd.exe @cmd /k "ping www.barnamenevis.org"');


اون یکی کد هم من تست کردم اوکی بود ، البته در داخل فریمورک CI تست کردم .
این تیکه کد دوم بدون مشکل تنها در یک فایل php اجرا میشه

680100
سه شنبه 02 تیر 1394, 17:28 عصر
برای کارت زیبا بشه این مورد هم هست که کامنت exit هم بعد از دستور اول اجرا میشه


exec('start cmd.exe @cmd /k "ping www.barnamenevis.org & exit"');

با استفاده از & می توانی دستورات را از هم جدا کنی

djsaeedkhan
سه شنبه 02 تیر 1394, 17:34 عصر
سلام
دوست عزیز من اینایی که شما دادی رو تست کردم. ولی نه چیزی اجرا میشه و نه چیری نشون داده می شود. فقط لودینگ می شود
من میخواهم وقتی کد اجرا شد پنجره CMD باز بشود. این غیر از لودینگ چیز دیگری ندارد

680100
سه شنبه 02 تیر 1394, 17:40 عصر
درود
متوجه هستم و بدون مشکل اجرا میشه
نمونه تصویر زیر

132549

djsaeedkhan
سه شنبه 02 تیر 1394, 17:45 عصر
من از WampServer Version 2.5 استفاده می کنم. شاید تنظیماتی چیزی باید لحاظ بشه تا کار انجام بشه. در سیستم من فقط لودینگ انجام میشه و نه چیز دیگه :ناراحت:

680100
سه شنبه 02 تیر 1394, 17:49 عصر
من از XAMPP v3.2.1 استفاده میکنم و ویندوز مورد استفاده seven

djsaeedkhan
سه شنبه 02 تیر 1394, 23:30 عصر
دوستان شاید تنظیماتی هست که باید انجام داد تا این تابع یا امکان در Wamp هم فعال بشه. راه حلی به نظر نمیرسه؟

djsaeedkhan
چهارشنبه 03 تیر 1394, 23:27 عصر
Wamp runs as a service, and services cannot show UI applications like the command prompt.
You can can configure the service to interact with the desktop by opening the 'Services' configuration, look for wampapache64, open its properties, and on the Log On tab check the checkbox Allow service to interact with desktop.
But still, PHP runs on a webserver (in this case your PC), so even if it could start a UI application, it would show on the desktop of your PC, not of the client visiting it.
So, back to the drawing board. I wonder if opening CMD is the most important feature. It sound to me like you could also get the IP of a domain in another way. A little search leads me to the function gethostbyname.
string gethostbyname ( string $hostname )It returns the IP (v4) address of a given hostname, so your script could look like this:
<?php echo gethostbyname('http://www.google.com');By the way, start starts a new command. cmd.exe starts a new command. cmd starts a new command. That command starts ping. Why not just exec('ping www.google.com')?