| Rubrika Php / mysql
Práca so súbormi pri zapnutom safe_mode
Pri tvorbe skriptov sa už mnoho z vás určite stretlo s problematickou prácou so súbormi pri zapnutom safe_mode. Tento mód je zapnutý na väčšine hostingoch kvôli bezpečnosti a málo ktorá hostingová spoločnosť bude súhlasiť s jeho vypnutím. Preto som pre vás pripravil zopár funkcií na prácu so súbormi ktore dokážu prostredníctvom natívnych FTP funkcii simulovať bežne používané funkcie na prácu so súbormi.
Potrebné nastavenia
<? $ftp_server = 'ftp.server.sk'; $ftp_user_name = 'server.sk'; $ftp_user_pass = 'passwd'; $sub_ftp = 'web/'; // cesta k priečinku ?>
Často používana funkcia fopen() a jej FTP náhrada
S funkciou fopen() býva problém hlavne ak súbor ešte na
serveri neexistuje. Riešením je vždy pred použitím funkcie takýto súbor
cez FTP vytvoriť a až otvárať a zapisovať. K tejto funkcii potrebujeme dva
mať fuknčné nastavenia (viď vyššie) a súbor blank.txt ktorý budeme cez
FTP kopírovať – ako predlohu.
<?php function sf_fopen($remo_file, $mode) { // ak nieje SafeMod ON tak je zbytočne zdĺhavé si to komplikovať a funkcia sa vykoná klasickým spôsobom if (!ini_get('safe_mode')) return fopen($remo_file, $mode); if (file_exists($remo_file)) { $fp = fopen($remo_file, $mode); } else { if(ini_get('safe_mode')) { // najprv vytvor súbor require_once dirname(__FILE__) . '/ftpconf.php'; // konfiguračný súbor s nastaveniami $file = 'blank.txt'; $remote_file = $sub_ftp.$remo_file; // nastavenie jednoduchého FTP spojenia $conn_id = ftp_connect($ftp_server); // login $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); $ltt = ftp_pwd($conn_id); // príprava kopírovania $fp1 = fopen($file, 'r'); $ret = ftp_nb_fput($conn_id, $remote_file, $fp1, FTP_BINARY); while ($ret == FTP_MOREDATA) { // pokracuje upload... $ret = ftp_nb_continue($conn_id); } if ($ret != FTP_FINISHED) { echo Nastal problem pri pri spojení; exit; } ftp_chmod($conn_id, 0777, $remote_file); // nastavenie práv na zapisovanie do súboru fclose($fp1); // close connection ftp_close($conn_id); //až potom spracuj $fp = @fopen($remo_file, $mode); } else { $fp = fopen($remo_file, $mode); } } return $fp; } ?>
Zmena práv súborov v PHP – alternatíva k chmod()
<? if (!function_exists('ftp_chmod')) { function ftp_chmod($ftp_stream, $mode, $filename) { return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename)); } } function sf_chmod($file , $mode) { if(!ini_get('safe_mode')) return chmod($file , $mode); require('konfiguracny.php'); $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); $file = $sub_ftp.str_replace(WB_PATH, '', $file); ftp_chmod($conn_id, $mode, $file); ftp_close($conn_id); return; } ?>
PHP funkcia vytvorenie adresára v – alternatíva k mkdir()
<? function sf_mkdir($dir, $mode) { if(!ini_get('safe_mode'))return mkdir($dir, $mode); require('konfiguracny.php'); $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); $dir = $sub_ftp.str_replace(WB_PATH, '', $dir); if (!ftp_mkdir($conn_id, $dir))return FALSE; ftp_close($conn_id); return TRUE; } ?>
PHP funkcia na zmazanie adresára – alternatíva k rmdir()
<? function sf_rmdir($dir) { if(!ini_get('safe_mode'))return rmdir($dir); require('konfiguracny.php'); $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); $dir = $sub_ftp.str_replace(WB_PATH, '', $dir); if (ftp_rmdir($conn_id, $dir)) return FALSE; ftp_close($conn_id); return TRUE; } ?>
PHP funkcia na premenovanie – alternatíva k rename()
<? function sf_rename($old, $new) { if(!ini_get('safe_mode'))return rename($old , $new); require('konfiguracny.php'); $conn_id = ftp_connect($ftp_server); $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); $old = $sub_ftp.str_replace(WB_PATH, '', $old); $new = $sub_ftp.str_replace(WB_PATH, '', $new); if (!ftp_rename($conn_id, $old, $new))return FALSE; ftp_close($conn_id); return TRUE; } ?>
Článok bol pôvodne uverejnený na PHPecko.org.
Michal Kurtulík
naspäť
prispieť do diskusie [0]
Vyhľadávanie
Viac z rubriky
Ako ochrániť includované PHP súbory?
Automatické generovanie formulárov z MySQL
Automatický prevod texu na hyperlink
Cachovanie do HTML súboru
Cachovanie s pomocou funkcií serialize/unserialize
Čiernobiele obrázky v PHP
Dynamická tvorba URL
Fulltext ako názov stĺpca v tabuľke
Getcwd – Ako ľahko získať absolútnu cestu
Import z Excelu do MySQL databázy
Maximálny timeout vykonávania SQL skriptu
Microtime – rýchlosť načítania stránky
Odstránenie diakritiky v PHP pomocou iconv()
Overovanie a kontrola formulárov v PHP
Parsovanie XML súboru v PHP
PHP a zachytenie nedoručených mailov
PHP funkcia implode
Porovnávanie a dátovy typ DATE
Prihlasovanie uživateľa prostredníctvom $_SESSION
Real-time kontrola e-mailovej adresy AJAX-om
Spracovanie dátového typu ENUM do HTML selectu
Strpos a offset – nájdenie výskytu znaku v reťazci
Tip: Generovanie PDF súborov
Tip: jednoduché šifrovanie a dešifrovanie v PHP
Tip: správne includovanie súborov
Ukladanie jazykových verzií statických textov
Veľmi jednoduchý návod na pekné URI
Vkladanie obrázkov do databázy
Výber záznamov začínajúcich číslom
Vyčistenie viacrozmerného poľa
Vyhľadávanie, pekné URI a diakritika
Vypísanie abecedy v PHP
Využívanie unikátnych kľúčov v MySQL databáze
Zaradenie jednej položky do viacerých kategórií
Zistenie hodnoty ďalšieho ID – autoincrement
Zložené MySQL dotazy – LEFT JOIN
Zvýrazňovanie syntaxe kódu – GeSHi
Pridať komentár



