PHP 和 Mysql 学习笔记(四)

转载时请标明文章原始出处和作者信息, 作者: lostsnow.
http://www.lsproc.com/blog/php_mysql_study_4/

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

4. 正则表达式

Email匹配
if(!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/",$email))
{
echo "邮件格式不正确";
}

5. PHP5中时间相差八小时的解决办法

<?php
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s');
?>

6. PHP防止SQL注入攻击的简单方法

1.修改PHP的配置文件 php.ini ,将display_errors的值设为Off,这样保证PHP脚本在出错之后不会在页面中显示错误信息。
2.在Mysql函数前加错误抑制符 @ ,避免输出mysql错误。
3.对所有用户输入的数据进行转义并进行类型检查。

7. 返回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;
}

8. 获得用户的真实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;
}

9. 连接多个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;
}

-- EOF --

Related Posts

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>