PHP 和 Mysql 学习笔记(四)

1. 如何禁用 select 下拉列表中的某一项

<select>
<option  selected>——请选择——</option> 
<optgroup  label="分类一"> 
<option>——子类一</option> 
<option>——子类二</option> 
</optgroup> 
<optgroup  label="分类二"> 
<option>——子类一</option> 
<option>——子类二</option> 
</optgroup> 
</select>

2. EMS SQL Manager中文显示乱码

打开EMS SQL Manager点击那个数据库出现了许多属性

选择database registration info中有一个client charset

选择gb2312简体中文

3. Mysql 乱码

MySQL数据库字符集为utf8

并且网页通过UTF-8编码发送

这时存入数据库的仍然是乱码

需要做以下设置:

@mysql_connect($dbhost,$dbuser,$dbpassword);

加上下面这行

$this->query("SET NAMES 'utf8'");

在每次发送sql查询前设定字符集为utf-8

  1. 正则表达式

Email匹配

if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$email))
{
    echo "邮件格式不正确";
}
  1. PHP5中时间相差八小时的解决办法
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s');
  1. PHP防止SQL注入攻击的简单方法

    1.修改PHP的配置文件 php.ini ,将display_errors的值设为Off,这样保证PHP脚本在出错之后不会在页面中显示错误信息。

    2.在Mysql函数前加错误抑制符 @ ,避免输出mysql错误。

    3.对所有用户输入的数据进行转义并进行类型检查。

  2. 返回GD函数版本号

function gd_version() {
    if (function_exists('gd_info')) {
        $GDArray = gd_info();
        $gd_version_number = $GDArray['GD Version'] ? $GDArray['GD Version'] : 0;
        unset($GDArray);
    } else {
        $gd_version_number = 0;
    }
    return $gd_version_number;
}
  1. 获得用户的真实IP地址
function realip()
{
    static $realip = NULL;
    if ($realip !== NULL)
    {
        return $realip;
    }

    if (isset($_SERVER))
    {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
            foreach ($arr AS $ip)
            {
                $ip = trim($ip);
                if ($ip != 'unknown')
                {
                    $realip = $ip;
                    break;
                }
            }
        }
        elseif (isset($_SERVER['HTTP_CLIENT_IP']))
        {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        }
        else
        {
            if (isset($_SERVER['REMOTE_ADDR']))
            {
                $realip = $_SERVER['REMOTE_ADDR'];
            }
            else
            {
                $realip = '0.0.0.0';
            }
        }
    }
    else
    {
        if (getenv('HTTP_X_FORWARDED_FOR'))
        {
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif (getenv('HTTP_CLIENT_IP'))
        {
            $realip = getenv('HTTP_CLIENT_IP');
        }
        else
        {
            $realip = getenv('REMOTE_ADDR');
        }
    }

    preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
    return $realip;
}
  1. 连接多个ID,以便创建像这样的查询: "IN('a','b')";
function implode_ids($array){
    $ids = $comma = '';
    if (is_array($array) && count($array)){
        foreach($array as $id) {
            $ids .= "$comma'".intval($id)."'";
            $comma = ', ';
        }
    }
    return $ids;
}
2007-09-07 00:47 116 mysql php 笔记