日期:2012-08-14  浏览次数:20670 次

  [回顾]:上集介绍了"调试程序","如何使用session","规范SQL语句"等15个问题(Php高手带路--问题汇总解答[1])。本集继续作出16条常见问题的解答。

16:我想修改MySQL的用户,密码
  首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,

  所以一般用户无法更改密码,除非请求管理员.

  方法一

  使用phpmyadmin,这是最简单的了,修改mysql库的user表,

  不过别忘了使用PASSWORD函数。

  方法二

  使用mysqladmin,这是前面声明的一个特例。

  mysqladmin -u root -p password mypasswd

  输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。

  把命令里的root改为你的用户名,你就可以改你自己的密码了。

  当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,

  那么这种方法就是无效的。

  而且mysqladmin无法把密码清空。
  下面的方法都在mysql提示符下使用,且必须有mysql的root权限:

  方法三

  mysql> INSERT INTO mysql.user (Host,User,Password)

  VALUES('%','jeffrey',PASSWORD('biscuit'));

  mysql> FLUSH PRIVILEGES

  确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。

  在《mysql中文参考手册》里有这个例子,所以我也就写出来了。

  注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。

  方法四

  和方法三一样,只是使用了REPLACE语句

  mysql> REPLACE INTO mysql.user (Host,User,Password)

  VALUES('%','jeffrey',PASSWORD('biscuit'));

  mysql> FLUSH PRIVILEGES

  方法五

  使用SET PASSWORD语句,

  mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');

  你也必须使用PASSWORD()函数,

  但是不需要使用FLUSH PRIVILEGES。

  方法六

  使用GRANT ... IDENTIFIED BY语句

  mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';


  这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。
  注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。


17:我想知道他是通过哪个网站连接到本页
  PHP代码:

  <?php

  //必须通过超级连接进入才有输出

  Echo $_SERVER['HTTP_REFERER'];

  ?>

18:数据放入数据库和取出来显示在页面需要注意什么
  入库时

  $str=addslashes($str);

  $sql="insert into `tab` (`content`) values('$str')";

  出库时

  $str=stripslashes($str);

  显示时

  $str=htmlspecialchars(nl2br($str)) ;
  <?php

  //$content来自数据库

  $content=nl2br(htmlspecialchars($content));

  $content=str_replace(" "," ",$content);

  $content=str_replace("\n","<br>\n",$content);

  ?>

19:如何读取当前地址栏信息
  PHP代码:

  <?php

  $s="http://{$_SERVER['HTTP_HOST']}:{$_SERVER["SERVER_PORT"]}{$_SERVER['SCRIPT_NAME']}";

  $se='';
  foreach ($_GET as $key => $value) {
  $se.=$key."=".$value."&";
  }
  $se=Preg_Replace("/(.*)&$/","$1",$se);
  $se?$se="?".$se:"";
  echo $s."?$se";
  ?>

20:我点击后退按钮,为什么之前填写的东西不见
  这是因为你使用了session.

  解决办法:
  PHP代码:

  <?php session_cache_limiter('private, must-revalidate');session_start();
  .....................?>

21:怎么在图片里显示IP地址

  PHP代码:

  <? Header("Content-type: image/png");

  $img = ImageCreate(180,50);
  $ip = $_SERVER['REMOTE_ADDR'];

   ImageColorTransparent($img,$bgcolor);

  $bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // 背景颜色

  $shadow = ImageColorAllocate($img, 250,0,0); // 阴影颜色

  $textColor = ImageColorAllocate($img, oxff,oxff,oxff); // 字体颜色

  ImageTTFText($img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma.ttf",$ip);
//显示背景

  ImageTTFText($img,10,0,25,28,$textColor,"d:/windows/fonts/Tahoma.ttf","your ip is".$ip);

 // 显示IP    

  ImagePng($img);    

  imagecreatefrompng($img);
  ImageDestroy($img);      

  ?>

22:如何取得用户的真实IP

  PHP代码:

  <? function iptype1 () {

   if (getenv("HTTP_CLIENT_IP"))

   {
  return getenv("HTTP_CLIENT_IP");

  }

  else

  {

  return "n