- Katılım
- 2 Mar 2015
- Konular
- 59,189
- Mesajlar
- 88,441
- Çözüm
- 109
- Online süresi
- 4mo 16d
- Reaksiyon Skoru
- 14,280
- Altın Konu
- 2,398
- TM Yaşı
- 11 Yıl 3 Ay 7 Gün
- Başarım Puanı
- 1,051
- MmoLira
- 695,092
- DevLira
- 234
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
PHP'nin yerleşik fonksiyon kütüphanesi, PHP kodu içinden işletim sistemi yardımcı programlarını ve harici programları çağırmakla ilgilenen bir fonksiyon kategorisi içerir. Bu bölümde, sistem çağrılarını gerçekleştirmek için kullanılan PHP fonksiyonlarını ele alacağız.
system() Fonksiyonu
system() fonksiyonu, C'deki system() fonksiyonuna benzer; verilen komutu yürütür ve sonucu çıktı olarak verir.system(string $command, int &$result_code = null): string|false
PHP bir sunucu modülü olarak çalışıyorsa system() çağrısı her çıktı satırından sonra web sunucusunun çıktı tamponunu otomatik olarak temizlemeye çalışır. Başarılı olduğunda komut çıktısının son satırını, başarısız olduğunda ise false değerini döndürür.
Örnek
Aşağıdaki PHP kod parçacığı Windows işletim sisteminin DIR komutunu çağırır ve geçerli dizindeki dosyaların listesini görüntüler.
PHP:
<?php
echo '<pre>';
// Outputs all the result of DOS command "dir", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
$last_line = system('dir/w', $retval);
// Printing additional info
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>
Aşağıdaki çıktıyı üretecektir:
Volume in drive C has no label.
Volume Serial Number is 7EE4-E492
Directory of C:\xampp\htdocs
[.] [..] applications.html bitnami.css
[dashboard] employee.csv favicon.ico hello.csv
hello.html hello.php homepage.php
index.php [Langi] menu.php myform.php
myname.php new.png new.txt test.php
test.zip [TPcodes] uploadfile.php [webalizer]
welcome.png [xampp]
18 File(s) 123,694 bytes
8 Dir(s) 168,514,232,320 bytes free
Last line of the output: 8 Dir(s) 168,514,232,320 bytes free
Return value: 0
[/QUOTE]
[HEADING=1][COLOR=rgb(251, 160, 38)]shell_exec() Fonksiyonu[/COLOR][/HEADING]
shell_exec() fonksiyonu PHP'nin backtick operatörüyle aynıdır. Verilen komutu kabuk aracılığıyla yürütür ve tam çıktıyı bir dize olarak döndürür.
[QUOTE]
shell_exec(string $command): string|false|null
[/QUOTE]
Fonksiyon, yürütülen komutun çıktısını içeren bir dize döndürür; boru oluşturulamazsa false, bir hata oluşursa veya komut hiçbir çıktı üretmezse null döndürür.
[HEADING=2][COLOR=rgb(251, 160, 38)]Örnek[/COLOR][/HEADING]
Aşağıdaki kodda, geçerli dizindeki uzantısı ".php" olan dosyaların listesini elde etmek için shell_exec() fonksiyonunu kullanıyoruz.
[CODE=php]<?php
$output = shell_exec('dir *.php');
echo "<pre>$output</pre>";
?>[/CODE]
[B]Aşağıdaki çıktıyı[/B] üretecektir:
[QUOTE]
Volume in drive C has no label.
Volume Serial Number is 7EE4-E492
Directory of C:\xampp\htdocs
10/26/2023 08:27 PM 73 hello.php
10/12/2023 10:40 AM 61 homepage.php
07/16/2015 09:02 PM 260 index.php
10/12/2023 10:39 AM 49 menu.php
09/25/2023 01:43 PM 338 myform.php
10/12/2023 10:49 AM 51 myname.php
10/26/2023 02:00 PM 369 test.php
09/25/2023 01:42 PM 555 uploadfile.php
8 File(s) 1,756 bytes
0 Dir(s) 168,517,771,264 bytes free
[/QUOTE]
[HEADING=1][COLOR=rgb(251, 160, 38)]exec() Fonksiyonu[/COLOR][/HEADING]
exec() fonksiyonu verilen komutu bir dize argümanı olarak yürütür.
[QUOTE]
exec(string $command, array &$output = null,
int &$result_code = null):string|false
[/QUOTE]
[B]$output[/B] parametresi , belirtilirse, komuttan gelen her satır çıktısıyla doldurulacak bir dizidir.
[HEADING=2][COLOR=rgb(251, 160, 38)]Örnek[/COLOR][/HEADING]
Bu durumda, programın içinden whoami komutunu çağırmak için exec() fonksiyonunu kullanırız. whoami komutu kullanıcı adını döndürür.
[CODE=php]<?php
// outputs the username that owns the running php/httpd process
// (on a system with the "whoami" executable in the path)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "Returned with status $retval and output:\n";
var_dump($output);
?>[/CODE]
[B]Aşağıdaki çıktıyı[/B] üretecektir:
[QUOTE]
Returned with status 0 and output: array(1)
{ [0]=> string(13) "gnvbgl3\mlath" }
[/QUOTE]
[HEADING=1][COLOR=rgb(251, 160, 38)]passthru() Fonksiyonu[/COLOR][/HEADING]
passthru() fonksiyonu harici bir programı çalıştırır ve ham çıktıyı görüntüler. passthru() fonksiyonu exec() veya system() fonksiyonuna benzemesine rağmen bir komutu çalıştırır, ancak işletim sistemi komutundan gelen çıktının tarayıcıya doğrudan geri geçirilmesi gereken ikili veri olması durumunda onların yerine kullanılmalıdır.
[HEADING=2][COLOR=rgb(251, 160, 38)]Örnek[/COLOR][/HEADING]
Sistem PATH ortam değişkeninin içeriğini görüntülemek için passthu() fonksiyonunu kullanan bir PHP programı:
[CODE=php]passthru(string $command, int &$result_code = null): ?false
<?php
passthru ('PATH');
?>[/CODE]
[B]Aşağıdaki çıktıyı[/B] üretecektir:
[QUOTE]
PATH=C:\Python311\Scripts\;C:\Python311\;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\WINDOWS\System32\OpenSSH\;C:\xampp\php;C:\Users\mlath\AppData\Local
\Microsoft\WindowsApps;C:\VSCode\Microsoft VS Code\bin
[/QUOTE]
[HEADING=1][COLOR=rgb(251, 160, 38)]Ters tırnak operatörü[/COLOR][/HEADING]
PHP bir yürütme operatörünü destekler: backtick'ler (``). (tek tırnak işareti değillerdir!) PHP backtick'lerin içeriklerini bir kabuk komutu olarak yürütmeyi dener; çıktı döndürülür. Backtick operatörünün kullanımı shell_exec() ile aynıdır.
[HEADING=2][COLOR=rgb(251, 160, 38)]Örnek[/COLOR][/HEADING]
Aşağıdaki örneğe bir göz atın:
[CODE=php]<?php
$output = `dir *.php`;
echo "<pre>$output</pre>";
?>[/CODE]
[B]Aşağıdaki çıktıyı[/B] üretecektir:
[QUOTE]
Volume in drive C has no label.
Volume Serial Number is 7EE4-E492
Directory of C:\xampp\htdocs
10/26/2023 08:42 PM 61 hello.php
10/12/2023 10:40 AM 61 homepage.php
07/16/2015 09:02 PM 260 index.php
10/12/2023 10:39 AM 49 menu.php
09/25/2023 01:43 PM 338 myform.php
10/12/2023 10:49 AM 51 myname.php
10/26/2023 02:00 PM 369 test.php
09/25/2023 01:42 PM 555 uploadfile.php
8 File(s) 1,744 bytes
0 Dir(s) 168,471,289,856 bytes free
[/QUOTE]
[B]shell_exec()[/B] devre dışı bırakıldığında backtick operatörü devre dışı kalır.

