热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP初学者常见问题集合修正版(21问答)

PHP初学者常见问题集合修正了网上传播的一些细节错误;。
1,如何连接连两个字符串?
答:在php中连接两个字符串可以直接使用“.”操作符号,例如$newStr="Zhang"."san",在java中是使用“+”操作符号,不要混淆。
2,如何计算一个字符串的长度?
答:$str="test";$length=strlen($str);即使用strlen(str)函数。
3,如何按照某个分割符拆分一个字符串?
答:使用explode(delim,str)函数,例如$arr=explode("::","a::bdf::dfsdf");该函数返回一个数组。在java中可以使用String对象的split函数。
4,如何获取http请求中的参数值?
答:如果为GET请求,使用$_GET[paramName],如果为POST请求,使用$_POST[paramName],例如:$email=$_POST["usermail"]。
5,php中是否可以像Java一样使用类?
答:可以,但是机制和具体使用方式可能不太一样。
6,是否可以举一个使用for循环的例子?
答:
代码如下:

for($i=0;$i<100;$i++){
echo $i;
}

7,如何在Javascript中取得php中的变量?
答:例子如下:
代码如下:

$username=$_POST["username"];
?>

8,如何删除一个文件?
答:使用unlink(filename)函数,当然程序必须有权限删除该文件才可以,我们所使用的php虚拟空间可能对一
些文件是有限制的,所以可能会出现权限错误。
9,我定义了一个类User,声明了该类的一个方法getName(),为什么我使用$user=new User;$name=$user.getName()会报错?
答:注意php中对类成员的引用方式,上面的引用应该为$name=$user->getName(),即使用->符号,而不是
Java中使用的“.”号。
10,我申请了一个不带mysql支持的php虚拟空间,请问我该怎么存取应用数据啊?
答:存取数据不一定要使用数据库,使用文件系统也是不错的,另外即使使用数据库,也不一定非要使用像mysql
、oracle等的这样的数据库,也可以使用一些文本数据库,例如txtsql,这样的话就不必去租用费用比较高的mysql
数据库空间了。
11,我申请了一个不带数据库的php空间,我现在的应用数据是存在文件中的,但是这会有一个安全问题,就是
访问者可以通过url查看到这些文件的内容,我怎么保护这些文件内容呢?
答:建议的方式有三种:
1)如果你租用的php空间允许设置目录的http访问权限,那么设置一下即可。
2)可以对文件内容进行加密,那么即使被下载,也没有多大的价值。
3)可以将这些文件的后缀改为.php,即使用php文件存储应用信息,这样的话,访问者就无法通过http访问到
这些文件的真实内容了,当然这些文件中的内容必须是正确的php语法,而且内容要使用php语法中的隐藏语法
将信息隐藏起来,例如一个存放帐号信息的文件如下:
users.php
代码如下:

/*
:::user1:password1::user2:password2::user3:password3:::
*/
?>

12, 如何对一个字符串进行转码?
使用php的iconv函数,签名为:
$str=iconv(fromEncode,toEncode,str);
例如:
$str="php字符串转码";
$str=iconv("utf-8","gbk",$str);//将字符串从utf-8格式转换为gbk格式
转码是很重要的一个问题,例如目前许多博客提供的rss都是utf-8返回的,因此需要通过转化才能正确显示。
13,如何读取一个网页的HTML内容?
PHP中文件的概念和Java中文件流的概念是类似的,许多文件读取的函数,其接受的输入流不仅仅是本地文件系统,也可以是网络文件,下面介绍其中的一种方式:
代码如下:

function getRssContent($url){
$handle = fopen ($url, "rb");
$cOntents= "";
$count=0;
do {
$data = fread($handle, 1000000);
$count++;
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
return $contents;
}

14,PHP中如何操作mysql数据库?
为了方便初学者能够上手mysql的操作,我介绍一些常用的操作:
1)数据库连接与关闭
代码如下:

$dbhost = "";
$dbuser = "";
$dbpw = "";
$dbname = "";
$link = mysql_connect($dbhost, $dbuser, $dbpw) or die("Could not connect: ".mysql_error());
mysql_select_db($dbname);
...//此处是对数据库具体的操作,后面的例子不再写数据库的连接和关闭操作
mysql_close($link);

2)向表中插入新数据
mysql_query("insert into mytable(id,name) values('".$id."','".$name."')");
上面是向mytable表的id和name字段插入一条数据。
3)从表中查询数据
$rs=mysql_query("select * from mytable mt where mt.id='001'");
4)从表中删除数据
$rs=mysql_query("delete from mytable mt where mt.id='001'");
5)对于复杂查询,例如select子句,mysql3.22以下版本不支持,因此许多时候php编写复杂sql时会得不到结果,这其实不是php的错,而是mysql的版本较低的缘故。
6)对于select返回的结果集,可以如下操作:
对于返回一条结果,可以如下:
代码如下:

$row=mysql_fetch_object($rs);
$id=$row->id;//id是字段名称,或者字段的别名,以下同
$title=$row->title;
$asker=$row->asker;

对于返回多条结果,可以如下:
代码如下:

while($row=mysql_fetch_object($rs)){
$id=$row->id;
$title=$row->title;
$asker=$row->asker;
}

当然还有方法可以使得返回的结果为数组,访问也可以根据字段的位置index值访问,这个可以查询相关手册,就不介绍了。
15,如果你的工程中使用HTML在线编辑器,那么FCKEditor可能是比较不错的一个选择,FCKEditor可以自己去网上下载,下载的地方很多,我介绍一下调用方式:
首先将FCKEditor的目录放到网站根目录下,假设你在网站根目录的/modules/cms/目录下的edit.php中要引用FCKEditor,具体代码如下:
代码如下:

$sBasePath = "../../fckeditor/";//fckeditor是FCKEditor的目录
$oFCKeditor = new FCKeditor('content') ;
$oFCKeditor->BasePath= $sBasePath ;
$oFCKeditor->Value="" ;
$oFCKeditor->;
$oFCKeditor->
?>

Create();?>


16,如何在session中存储数据?
首先要启动session机制,除了apache本身做一定的设置之外,在使用session的php页面中,要先调用session_start()方法,表示在本页面使用session。在session中存储数据的具体方式如下:
代码如下:

session_start();
$username="admin";
session_register("username");
?>
[code]
那么在其它的页面,想取得session中的用户名,如下:
[code]
$username=$_SESSION["username"];
?>

同理,要判断当前访问的用户是否已经登录也可以通过上面的方式进行:当用户登录之后,在session之中注册用户名,在需要session控制的php页面中加入判断,例如:
代码如下:

if(!session_is_registered("username")){
header("Location:login.php");
}

上面是通过判断session中是否注册了username变量来实现的。
17,PHP中如何定义类及其成员属性与操作,又如何调用?
直接举一个例子,应该可以说明上面的问题:
定义一个字符串处理工具类:StringUtils
代码如下:

class StringUtils{
function StringUtils(){
}
function getLength($str){
return strlen($str);
}
}
?>

在php页面中调用方式为:
代码如下:

include 'classes/com/xxx/StringUtils.php';
$length=StringUtils::getLength("abcde");
//或者
$instance=new StringUtils;
$length=$instance->getLength("abcde");
?>

对于一个类的方法,一般有两种调用方式,一种是当作静态方法进行调用,通过::连接符,一种是当作实例方法进行调用,通过->连接符。虽然调用可以使用两种方式调用,但是实际中一个类的方法是否为静态方法,往往是已经逻辑上定义好的,因此每一个方法,往往只使用某种方式调用,例如一个服务类中的方法,基本上应该都是实例方法,而一个工具类中的方法,基本上都是类方法或者说静态方法,例如:
代码如下:

class UserService{
var $dbhost = "";
var $dbuser = "";
var $dbpw = "";
var $dbname = "";
function UserService(){
}
function login($username,$password){
$link = mysql_connect($this->dbhost, $this->dbuser, $this->dbpw) or die("Could not connect: ".mysql_error());
mysql_select_db($this->dbname);
$rs=mysql_query("select count(*) as value from cieqas_users where userid='".$username."' and password='".$password."'");
$row=mysql_fetch_object($rs);
$value=$row->value;
mysql_close($link);
settype($value,"integer");
if($value<=0){
return false;
}
return true;
}
?>

另外,在实例方法中调用$this,才有实际的意义。
18,如何设置一个变量的类型?
PHP可以算作是弱类型语言的一种,不需要对变量进行强制类型定义,例如:
$username="admin";
$length=0;
$obj=new MyClass;
许多时候,需要将一个字符串变量转换为int变量,或者反过来等等,该如何操作呢?其实可以使用settype方法,该方法可以指定变量的类型,签名如下:
settype(var,type)
其中类型的值有boolean(bool)、integer(int)、float、string、array、object、null
例如:
$state="0";
settype($state,"int");
if($state==0){
...
}
19,如何将一个数组进行反向排列?
通过array_reverse方法实现,例如:
代码如下:

$arr=array();
$arr[0]=1;
$arr[1]=2;
$arr2=array_reverse($arr);

20,在PHP中如何将一个时间正确的进行显示?
在php中通过time()方法返回自从 Unix 新纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数,那么如何将该时间正确的显示为本地正确时间,许多时候我们都使用php中的setLocale方法,指定当前的地域,但是我们往往得不到正确的时间,给大家介绍一个其它的解决方式,就是通过Javascript与php结合去解决,例如:
代码如下:

var time="";
var time=parseInt(time);
var date=new Date(time*1000);
var pattern="yyyy-MM-dd hh:mm:ss";
var df=new SimpleDateFormat();
var str=df.format(date);
document.write(str);

因此,可以将php中time()的值传递给Javascript,并做为Date对象的参数,然后通过Javascript开源类库JsJava的处理,即可。
21,PHP在当今是非常流行的一门语言,到目前为止已经形成了大量的函数库,例如处理字符串的、数学的、XML的、文件的、SOAP的、网络的等等,不过其在面向对象方面,还有一定程度的欠缺,然而也并不是说非要面向对象才能算是一门如何如何的语言,然而在实际的网站或者项目开发中,仅仅是大量的函数库有些时候感觉不是特殊的方便,尤其是有些时候,业务需要我们抽象出架构层次以及各个对象,这个时候定义一套合适的业务类库就比较合适了,毕竟当我们面对更高业务层面的开发时,我们需要封装的层次更高,那么这个时候类和对象就提上日程了,不过目前使用php的各个函数,感觉也是非常方便的,而且非常强大,这又让我多少有些埋怨类似Java这样的面向对象的语言,做什么逻辑都要借助一大堆类来实现,看来语言之间是需要互相学习的,而不是互相攻击,解决问题促进行业和社会的发展才是最根本的。
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
author-avatar
手机用户2602913391
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有