Category Archives: Source

PHP言語 現在のページの完全なURLアドレスを取得

サンプルコード:

<?php
/**
* 現在のページの完全なURLアドレスを取得
*/
function get_url() {
$sys_protocal = isset($_SERVER[‘SERVER_PORT’]) && $_SERVER[‘SERVER_PORT’] == ‘443’ ? ‘https://’ : ‘http://’;
$php_self = $_SERVER[‘PHP_SELF’] ? $_SERVER[‘PHP_SELF’] : $_SERVER[‘SCRIPT_NAME’];
$path_info = isset($_SERVER[‘PATH_INFO’]) ? $_SERVER[‘PATH_INFO’] : ”;
$relate_url = isset($_SERVER[‘REQUEST_URI’]) ? $_SERVER[‘REQUEST_URI’] : $php_self.(isset($_SERVER[‘QUERY_STRING’]) ? ‘?’.$_SERVER[‘QUERY_STRING’] : $path_info);
return $sys_protocal.(isset($_SERVER[‘HTTP_HOST’]) ? $_SERVER[‘HTTP_HOST’] : ”).$relate_url;
}

echo get_url();
?>

PHP対称暗号化アルゴリズム|Mcrypt.class.php

keyは定義の定数

メッソッド:

Mcrypt::encrypt();

Mcrypt::decrypt();

 

サンプルコード:

root権限に昇格してpythonスクリプトを実行

サンプルコード:
if __name__ == ‘__main__’:
# root権限に昇格
if os.geteuid():
args = [sys.executable] + sys.argv
# 二つの方法でsu、sudoを使用
os.execlp(‘su’, ‘su’, ‘-c’, ‘ ‘.join(args))
# os.execlp(‘sudo’, ‘sudo’, *args)

#ここから通常のプログラム論理
print(‘Running at root privilege. Your euid is’, os.geteuid())

python マルチスレッド

サンプルコード:

import threading

Pythonは直接Excelを修正

 

サンプルコード:

import xlrd

from xlutils.copy import copy

def setNewValue(rowIndex,colIndex,newValue):
data = xlrd.open_workbook(inFile)
tmpData = copy(data)
tmpData.get_sheet(0).write(rowIndex,colIndex,newValue)
tmpData.save(“/var/startnews24.xls”)

pythonシステムプロセスを列挙

サンプルコード:

from ctypes.wintypes import *
from ctypes import *
import collections

kernel32 = windll.kernel32

class tagPROCESSENTRY32(Structure):
_fields_ = [(‘dwSize’, DWORD),
(‘cntUsage’, DWORD),
(‘th32ProcessID’, DWORD),
(‘th32DefaultHeapID’, POINTER(ULONG)),
(‘th32ModuleID’, DWORD),
(‘cntThreads’, DWORD),
(‘th32ParentProcessID’, DWORD),
(‘pcPriClassBase’, LONG),
(‘dwFlags’, DWORD),
(‘szExeFile’, c_char * 260)]
def enumProcess():
“””
return a namedtuple’s list (for p in this p.processName p.processID)
“””
hSnapshot = kernel32.CreateToolhelp32Snapshot(15, 0)
fProcessEntry32 = tagPROCESSENTRY32()
processClass = collections.namedtuple(“processInfo”,”processName processID”)
processSet = []
#if hSnapshot:
fProcessEntry32.dwSize = sizeof(fProcessEntry32)
listloop = kernel32.Process32First(hSnapshot, byref(fProcessEntry32))
while listloop:
processName = (fProcessEntry32.szExeFile)
processID = fProcessEntry32.th32ProcessID
processSet.append(processClass(processName, processID))
listloop = kernel32.Process32Next(hSnapshot, byref(fProcessEntry32))
return processSet
for i in enumProcess():
print(i.processName,i.processID)

nginx CIフレームワークを設定

server {
listen 80;
server_name www.ci.com;
location / {
root c:/startnews24/Codeigniter_2.0.1/;
index index.html index.htm index.php;
rewrite ^/$ /index.php last;
rewrite ^/(?!index\.php|robots\.txt|images|js|styles)(.*)$ /index.php/$1 last;
}
location ~ ^(.+\.php)(.*)$ {
root c:/startnews24/Codeigniter_2.0.1/;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass 127.0.0.1:9002;
include fastcgi_params;
}
}

PHPで直接CSVファイルをダウンロードさせる

目的:
PHPでCSVファイルをダウンロードさせる、文字列も可能です、CSVファイルも大丈夫です。
サンプル1:ファイルを読み取ってダウンロード
サンプル2:文字列のダウンロード

サンプル1
$fileName = “startnews24.csv”;
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=’ . $fileName);
header(‘Content-Transfer-Encoding: binary’);
header(‘Content-Length: ‘ . filesize($fileName));
readfile($fileName);

サンプル2
$fileName = “startnews24_” . date(“YmdHis”) . “.csv”;
header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=’ . $fileName);
echo $csv;

phpのdeclare制御構造

function profile($dump = FALSE)

{
static $profile;
if($dump){
$temp = $profile;
//ポインタを破壊
unset ($profile);
return ($temp);
}
//現在のタイムスタンプ
$profile[] = microtime();
}
//declare定義実行関数
register_tick_function(“profile”);

profile();

//2行目を実行するたびに一回新規関数を実行 register_tick_function(“profile”);
declare(ticks=2){
for($x = 1; $x < 50; $x++){
//2つの配列間の類似性を計算–再帰遅い動作
echo similar_text(md5($x), md5($x * $x)), ”
“;
}
}

print_r(profile (TRUE));
?>

iframe技術でAJAXを擬似的リフレッシュなしでファイルのアップロード

1.upload.html

<html>
<head>
<title>iframeリフレッシュなしでファイルのアップロード/擬似ajaxアップロード</title>
<style type=”text/css”>
#showImg{
border: 1px solid #EEEEEE;
display: table-cell;
height: 91px;
text-align: center;
vertical-align: middle;
width: 101px;
}
.blue{
width:300px;
position:relative;
border: 1px solid #DCE3ED;
}
a:hover{background-color:#D0DEF1;cursor:pointer;}
.icon{
background: url(“./images/msg_bg.png”) no-repeat scroll left -249px rgba(0, 0, 0, 0);
height: 18px;
width: 16px;
overflow: hidden;
position: absolute;
left: 94px;
bottom: 15px;
z-index: 100;
}
.bc{
background-color:#D0DEF1;
}
</style>
</head>
<body>
<iframe name=”upload_file” style=”display:none;”></iframe>
<form name=”upload_form” action=”./upload.php” method=”post” enctype=”multipart/form-data” target=”upload_file”>
<input id=”fileToUpload” onclick=”getName()” type=”file” name=”fileToUpload”>
<input type=”submit” id=”sub” value=”アップロード” />
</form>
<fieldset id=”swfupload” class=”blue pad-10″>
<legend>リスト</legend>
<a id=”showImg”></a>
<div class=”shownotice”></div>
</fieldset>
</body>
<script type=”text/javascript” src=”jquery/jquery-1.8.3.min.js”></script></script>
<script >
function show(name){
$(“#showImg”).html(“<img width=’80’ src=’./upload/”+name+”‘ />”);
$(“#showImg”).addClass(‘bc’);
$(“.shownotice”).addClass(‘icon’);
}
$(“#showImg”).click(function(){
$(“.shownotice”).toggleClass(‘icon’);
$(“#showImg”).toggleClass(‘bc’);
})
</script>
</html>

2. upload.php

<?php
$file = $_FILES[‘fileToUpload’];
$fileType = array(‘image/gif’,’image/jpeg’,’image/pjpeg’);
$fileSize = 20000;
// $extension = pathinfo($file[‘name’],PATHINFO_EXTENSION);
// $name = date(‘YmdHis’,time()).rand(1000,9999).’.’.$extension;
if(!in_array($file[‘type’],$fileType)){
echo “<script>window.parent.alert(‘タイプエラー’);</script>”;exit;
}
if($file[‘size’]>$fileSize){
echo “<script>window.parent.alert(‘ファイルが大きすぎる’);</script>”;exit;
}
if ($file[“error”] > 0){
echo “<script>window.parent.alert(‘エラータイプ:”.$file[“error”].”‘);</script>”;exit;
}
if (file_exists(“upload/1” . $file[“name”])){
echo “<script>window.parent.alert(‘”.$file[“name”] . ” already exists.’);</script>”;
}else{
if(move_uploaded_file($file[“tmp_name”],”upload/” . $file[“name”])){
echo “<script>window.parent.show(‘”. $file[“name”] .”‘);</script>”;
}else{
echo “<script>window.parent.alert(‘Upload failed!’);</script>”;
}
}