Call to undefined function mysql_connect()

 更新时间:2016年11月25日 15:17  点击:1408

Call to undefined function mysql_connect()

很多初学者都经常碰到这种问题,但对老鸟来说这不是什么问题了,仔细分析一下就知道是mysql.dll文件没存在,或没有把php.ini里面的.extension=php_mysql.dll前面的; 去了.

php.ini的everyone权限不够,给php.ini文件增加everyone的所有权先后问题解决。

问题其实很简单的,可能还有一些其他的问题,各位要根据自己的具体情况去解决问题了.

 

使用函式 date() 实现

<?php echo $showtime=date("Y-m-d H:i:s");?>

显示的格式: 年-月-日 小时:分钟:妙

相关时间参数:

a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
D - 星期几,三个英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
l - 星期几,英文全名; 如: "Friday"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"

可以自由设定显示的内容,连接符号或是显示位置,例如 date("m-d H") 或者date("dmY");?>等

在使用PHP 编程的时候,我有一个习惯,不太喜欢使用现成的库文件,例如PHPLib或者其它类似的库,在这个系统中,我也打算自己写一个库文件,它需要处理认证、确认email ,更新帐号(密码,email )等事情。

    为了在保证该系统安全的同时,不会加重我现有数据库的负担。因此这个新的系统要依赖cookies.这确实是一个两难的选择,因为如果只是设置一个用户名的cookie,是很不安全的,这行不通,但从数据库的负担考虑,我也不能加入一个简单的无序码而交由我的数据库来进行验证。

    解决的方法是同时设置两个cookie,一个是用户名的cookie,一个是无序码的cookie. 这个无序码实际上是由用户名和一个超级密码(只有程序设计者知道)组合通过md5 ()函数运算产生的。由于md5 ()是一个单向的无序码,因此是不可以破解的。在用户更改email 时,我也可以用该email 和超级密码产生一个无序码,以让用户确认修改。这实际上是一个公匙/ 私匙类的系统。不明白?不要紧,下面再慢慢说明。

    有趣的是,这个系统的扩展能力是可以达到无穷的,因为该系统的主要工作是计算md5 ()函数的值,而且由web 服务器完成,在负载增加时,可以加入其它的服务器来分担负载,虽然认证系统不会拖跨一个数据库,但是这样做就让最终的瓶颈只能出现在数据库上。

    以下是该库中的两个函数——记号产生和记号认证函数。
   
    <?php

   $hidden_hash_var='your_secret_password_here';

   $LOGGED_IN=false;
   
      unset($LOGGED_IN);

   function user_isloggedin() {
   
     global $user_name,$id_hash,$hidden_hash_var,$LOGGED_IN;
 
   file://已经进行无序码的检测了吗

   file://如果是的话,返回该变量

   if ( isset($LOGGED_IN) ) {

   return $LOGGED_IN;

   }

   file://are both cookies present?

   if ($user_name && $id_hash) {

   /*
       
      由cookies中得来的用户名和系统超级密码产生一个认证用的无序码如果该无序码与cookie中的无序码一样,则cookies中的变量是可信的,用户已经登录

   */

   $hash=md5($user_name.$hidden_hash_var);

   if ($hash == $id_hash) {

   file://无序码符合,设置一个全局变量,这样我们在再次调用该函数的时候,

   file://就无需再次进行md5()运算

   $LOGGED_IN=true;

   return true;

   } else {

   file://两个无序码不符合,没有登录

   $LOGGED_IN=false;

   return false;

   }

   } else {

    $LOGGED_IN=false;

    return false;

   }

    }

   function user_set_tokens($user_name_in) {

   /*

   一旦用户名和密码通过验证,就调用这个函数

   */

   global $hidden_hash_var,$user_name,$id_hash;

   if (!$user_name_in) {

   $feedback .= ' ERROR - User Name Missing When Setting Tokens ';

   return false;

   }

   $user_name=strtolower($user_name_in);

   file://使用用户名和超级密码创建一个无序码,作判断是否已经登录用

   $id_hash= md5($user_name.$hidden_hash_var);

   file://设置cookies的有效期为一个月,可设置为任何的值

   setcookie('user_name',$user_name,(time()+2592000),'/','',0);

   setcookie('id_hash',$id_hash,(time()+2592000),'/','',0);

   }

   ?>

再来看另一段有趣的代码,用户怎样才能安全地改变他们的email地址呢?他们可以在任何时候改变email地址,但是要进行确认。

   <?php

   function user_change_email ($password1,$new_email,$user_name) {

   global $feedback,$hidden_hash_var;

   if (validate_email($new_email)) {

   $hash=md5($new_email.$hidden_hash_var);

   file://改变数据库中确认用的无序码值,但不改变email

    file://发出一个带有新认证码的确认email

   $user_name=strtolower($user_name);

   $password1=strtolower($password1);

   $sql="UPDATE user SET confirm_hash='$hash' WHERE user_name='$user_name' AND password='". md5($password1) ."'";

   $result=db_query($sql);

   if (!$result || db_affected_rows($result) < 1) {

   $feedback .= ' ERROR - Incorrect User Name Or Password ';

   return false;

   } else {

   $feedback .= ' Confirmation Sent ';

   user_send_confirm_email($new_email,$hash);

   return true;

   }

   } else {

   $feedback .= ' New Email Address Appears Invalid ';

   return false;

   }

   }

   function user_confirm($hash,$email) {

   /*

   用户点击认证email的相关连接时,连到一个确认的页面,该页面会调用这个函数,

   */

   global $feedback,$hidden_hash_var;

   file://verify that they didn't tamper with the email address

   $new_hash=md5($email.$hidden_hash_var);

   if ($new_hash && ($new_hash==$hash)) {
   
    file://在数据库中找出这个记录

   $sql="SELECT * FROM user WHERE confirm_hash='$hash'";

   $result=db_query($sql);

   if (!$result || db_numrows($result) < 1) {

   $feedback .= ' ERROR - Hash Not Found ';

   return false;

   } else {

   file://确认email,并且设置帐号为已经激活

   $feedback .= ' User Account Updated - You Are Now Logged In ';

   user_set_tokens(db_result($result,0,'user_name'));

   $sql="UPDATE user SET email='$email',is_confirmed='1' WHERE confirm_hash='$hash'";

   $result=db_query($sql);

   return true;

   }

   } else {

   $feedback .= ' HASH INVALID - UPDATE FAILED ';

   return false;

   }

   }

    function user_send_confirm_email($email,$hash) {

   /*

   这个函数在首次注册或者改变email地址时使用

    */

   $message = "Thank You For Registering at Company.com".

   "nSimply follow this link to confirm your registration: ".
      
       "nnhttp://www.company.com/account/confirm.php?hash=$hash&email=". urlencode($email). "nnOnce you confirm, you can use the services on PHPBuilder.";

        mail ($email,'Registration Confirmation',$message,'From: noreply@company.com');

      }

    ?>

 

数据插不进数据库

 

解决办法:

1.创建数据库,我们在整理的选项中选择的是utf-8字符集,那么我们的php网页中就要charset改为这样<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,同时我们的操作数据库语句(select,insert等)前要加上 mysql_query("SET NAMES 'utf8'");

2.创建数据库,我们在整理的选项中选择的是gb2312字符集,那么我们的php网页中就要charset改为这样<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,同时我们的操作数据库语句(select,insert等)前要加上 mysql_query("SET NAMES 'gb2312'");

3.如果你的数据库字段创建时是gb2312那面连接时数据就得mysql_query("set Names gb2312"),

4.还有一种办法就是用函数转换,iconv('被转换的','转换成的',要转换的符)

正则表达式  模式匹配 Javascript
摘要:收集一些常用的正则表达式。
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

利用正则表达式分解和转换IP地址:

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g  //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复]

var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2)  //结果为:abcefgi

我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1

s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

[!--infotagslink--]

相关文章