<?php header('HTTP/1.1 200 OK'); // ok 正常访问 header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在 header('HTTP/1.1 301 Moved Permanently'); //设置地址被永久的重定向 301 header('Location: http://www.ruonu.com/'); //跳转到一个新的地址 header('Refresh: 10; url=http://www.ruonu.com/'); //延迟转向 也就是隔几秒跳转 header('X-Powered-By: PHP/6.0.0'); //修改 X-Powered-By信息 header('Content-language: en'); //文档语言 header('Content-Length: 1234'); //设置内容长度 header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT'); //告诉浏览器最后一次修改时间 header('HTTP/1.1 304 Not Modified'); //告诉浏览器文档内容没有发生改变 ###内容类型### header('Content-Type: text/html; charset=utf-8'); //网页编码 header('Content-Type: text/plain'); //纯文本格式 header('Content-Type: image/jpeg'); //JPG、JPEG header('Content-Type: application/zip'); // ZIP文件 header('Content-Type: application/pdf'); // PDF文件 header('Content-Type: audio/mpeg'); // 音频文件 header('Content-type: text/css'); //css文件 header('Content-type: text/javascript'); //js文件 header('Content-type: application/json'); //json header('Content-type: application/pdf'); //pdf header('Content-type: text/xml'); //xml header('Content-Type: application/x-shockw**e-flash'); //Flash动画 ###### ###声明一个下载的文件### header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="ITblog.zip"'); header('Content-Transfer-Encoding: binary'); readfile('test.zip'); ###### ###对当前文档禁用缓存### header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); ###### ###显示一个需要验证的登陆对话框### header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="Top Secret"'); ###### ###声明一个需要下载的xls文件### header('Content-Disposition: attachment; filename=ithhc.xlsx'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Length: '.filesize('./test.xls')); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); readfile('./test.xls'); ###### ?>
分类: 技术
form submit 验证
<script> function submitFun(){ //逻辑判断 return true; //允许表单提交 //逻辑判断 return false;//不允许表单提交 } </script> <form onsubmit="reture submitFun();"> //注意此处不能写成 onsubmit="submitFun();"否则将表单总是提交 </form>
图片ajax上传
用的是CI框架
后端代码:
<?php class Upload extends MY_Controller { function __construct() { parent::__construct(); $this->load->helper(array('form', 'url')); } function index() { $data = array(); $data['upload_url'] = site_url('upload/ajax_upload'); $this->load->view('upload', $data); } function do_upload() { $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '1024'; $config['max_width'] = '1024'; $config['max_height'] = '768'; $this->load->library('upload', $config); if (!$this->upload->do_upload('AidImg')) { echo("<script>parent.callback('" . $this->upload->display_errors() . "',false)</script>"); exit; } else { $data = array('upload_data' => $this->upload->data()); $img_path = base_url() . 'uploads/'; echo "<script>parent.callback('" . $data['upload_data']['file_name'] . "',true,'" . $img_path . "')</script>"; exit; } } } ?>
前端代码:
<html> <head> <title>Upload Form</title> <script type="text/javascript" src="<?php echo base_url() ?>access/js/jquery-1.8.0.min.js"></script> </head> <body> <form id="formImg" action="do_upload" method="post" target="hidden_frame" enctype="multipart/form-data"> <div> <input type="hidden" name="sh_id" id="sh_id" value="{$id}"> <!--这里的{$id}大家可以随便填1个进去--> <input id="AidImg" type="file" name="AidImg" onchange="uploadImg()"/> <div style="display:none;" id="imgError">图片不可为空</div> <iframe style="display:none" name='hidden_frame' id="hidden_frame"></iframe> <div><img id="p_img" src="" width="80" height="80"/> </div> <span class="help_inline">尺寸:80*80</span> </div> </form> </body> </html> <script> function uploadImg() { var names = $("#AidImg").val().split("."); if (names[1] != "gif" && names[1] != "GIF" && names[1] != "jpg" && names[1] != "JPG" && names[1] != "png" && names[1] != "PNG") { $("#imgError").html("<span>" + "图片必须为gif,jpg,png格式" + "</span>"); $("#formImg .help-inline").hide(); $("#imgError").show(); return; } $("#formImg").submit(); $("#imgError").show(); $("#imgError").html("图片上传中ing"); } function callback(message, success, path) { if (success == false) { $("#imgError").html("<span>" + message + "</span>"); $("#imgError").show(); } else { $("#imgError").hide(); $(".fromtrs").show(); $("#formImg .help-inline").hide(); var paths = path; $("#p_img").attr("src", path + message); $("#p_img").attr("imgname", message); //这里由于数据库里只存入图片名称加后缀名,故和路径拆开了 } } </script>
Using Form-based File Upload in Snoopy
Snoopy is capable of handling form-based file uploads according to RFC's 1867
and 2388. This note describes how to use Snoopy in a number of different file
upload scenarios. Snoopy will handle multiple file upload fields per request
and multiple files per field. Snoopy can also suggest a different filename in
the upload request from the "real" local filename. Snoopy can also put
Content-type into the file upload request on a per file basis.
EXAMPLE 1: SIMPLE FILE UPLOAD
In this example there is a single field with a single file to be uploaded and
nothing fancy. Note that it is necessary to call the set_submit_multipart()
function for the file upload to work. The filename suggested to the server
will be "myfile.txt" since the path will be removed.
include "Snoopy.class.inc";
$snoopy = new Snoopy;
$upload_url = "http://www.somedomain/upload.cgi";
$upload_vars = array();
$upload_files["FIELD1"] = "/home/me/myfile.txt";
$snoopy->set_submit_multipart();
if($snoopy->submit($upload_url, $upload_vars, $upload_files))
echo "<PRE>".$snoopy->results."</PRE>\n";
else
echo "error with file upload: ".$snoopy->error."\n";
EXAMPLE 2: MULTIPLE FILES IN A SINGLE FIELD
Snoopy will support sending multiple files in response to a single form field.
This example works when sending multiple files to an Apache/PHP server. Other
servers may not support this in quite the same way.
include "Snoopy.class.inc";
$snoopy = new Snoopy;
$upload_url = "http://www.somedomain/upload.php";
$upload_vars = array();
$upload_files["FIELD1[]"] = array("/home/me/myfile1.txt", "/home/me/myfile2.txt");
$snoopy->set_submit_multipart();
if($snoopy->submit($upload_url, $upload_vars, $upload_files))
echo "<PRE>".$snoopy->results."</PRE>\n";
else
echo "error with file upload: ".$snoopy->error."\n";
EXAMPLE 3: SPECIFYING FILENAMES and CONTENT TYPES
Some hosts are fussy about the filename that is passed to them by the file
upload request. We can overcome this by getting Snoopy to suggest a different
filename in the request than the "real" local filename. We can also get
Snoopy to specify an optional content type for each file. This is achieved by
having each file entry be an array of parameters instead of a simple filename.
include "Snoopy.class.inc";
$snoopy = new Snoopy;
$upload_url = "http://www.somedomain/upload.cgi";
$upload_vars = array();
$upload_files["FIELD1[]"] = array(
array("name" => "/home/me/myfile1.txt",
"remotename" => "C:\UPLOAD.TXT",
"type" => "text/plain"),
array("name" => "/home/me/myfile2.tiff",
"remotename" => "C:\UPLOAD.TIF",
"type" => "image/tiff")
);
$snoopy->set_submit_multipart();
if($snoopy->submit($upload_url, $upload_vars, $upload_files))
echo "<PRE>".$snoopy->results."</PRE>\n";
else
echo "error with file upload: ".$snoopy->error."\n";
js 获取月份最后一天
var myDate = new Date(); var year = myDate.getFullYear(); var month = myDate.getMonth()+7; var day = new Date(year,month,0); var lastdate = year + '-' + month + '-' + day.getDate();
PHP – 在类中使用array_filter时回调函数的问题
在类内使用应该以数组形式传入this
private function getMutualFromSina ($focusList) { return array_filter($focusList, array($this,"filterSinaList")); } private function filterSinaList ($value) { return in_array($value, $this->fansList); }
live防止触发多次
在live之前给选择器加上die() 结束该选择器之前绑定的所有事件
ci判断update是否执行成功
$this->db->affected_rows();
mysql 最大值最小值
select max(字段名) from tableName limit 0,1 最大
select min(字段名) from tableName limit 0,1 最小
select * from tableName order by 字段名 DESC limit 0,1 最大
select * from tableName order by 字段名 ASC limit 0,1 最小
JP retuen 涉及到的表
JP retuen 设计到的表
select group_concat(voucher_id) from voucher where prefix='JP50' AND voucher_no BETWEEN 2146 AND 2160 select * from voucher_action where voucher_id in(16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160) and action_id = 30 select * from voucher_campaign_issue where voucher_id in(16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160) select * from voucher_request_approve where request_id = 23070 select * from voucher_batch where batch_id = 46366 select * from voucher_batch_no_section where batch_id = 46366 UPDATE voucher SET type_id =0,status_id=1,stock_id=35, expiry_date=NULL WHERE voucher_id IN (16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167)DELETE FROM voucher_actionWHERE voucher_id IN (16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167) AND action_id = 30DELETE FROM voucher_campaign_issueWHERE voucher_id IN (16146,16147,16148,16149,16150,16151,16152,16153,16154,16155,16156,16157,16158,16159,16160,16161,16162,16163,16164,16165,16166,16167)DELETE FROM voucher_request_approveWHERE request_id = 23070