月度归档 2015年1月27日

通过清心醉

JavaScript基础一

前      言

最近PHP转入ZEND框架或者用面向对象编程方式来写小代码,说真的,如果不是大的项目,根本不需要框架(特别是ZEND这种重量级的),但是面向对象是PHP的一特征,总得慢慢的进入面向对象(OOP)的思维,也更容易进行后期的维护等工作。

后端会了,可前端不行,都是单纯的使用table表格来制作,说真的,DIV+CSS作者也不懂,但CSS也算是很简单的。需要使用的地方GOOGLE下就有了。还有一个就是Javascript,有人说直接学jQuery。就好比初学PHP,你不学面向过程的编程,直接跳面向对象的方式,思维能力能承受的来吗?

好了,来点Javascript的简单案例:

一个带变量的JS:

<html>
<head>
<Script Language =”JavaScript”>
var i=100;
var o=99;
alert(i+o);
</Script>
</Head>
</Html>

在JS中,var就是定义变量了,alert(i+o);就是弹出输出变量i+o的值。

alert();在我以往的PHP代码中,需要弹出对话框,都是基于该方法来实现。

/************************我是分割线*************************/

JS单击onclick事件:

<form>
<input type=”button” value=” ” onclick=alert(“这是一个例子”)>
</form>

在这里出发单击onclick时间,调用了方法alert()输出这是一个例子;

来个带JS函数的小例子

<form>
<Script Language =”JavaScript”>
function myfunction()
{
var i=5;
var o=8;
alert(i+o);
}
</Script>
<input type=”button” value=” ” onclick=myfunction()>
</form>

如果触发单击事件,调用myfunction()函数,弹出文本输出i+o的值

 

通过清心醉

magento robots.txt编写

User-agent: *
# Directories
Disallow: /404/
Disallow: /home/
Disallow: /app/
Disallow: /cgi-bin/
Disallow: /downloader/
Disallow: /errors/
Disallow: /includes/
Disallow: /js/
Disallow: /lib/
Disallow: /magento/
Disallow: /media/
Disallow: /pkginfo/
Disallow: /report/
Disallow: /scripts/
Disallow: /shell/
Disallow: /skin/
Disallow: /stats/
Disallow: /var/
# Paths (clean URLs->home)
Disallow: /home/
Disallow: /index.php/
Disallow: /catalog/product_compare/
Disallow: /catalog/category/view/
Disallow: /catalog/product/view/
Disallow: /catalogsearch/
Disallow: /checkout/
Disallow: /control/
Disallow: /contacts/
Disallow: /customer/
Disallow: /customize/
Disallow: /newsletter/
Disallow: /poll/
Disallow: /sendfriend/
Disallow: /tag/
Disallow: /wishlist/
# Files
Disallow: /cron.php
Disallow: /cron.sh
Disallow: /error_log
Disallow: /install.php
Disallow: /LICENSE.html
Disallow: /LICENSE.txt
Disallow: /LICENSE_AFL.txt
Disallow: /STATUS.txt
# Paths (no clean URLs)
Disallow: /*.php$
Disallow: /*?SID=User-Agent: Baiduspider
Disallow: /

通过清心醉

PHP简易留言板

留言板

没有使用多级留言回复代码的实现,只做了基础的留言功能

以及增加一个后端删除留言板内容及IP黑名单功能.

基于面向过程式编程为主,附加了一些面向对象的简单思维.

通过清心醉

PHP实现翻页

PHP-翻页

来个简单的类文件:

class.php

<?php
class Page
{
function Page_num($numrow,$default) #页面统计
{
$num=$numrow/$default;
return ceil($num);
/*
判断SQL总行数除默认一页的行数,得出有多少个页面
但就有一个问题,比如是10行,一行3个,那么得到的结果是3.33
所以使用ceil函数,将浮点类型转整型并+1,用ceil()的方法.
*/
}
function Page_on($page_on) #上一页
{
if($page_on!=0) #上一页不能=0
{
return $page_on-1; //$page的参数减1表示往回一页
}
else
{
return $page_on=0; //否则返回到第一页
}
}
function Page_next($page_next,$pagenum)
{
if($page_next<$pagenum)#后一页的数字必须小于最大值.==的话也不行.
{
return $page_next+1;
}
else
{
return $page_next=0;
}
}
}

然后是页面的文件

page.php

<?php
header(“Content-Type:text/html;charset=utf-8”); #页面编码
date_default_timezone_set(‘Asia/Shanghai’); #时区
/***********************************************/
/*
由于各人的SQL配置不一样,直接修改下面4个参数即可.
同时表内必须有name,time,text,ip这4个字段或者修改
foreach ( $pdo->query($sql1) as $row)里面的$row[“”]参数
*/
$dbname=”数据库名称”; #数据名
$dbtable=”数据表名称”; #表名
$dbuser=”root”; #MYSQL用户
$dbpassword=””; #MYSQL密码
/***********************************************/

$pdo=new PDO (“mysql:host=localhost;dbname=$dbname;charset=utf8″,$dbuser,$dbpassword);
require_once ‘class.php’; #包含所有类文件
$classpage=new Page(); #实例化页面类
$default=3; //默认页显示数量
$page=0; //页面控制
$pagecolor=1;
$sql=”SELECT *FROM $dbtable”; #获取sql行总数语句
$echotext=$pdo->prepare($sql);
$echotext->execute();
$numrow=$echotext->rowCount(); //获取数据集的行数

$pagenum=$classpage->Page_num($numrow,$default); #计算出有多少页
if (is_array($_GET)&&count($_GET)>0)//先判断是否通过GET传值了
{
if(isset($_GET[“page”])&&!empty($_GET[“page”]))
{
if(is_numeric($_GET[“page”]))#判断是否为整数或整数字符串
{
if($page<=$pagenum)
{
$pagecolor=$_GET[“page”];
$page=($pagecolor-1)*$default;
/*把值重新赋予给页面数
获取的页面为什么要-1?
比如页面是2,数据库是从第4行开始,+3,即4-6行的数据
如果值是(2-1)*3=3;(3-1)*3=6
即一页3个的话
page=2即读取第四行开始
page=3即读取第七行开始
*/
}
}
}
}
$sql1=”SELECT *FROM $dbtable limit $page,$default “;
#如果if (is_array($_GET)&&count($_GET)>0)语句里的没被执行,那么将会执行初始值$page=0,$default=3;
foreach ( $pdo->query($sql1) as $row)
{
#如果不设置字段,这修改字段参数
echo $row[“name”].”</br>”;    echo $row[“time”].”</br>”;
echo $row[“text”].”</br>”;    echo $row[“ip”].”</br>”;
echo “—————–我是分割线哦—————–</br>”;
}
//$page_on=$classpage->Page_on($pagecolor,$pagenum);
//将页面的pagecolor参数传值-1,根据颜色来判断页面

echo “<a href=?page=1>首页</a> “;
if(($page_on=$classpage->Page_on($pagecolor))!=0)
{ #如果返回的结果=0(比如第一页-1=0,那么不输出前一页)
echo “<a href=?page=”.$page_on.”>前一页</a> “;
}

for($o=0;$o<$pagenum;$o++)
{
$i=$o+1; //实现0页不存在即第一页起步.
if($i==$pagecolor) #获取页面的颜色
{
echo “<a href=?page=”.$i.”><font  color=’red’>第”.$i.”页</font></a>  “;
}
else
{
echo “<a href=?page=”.$i.”>第”.$i.”页</a>  “;
}
}
if(($page_next=$classpage->Page_next($pagecolor,$pagenum))!=0)
{
echo “<a href=?page=”.$page_next.”>后一页</a> “;
}
echo “<a href=?page=”.$pagenum.”>尾页</a> “;

 

 

通过清心醉

PHP小留言板(未编写后台进行数据删除,只为练习数据安全)

新手需要源码的可以下载htdocs

首先,对于SQL的操作方式,使用的是PDO方式;

其次,转义HTML的符号.使用htmlspecialchars()方法.(也可以使用htmlentities()的方法,但该方法会把htmlentities()里面的中文乱码化.)

首先是首页:index.php

<?php
$config=”config.php”;
if(file_exists($config))
{
require_once ‘main.php’;
}
else
{
echo “<script>setTimeout(\”this.location=’install.php’\”,0);</script>”;
}

/******************************************************************/

接着进入安装的表单install.php

<?php
header(“Content-Type:text/html;charset=utf-8”);
$config=’config.php’;
if(file_exists($config))
//如果配置文件存在,表示已经安装成功
//如果要重新安装,删除config.php文件即可.
{
echo “配置文件已存在,请删除删除config.php文件进行重新安装.”;
echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
exit;
}
$os = (DIRECTORY_SEPARATOR==’\\’)?”windows”:”linux”;
if($os==’linux’)
{
echo “<center>您的系统为linux请开启777权限,否则无法写入配置文件.</center>”;
}
?>
<html>
<title>数据库配置向导</title>
<body>
<form method=”post” action=”installsql.php”>
<table width=”400″ align=”center”>
<tr>
<td>MYSQL数据库地址:</td>
<td><input name=”adder” type=”text” size=”30″ maxlength=”500″ value=”localhost”></td>
</tr>
<tr>
<td>MYSQL数据库帐号:</td>
<td><input name=”user” type=”text” size=”30″ maxlength=”500″ value=”root”></td>
</tr>
<tr>
<td>MYSQL数据库密码:</td>
<td><input name=”password” type=”password” size=”30″ maxlength=”500″></td>
</tr>
<tr>
<td>数据库名称:</td>
<td><input name=”dbname” type=”text” size=”30″ maxlength=”500″ value=”数据库名称”></td>
</tr>
<tr>
<td>数据表名称:</td>
<td><input name=”dbtable” type=”text” size=”30″ maxlength=”500″ value=”数据表名称”></td>
</tr>
</table>
<div align=”center”>
<input type=”submit” value=”安装”>
</div>
</form>
</body>
</html>

/******************************************************************/

进行SQL写入:

installsql.php

<?php
header(“Content-Type:text/html;charset=utf-8”);
date_default_timezone_set(‘Asia/Shanghai’);
$config=’config.php’;
if(file_exists($config))
{
echo “配置文件已存在,程序已成功安装.”;
echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
exit;
}
$hostname=$_POST[“adder”];
$sqluser=$_POST[“user”];
$sqlpassword=$_POST[“password”];
$con = mysql_connect($hostname,$sqluser,$sqlpassword);
if(!$con)
{
die(‘无法连接: ‘ .mysql_error());
exit;
}
$dbname=$_POST[“dbname”];
$dbtable=$_POST[“dbtable”];
if(!mysql_select_db($dbname,$con))
{
mysql_query(“set character set ‘utf8′”);
mysql_query(“set names ‘utf8′”);
$newdbname=”CREATE DATABASE $dbname”;
mysql_query($newdbname);
$ip=$_SERVER[“REMOTE_ADDR”];
$time=date(“Y-m-d H:i:s”);
mysql_select_db($dbname,$con);
mysql_query(“CREATE TABLE $dbtable(id int primary key auto_increment,text text(1024),name varchar(128),time varchar(64),ip varchar(32))”);
mysql_query(“INSERT INTO $dbtable (text,name,time,ip)VALUES(‘我是内容我是内容哦’,’管理员’,’$time’,’$ip’)”);
$f1='”‘;$f2=’;’;
$counter_file = ‘config.php’;
$fopen=fopen($counter_file,’wb’);
fputs($fopen,”<?php”.”\n”);
fputs($fopen,”\$dbtable=”.$f1.”$dbtable”.$f1.$f2.”\n”);
fputs($fopen,”\$pdo=new PDO (“.$f1.”mysql:host=”.$hostname.$f2.”dbname=”.”$dbname”.$f2.”charset=utf8″.$f1.”,”.$f1.$sqluser.$f1.”,”.$f1.$sqlpassword.$f1.”)”.$f2.”\n”);
fputs($fopen,”?>”);
fclose($fopen);
echo “<script>setTimeout(\”this.location=’index.php’\”,0);</script>”;
}
else
{
echo “数据库 $dbname 已存在”;
echo “</br>”;
echo “<a href=’install.php’>返回</a>”;
exit;
}

/******************************************************************/

在看安装好后生成的PDO连接

config.php

<?php
$dbtable=”数据表名称”;
$pdo=new PDO (“mysql:host=localhost;dbname=数据库名称;charset=utf8″,”root”,””);
?>

/******************************************************************/

/******************************************************************/

到此基本就配置完成了,接着是前端,首页包含了require_once ‘main.php’;

/******************************************************************/

我们看看main.php文件获取内容的方法及写入的表单

<?php
require_once ‘header.php’;
#require_once ‘footer.php’;

$sql=”SELECT *FROM $dbtable”;
$echotext=$pdo->prepare($sql);
$echotext->execute();
/*
while ($row=$echotext->fetch(PDO::FETCH_ASSOC))
{
echo $row[“id”].”</br>”;    echo $row[“name”].”</br>”;
echo $row[“time”].”</br>”;    echo $row[“text”].”</br>”;
echo $row[“ip”].”</br>”;
}
*/
?>
<table align=”center” width=”80%” border=”2″>
<?php
$o=0;
foreach ( $pdo->query($sql) as $row)
{
$o++;
?>
<tr height=”30xp”><td style=”height:80px;width:20%;” >留言内容</td><td colspan=”3″ width=”60%”><?php echo $row[“text”] ?></td></tr>
<tr><td width=”20%”>楼层</td><td width=”20%”>名字</td><td width=”20%”>时间</td><td width=”20%”>IP</td></tr>
<tr><td>第<?php echo $o; ?>楼<td><?php echo $row[“name”] ?></td><td><?php echo $row[“time”] ?></td><td><?php echo $row[“ip”]?></td></tr>
<tr><td colspan=”4″ width=”60%”><center><?php echo “*****我是分割线*****”;?></center></td></tr>
<?php
};
?>
<form method=”post” action=”wordtext.php”>
<tr><td>请输入名字</br><input name=’username’ type=’text’ size=’30’style=”width:100%;height:30px;” maxlength=’100′ value=”></td><td colspan=”3″>
<textarea  name=”word” style=”height:80px;width:100%;resize: none;” maxlength=’3000′>
</textarea></td></tr>
<tr><td colspan=”4″ align=”center”><input type=”submit” value=”我也要留言”></td></tr>
</form>
</table>

/******************************************************************/

这里包含了一个header.php文件,其实这不需要起用sission

<?php
header(“Content-Type:text/html;charset=utf-8″);
date_default_timezone_set(‘Asia/Shanghai’);
require_once ‘config.php’;
require_once ‘class.php’; #包含所有类文件
$gotoindex=”<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;
if(!isset($_SESSION))
{
session_start(); //启用SESSION
}
?>
<marquee scrollAmount=2 width=100% onmouseover=stop() onmouseout=start()>
我的留言板</marquee></br>

/******************************************************************/

然后看留言POST的页面:wordtext.php

<?php
require_once ‘header.php’;
if(is_array($_POST)&&count($_POST)>0)
{
if((isset($_POST[“username”])&&!empty($_POST[“username”]))&&(isset($_POST[“word”])&&!empty($_POST[“word”])))
{
$name=$_POST[“username”];    $text=$_POST[“word”];
$newword=new New_Word; #实例化留言插入数据类
if(($newword->new_word_sql($name,$text))==0) //给new_word_sql函数传值,判断返回值是否为0;
{
echo “留言成功”;echo $gotoindex;
}
else
{echo “错误!”;}
}
else
{
echo “请完整填写”;echo $gotoindex;
}
}
else
{
echo “存在空值”;
echo $gotoindex;
};
/******************************************************************/

接下来就是重点了,class.php文件是如何做安全的.

<?php
require_once ‘config.php’;
class New_Word
{
    private $username;
    private $usertext;
    function new_word_sql($name,$text) #新增留言名字和内容处理
    {
        global $pdo;
        global $dbtable;
        /*获取config.php文件里的PDO配置*/
        $ip=$_SERVER[“REMOTE_ADDR”];
        $time=date(“Y-m-d H:i:s”);
        $this->username=htmlspecialchars($name);$this->usertext=htmlspecialchars($text);
        #私有名字和留言内容进行html转义,以防出现XSS攻击漏洞.
        if((strlen($this->username)>=6&&strlen($this->username)<=20)&&(strlen($this->usertext)>=10&&strlen($this->usertext)<=200))#判断长度
           {
            $sql=”insert into $dbtable(text,name,time,ip)values(‘$this->usertext’,’$this->username’,’$time’,’$ip’)”;
               $intosql=$pdo->prepare($sql);    #sql预处理
            $intosql->execute();  #执行插入sql语句
            return 0;            
           }
           else
           {
               echo “名字要求>6,<20字符;留言要求>10,<200字符”;
            echo “<script>setTimeout(\”this.location=’index.php’\”,2000);</script>”;//exit;
           }
    }
}

通过清心醉

中国又一装B企业->支付宝

申请个支付宝国际卡收款,一切条件都满足,以为是保证金的问题.

结果电话和在线咨询,你妈的哪跳出60万的交易量?

支付宝,60万的双功能(担保交易),手续费即使2%,你他妈不就是想说要1W2的佣金?

直接上图,支付宝你妈真搞笑,就算要60万的交易量,不敢写出来在条款上?

装B到你这地步,真乃神企业也.

1

2

 

3

4

5

6

 

通过清心醉

nginx下magento配置

server {
root       /home/www; #目录
index       index.php;
server_name    magento.example.com;
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location ^~ /(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
location /var/export/ { internal; }
location /. { return 404; }
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ $1 last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE default;
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params;
}
}