PHP - Snippets
Aus Wikizone
Version vom 31. Januar 2019, 15:11 Uhr von Steff (Diskussion | Beiträge)
[Bearbeiten]
<?php
function getNavigation($pf="./",$arrExcludeNames=array()){
$vz = opendir($pf);
$arrExcludeNames = array("css","js","media","readme.txt","index.php");
$a = '';
while ($vi = readdir($vz)) {
if ($vi != '.' && $vi != '..' && !in_array($vi, $arrExcludeNames)) {
$a .= '<a href="'.$pf.$vi.'">'.$vi.'</a><br>';
}
}
return $a;
}
$arrExcludeNames = array("css","js","media","readme.txt","index.php");// diese sollen nicht in die Navigation
$myPath="./meinVerzeichnis/meinUnterverzeichnis/"
echo getNavigation($myPath,$arrExcludeNames);
?>
Strings[Bearbeiten]
Marker Replacement[Bearbeiten]
function replace_markers($template,$arrMarkers){
// Platzhalter mit den Benutzereingaben ersetzen
$sCalib_as_offered = '<p>Request for customized calibration</p>';
$sCalib_as_datasheet = '<p>Calibration will be performed based on current specifications as stated in data sheet</p>';
$sAdditional_service = '<h3>Only for calibration request</h3><strong>End user would like to have additional services:</strong></p>';
$sCalib_justify = '<p>Standard calibration (ISO) with adjustment (with additional charges)</p>';
$sFw_update = '<p>Firmware update (free of charge)</p>';
if($arrMarkers[calib_type] == 'calib_as_offered') $template = str_replace( '###CALIB_TYPE###', $sCalib_as_offered, $template );
if($arrMarkers[calib_type] == 'calib_as_datasheet') $template = str_replace( '###CALIB_TYPE###', $sCalib_as_datasheet, $template );
if($arrMarkers[additional_service]) $template = str_replace( '###ADDITIONAL_SERVICE###', $sAdditional_service, $template);
if($arrMarkers[calib_justify]) $template = str_replace( '###CALIB_JUSTIFY###', $sCalib_justify, $template );
else $template = str_replace( '###CALIB_JUSTIFY###', '', $template );
if($arrMarkers[fw_update]) $template = str_replace( '###FW_UPDATE###', $sFw_update, $template );
else $template = str_replace( '###FW_UPDATE###', '', $template );
foreach($arrMarkers as $key => $val){
if($val == '0')$val = '';
$val = iconv("UTF-8","UTF-8//IGNORE",$val);
$template = str_replace( '###'.strtoupper($key).'###', htmlspecialchars( $val ), $template );
}
$template = str_replace( '###FNAME1###', htmlspecialchars( $arrMarkers[fname1] ), $template );
$template = str_replace( '###RMA_NUM###', $rma_num, $template );
$template = str_replace( '###NACHRICHT###', htmlspecialchars( $nachricht ), $template );
//echo $template;
return $template;
}
Clean up POST und GET[Bearbeiten]
Zusätzliche Sicherheit für Post und Get.
function clean($elem) {
/* used to add some security to get and post vars */
if(!is_array($elem))
$elem = htmlentities($elem,ENT_QUOTES,"UTF-8");
else
foreach ($elem as $key => $value)
$elem[$key] = $this->clean($value);
return $elem;
}
$_CLEAN['GET'] = clean($_GET);
$_CLEAN['POST'] = clean($_POST);
PHP Pfade ermitteln[Bearbeiten]
http://stackoverflow.com/questions/4645082/get-absolute-path-of-current-script/26139609#26139609
$_SERVER["DOCUMENT_ROOT"] === /home/user/public_html
$_SERVER["SERVER_ADDR"] === 143.34.112.23
$_SERVER['HTTP_HOST'] === example.com (or with WWW)
$_SERVER["REQUEST_URI"] === /folder1/folder2/yourfile.php?var=blabla
__FILE__ === /home/user/public_html/folder1/folder2/yourfile.php
basename(__FILE__) === yourfile.php
__DIR__ === /home/user/public_html/folder1/folder2 [same: dirname(__FILE__)]
$_SERVER["QUERY_STRING"] === var=blabla
$_SERVER["REQUEST_URI"] === /folder1/folder2/yourfile.php?var=blabla
parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH) === /folder1/folder2/yourfile.php
$_SERVER["PHP_SELF"] === /folder1/folder2/yourfile.php
//if "YOURFILE.php" is included in "PARENTFILE.php" , and "PARENTFILE.PHP?abc" is opened:
$_SERVER["PHP_SELF"] === /parentfile.php
$_SERVER["REQUEST_URI"] === /parentfile.php?abc
$_SERVER["SCRIPT_FILENAME"]=== /home/user/public_html/parentfile.php
str_replace($_SERVER["DOCUMENT_ROOT"],'', str_replace('\\','/',__FILE__ ) ) === /folder1/folder2/yourfile.php
IP Adresse Abfragen[Bearbeiten]
public static function get_ip() {
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
if ( ! empty( $_SERVER['X_FORWARDED_FOR'] ) ) {
$X_FORWARDED_FOR = explode(',', $_SERVER['X_FORWARDED_FOR'] );
if ( ! empty( $X_FORWARDED_FOR ) ) {
$REMOTE_ADDR = trim( $X_FORWARDED_FOR[0] );
}
}
elseif ( ! empty($_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
$HTTP_X_FORWARDED_FOR= explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
if ( ! empty($HTTP_X_FORWARDED_FOR ) ) {
$REMOTE_ADDR = trim($HTTP_X_FORWARDED_FOR[0]);
}
}
return preg_replace('/[^0-9a-f:\., ]/si', '', $REMOTE_ADDR);
}
Uploads[Bearbeiten]
Odd Even[Bearbeiten]
To determine odd or even it's faster (than mod) and more efficient to use the bitwise & operator:
$a = 3;
if ($a & 1) {
echo 'odd';
} else {
echo 'even';
}
// returns 'odd'