收录:Php高手带路--问题汇总解答[2]

 [回顾]:上集介绍了"调试程序","如何使用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 [email protected]"%" =
PASSWORD(‘biscuit‘); 

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

  但是不需要使用FLUSH
PRIVILEGES。

  方法六 

  使用GRANT
... IDENTIFIED BY语句 

  mysql> GRANT USAGE ON *.* TO [email protected]"%"
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("
","&nbsp;",$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 "none"; 
  }

  }

  function iptype2 () {

  if (getenv("HTTP_X_FORWARDED_FOR"))

  {

   return 
  getenv("HTTP_X_FORWARDED_FOR");

  }

  else {

  return "none"; 
  }

  }

  function iptype3 () {

  if (getenv("REMOTE_ADDR"))

  {

   return getenv("REMOTE_ADDR"); 
  }

   else {

  return "none";

   }

   }

  function ip() {

   $ip1 = iptype1();

   $ip2 = iptype2();

  $ip3 = iptype3();

  if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown")

  {

  return $ip1;

  }

   elseif (isset($ip2) && $ip2 != "none" && $ip2 !=
"unknown") 
  {

  return $ip2;

  }

  elseif (isset($ip3) && $ip3 != "none" && $ip3 !=
"unknown")

   {

  return $ip3;

  }

   else

  { return "none"; }

  }

   Echo ip();

  ?> 

23:如何从数据库读取三天内的所有记录
  首先表格里要有一个DATETIME字段记录时间,

  格式为‘2003-7-15
16:50:00‘
  SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`)
<=
3;

24:如何远程链接Mysql数据库

  在增加用户的mysql表里有一个host字段,修改为"%",或者指定允许连接的ip地址,这样,你就可以远程调用了。
  $link=mysql_connect("192.168.1.80:3306","root","");

25:正则到底怎么用

26:用Apache后,主页出现乱码 

  方法一: 

  AddDefaultCharset
ISO-8859-1 改为 AddDefaultCharset off

  方法二: 

  AddDefaultCharset
GB2312

27:为什么单引号,双引号在接受页面变成(\‘\")
  解决方法:

  方法一:在php.ini中设置:magic_quotes_gpc
= Off

  方法二:
$str=stripcslashes($str)

28:怎么让程序一直运行下去,而不是超过30秒就停止
  set_time_limit(60)//最长运行时间一分钟

  set_time_limit(0)//运行到程序自己结束,或手动停止

29:计算当前在线人数
  例子一:用文本实现
  PHP代码:

  <?php 

  //首先你要有读写文件的权限

  //本程序可以直接运行,第一次报错,以后就可以

  
$online_log = "count.dat"; //保存人数的文件,

   $timeout =
30;//30秒内没动作者,认为掉线 

   $entries = file($online_log); 
  
$temp = array();

   for ($i=0;$i<count($entries);$i++)


   $entry =
explode(",",trim($entries[$i])); 

   if (($entry[0] !=
getenv(‘REMOTE_ADDR‘)) && ($entry[1] >
time())) 


  
array_push($temp,$entry[0].",".$entry[1]."\n");
//取出其他浏览者的信息,并去掉超时者,保存进$temp

  


   } 
  
array_push($temp,getenv(‘REMOTE_ADDR‘).",".(time() +
($timeout))."\n"); 
//更新浏览者的时间

  
$users_online = count($temp); //计算在线人数
   $entries =
implode("",$temp); 

   //写入文件

  
$fp = fopen($online_log,"w"); 

   flock($fp,LOCK_EX);
//flock() 不能在NFS以及其他的一些网络文件系统中正常工作

  
fputs($fp,$entries); 

  
flock($fp,LOCK_UN); 

  
fclose($fp); 
   echo
"当前有".$users_online."人在线"; 
  ?> 

30:什么是模板,怎么用
  我用的是phplib模板

  下面是其中几个函数的使用
  $T->Set_File("随便定义","模板文件.tpl"); 
  $T->Set_Block("在set_file中定义的","<!--
来自模板
-->","随便定义"); 

  $T->Parse("在Set_Block中定义的","<!--
来自模板
-->",true); 

  $T->Parse("随便输出结果","在Set_File中定义的"); 
  设置循环格式为:
  <!--(多于一个空格)
BEGIN
$handle(多于一个空格)-->
  如何将模板生成静态网页

  PHP代码:

  <?php

  //这里使用phplib模板

  ............

  ............

  $tpl->parse("output","html");

  $output
= $tpl->get("output");// $output 为整个网页内容

  function
wfile($file,$content,$mode=‘w‘) {

  $oldmask =
umask(0);

  $fp = fopen($file,
$mode);

  if (!$fp) return
false;

  fwrite($fp,$content);

  fclose($fp);

  umask($oldmask);

  return
true;

  }

  //
写到文件里

  Wfile($FILE,$output);

  header("location:$FILE");//重定向到生成的网页

  }

  ?>

31:怎么用php解释字符   

  比如:输入2+2*(1+2),自动输出8  可以用eval函数

  PHP代码:

  <form
method=post action="">

  <input type="text" name="str"><input
type="submit">

  </form>

  <?php

  $str=$_POST[‘str‘];

  eval("\$o=$str;");

  Echo
"$o";

  ?>

  到此,php的问题解答就为大家介绍完毕,希望能对各位有所帮助。

本文来自 http://pcedu.pconline.com.cn/empolder/wz/php/0507/675953_all.html#content_page_1

时间: 2024-11-10 20:34:57

收录:Php高手带路--问题汇总解答[2]的相关文章

收录:Php高手带路--问题汇总解答

  1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中register_global默认为off 若想取得从另一页面提交的变量: 方法一:在PHP.ini中找到register_global,并把它设置为on. 方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()). 方法三:一个一个读取变量

2019最新Android中级面试题目汇总解答

注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解. Android进阶延伸点 1.如何进行单元测试,如何保证App稳定 ? 参考回答: 要测试Android应用程序,通常会创建以下类型自动单元测试 本地测试:只在本地机器JVM上运行,以最小化执行时间,这种单元测试不依赖于Android框架,或者即使有依赖,也很方便使用模拟框架来模拟依赖,以达到隔离Android依赖的目的,模拟框架如Goog

php自学提升进阶路线

为了自己对php的系统全面深入的掌握,我通过个人经验,以及搜索网上高手经验,汇总了一份php自我学习路线规划,包括实战演练.学习建议.高手进阶.常见问题和测试总结五块.算是一个系统的学习计划和目标吧.避免盲目学习,对提高有所指引.希望自我加压,通过努力修炼达到高手水平.天道酬勤,自我勉励!此路线仅适合我本人. 部分摘自博客,参看:[原创]PHP程序员的技术成长规划 http://blog.csdn.net/heiyeshuwu/article/details/40098043这个php成长规划清

网站301重定向解答

网站建设中会遇到一些网址上面的问题,先简单和读者分享一些网站301定向跳转中会遇到的一些问题: 1.设置了301跳转,多久才能生效? 答:理论上设置了301跳转是即时生效的,但权重的传递目前百度无法承诺301跳转的生效时间,一到三个月都不一定,或者更久. 2.301生效后,原网页是否会被删除? 答:不会,会与跳转后的新网页同时存在. 3.原网页新网页都存在,相当于两个内容重复的页面,排名怎么处理? 答:通常百度会认为跳转后的新网页更加重要,原网页是被放弃的网页,会让新网页继承原网页属性,在搜索结

k3 Bos开发百问百答

          K/3 BOS开发百问百答   (版本:V1.1)           K3产品市场部       目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单据自定义无法看到bos定义的基础资料_ 1 [摘要]在调出基础资料序时簿时,过滤出我需要的基础资料_ 1 [摘要]bos定义的基础资料能否做到按名称而不是按代码进行自动匹配_ 1 二.业务单据篇__ 2 [摘要]是否支持多插件和数据授权_ 2 [摘要]K3BOS单据(新)中的数量字段怎样才能控制到两

k3BOS开发知识点

K/3 BOS开发百问百答 (版本:V1.1) K3产品市场部 目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单据自定义无法看到bos定义的基础资料_ 1 [摘要]在调出基础资料序时簿时,过滤出我需要的基础资料_ 1 [摘要]bos定义的基础资料能否做到按名称而不是按代码进行自动匹配_ 1 二.业务单据篇__ 2 [摘要]是否支持多插件和数据授权_ 2 [摘要]K3BOS单据(新)中的数量字段怎样才能控制到两个小数_ 2 [摘要]单据上显示各级审核人和审核日期_

Win10专业版常见开机故障分析及解决

微软已经正式向全球推送了Windows 10操作系统,与以往Windows产品不同的是,微软对windows7和Windows 8.1的用户施行免费升级的策略.同时,Windows 10也主要通过“升级”的方式进行安装,一些老机型在升级时遇到了很多问题,导致体验不友好.为了帮助大家顺利升级.安装.使用Windows 10系统,于是今天就来将一些升级Windows 10时常见的问题进行汇总解答. 焦点1,为何没有收到升级推送,或已经推送成功但没提示升级? 微软于7月29日正式向全球推送Window

.net用url重写URLReWriter实现任意二级域名

.net用url重写URLReWriter实现任意二级域名 这两天需要用到URLReWriter来搞那个猪头的Blog,网上看到篇好文,收藏 摘要:解释了url重写的相关知识.用asp.net实现二级域名重写的方法.对重写的一些问题做了汇总解答.提供了几段示例代码. 好久没有写技术文章,如果大家看不明白,就多看几篇,汗,或者,在文章的后面回复(这是最有效的办法),我会尽力帮助大家解答疑惑. 来找这篇文章的,应该都知道什么叫二级域名吧,废话就不说了.但是讨论前,先要明白一个思想问题.很多朋友一直考

前端学习方向

1. 通读权威指南.不要瞎读,外面烂书太多.倒不是说烂书学不到知识,它们之所以是烂书,是因为它们缺乏一种“正确的价值观”.什么是卓越的方法,什么是优雅 的代码,这些都是有“品味”和“格调”的.由于我近期看的书不多,也不想为别人打广告,所以我只能给出一个简单但绝对不会错的答案:看<权威指南>. 2. 多做自己想做的练习.比如自己做一个简历网站或是博客,把想用的技术都用上去,做了一版再做一版.不要指望通过接外包项目之类的能给你带来技术上的提高,替他人做嫁衣其实让你很难很好的发挥的. 3. 多向他人