PHP学习记录

PHP学习记录

http://www.w3school.com.cn/php/php_quiz.asp

引入PHP文件**

require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
include 只生成警告(E_WARNING),并且脚本会继续

AJAX获取前端数据**

$username=$_POST['name'];
$username=$_GET['name'];

AJAX返回数据**

$this->ajaxReturn($User)

超全局变量**

$GLOBALS
这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
$GLOBALS['z']=5; echo $z; 
$_SERVER
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
$_SERVER['PHP_SELF']   返回当前执行脚本的文件名。
$_SERVER['GATEWAY_INTERFACE']  返回服务器使用的 CGI 规范的版本。
$_SERVER['SERVER_ADDR']    返回当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME']    返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
$_SERVER['SERVER_SOFTWARE']    返回服务器标识字符串(比如 Apache/2.2.24)。
$_SERVER['SERVER_PROTOCOL']    返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
$_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME']   返回请求开始时的时间戳(例如 1577687494)。
$_SERVER['QUERY_STRING']   返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_ACCEPT']    返回来自当前请求的请求头。
$_SERVER['HTTP_ACCEPT_CHARSET']    返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST']  返回来自当前请求的 Host 头。
$_SERVER['HTTP_REFERER']   返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
$_SERVER['HTTPS']  是否通过安全 HTTP 协议查询脚本。
$_SERVER['REMOTE_ADDR']    返回浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST']    返回浏览当前页面的用户的主机名。
$_SERVER['REMOTE_PORT']    返回用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME']    返回当前执行脚本的绝对路径。
$_SERVER['SERVER_ADMIN']   该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER['SERVER_PORT']    Web 服务器使用的端口。默认值为 “80”。
$_SERVER['SERVER_SIGNATURE']   返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED']    当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME']    返回当前脚本的路径。
$_SERVER['SCRIPT_URI'] 返回当前页面的 URI。
$_REQUEST
PHP $_REQUEST 用于收集 HTML 表单提交的数据。
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>
$_POST 
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
$_GET
<a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];

 $_FILES $_ENV $_COOKIE $_SESSION

循环对象**

创建对象
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
排序:
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
ksort($age);

function print_vars($obj) {
   foreach (get_object_vars($obj) as $prop => $val) {
     echo "\t$prop = $val\n";
   }
}

字符串**

strlen() 函数返回字符串的长度,以字符计。
strlen("Hello world!");
strpos() 函数用于检索字符串内指定的字符或文本。
如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。
echo strpos("Hello world!","world");
如需设置常量,请使用 define() 函数 - 它使用三个参数:
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;

数组**

定义数组
$cars=array("Volvo","BMW","SAAB");
多维数组:
$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );
数组个数
count($cars);
循环数组
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++) {
  echo $cars[$x];
  echo "<br>";
}
数组排列
$cars=array("Volvo","BMW","SAAB");
sort($cars);  rsort($cars)

foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
$colors = array("red","green","blue","yellow"); 
foreach ($colors as $value) {
  echo "$value <br>";
}

array() 创建数组。
array_change_key_case() 把数组中所有键更改为小写或大写。
array_chunk()   把一个数组分割为新的数组块。
array_column()  返回输入数组中某个单一列的值。
array_combine() 通过合并两个数组来创建一个新数组。
array_count_values()    用于统计数组中所有值出现的次数。
array_diff()    比较数组,返回差集(只比较键值)。
array_diff_assoc()  比较数组,返回差集(比较键名和键值)。
array_diff_key()    比较数组,返回差集(只比较键名)。
array_diff_uassoc() 比较数组,返回差集(比较键名和键值,使用用户自定义的键名比较函数)。
array_diff_ukey()   比较数组,返回差集(只比较键名,使用用户自定义的键名比较函数)。
array_fill()    用给定的键值填充数组。
array_fill_keys()   用指定键名的给定键值填充数组。
array_filter()  用回调函数过滤数组中的元素。
array_flip()    交换数组中的键和值。
array_intersect()   比较数组,返回交集(只比较键值)。
array_intersect_assoc() 比较数组,返回交集(比较键名和键值)。
array_intersect_key()   比较数组,返回交集(只比较键名)。
array_intersect_uassoc()    比较数组,返回交集(比较键名和键值,使用用户自定义的键名比较函数)。
array_intersect_ukey()  比较数组,返回交集(只比较键名,使用用户自定义的键名比较函数)。
array_key_exists()  检查指定的键名是否存在于数组中。
array_keys()    返回数组中所有的键名。
array_map() 把数组中的每个值发送到用户自定义函数,返回新的值。
array_merge()   把一个或多个数组合并为一个数组。
array_merge_recursive() 递归地合并一个或多个数组。
array_multisort()   对多个数组或多维数组进行排序。
array_pad() 用值将数组填补到指定长度。
array_pop() 删除数组的最后一个元素(出栈)。
array_product() 计算数组中所有值的乘积。
array_push()    将一个或多个元素插入数组的末尾(入栈)。
array_rand()    返回数组中一个或多个随机的键。
array_reduce()  通过使用用户自定义函数,以字符串返回数组。
array_replace() 使用后面数组的值替换第一个数组的值。
array_replace_recursive()   递归地使用后面数组的值替换第一个数组的值。
array_reverse() 以相反的顺序返回数组。
array_search()  搜索数组中给定的值并返回键名。
array_shift()   删除数组中首个元素,并返回被删除元素的值。
array_slice()   返回数组中被选定的部分。
array_splice()  删除并替换数组中指定的元素。
array_sum() 返回数组中值的和。
array_udiff()   比较数组,返回差集(只比较值,使用一个用户自定义的键名比较函数)。
array_udiff_assoc() 比较数组,返回差集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_udiff_uassoc()    比较数组,返回差集(比较键和值,使用两个用户自定义的键名比较函数)。
array_uintersect()  比较数组,返回交集(只比较值,使用一个用户自定义的键名比较函数)。
array_uintersect_assoc()    比较数组,返回交集(比较键和值,使用内建函数比较键名,使用用户自定义函数比较键值)。
array_uintersect_uassoc()   比较数组,返回交集(比较键和值,使用两个用户自定义的键名比较函数)。
array_unique()  删除数组中的重复值。
array_unshift() 在数组开头插入一个或多个元素。
array_values()  返回数组中所有的值。
array_walk()    对数组中的每个成员应用用户函数。
array_walk_recursive()  对数组中的每个成员递归地应用用户函数。
arsort()    对关联数组按照键值进行降序排序。
asort() 对关联数组按照键值进行升序排序。
compact()   创建包含变量名和它们的值的数组。
count() 返回数组中元素的数目。
current()   返回数组中的当前元素。
each()  返回数组中当前的键/值对。
end()   将数组的内部指针指向最后一个元素。
extract()   从数组中将变量导入到当前的符号表。
in_array()  检查数组中是否存在指定的值。
key()   从关联数组中取得键名。
krsort()    对数组按照键名逆向排序。
ksort() 对数组按照键名排序。
list()  把数组中的值赋给一些变量。
natcasesort()   用“自然排序”算法对数组进行不区分大小写字母的排序。
natsort()   用“自然排序”算法对数组排序。
next()  将数组中的内部指针向前移动一位。
pos()   current() 的别名。
prev()  将数组的内部指针倒回一位。
range() 创建包含指定范围单元的数组。
reset() 将数组的内部指针指向第一个元素。
rsort() 对数组逆向排序。
shuffle()   将数组打乱。
sizeof()    count() 的别名。
sort()  对数组排序。
uasort()    使用用户自定义的比较函数对数组中的键值进行排序。
uksort()    使用用户自定义的比较函数对数组中的键名进行排序。
usort() 使用用户自定义的比较函数对数组进行排序。

函数**

function familyName($fname,$year) {
  echo "$fname Zhang. Born in $year <br>";
}

familyName("Li","1975");
familyName("Hong","1978");
familyName("Tao","1983");
echo "今天是 " . date("Y/m/d") . "<br>";今天是 2017/04/26
echo "今天是 " . date("Y.m.d") . "<br>";今天是 2017.04.26
echo "今天是 " . date("Y-m-d") . "<br>";今天是 2017-04-26
echo "今天是 " . date("l");今天是 Wednesday
echo "当前时间是 " . date("h:i:sa");当前时间是 02:58:17pm
mktime() 函数返回日期的 Unix 时间戳
mktime(hour,minute,second,month,day,year)
$d=mktime(9, 12, 31, 6, 10, 2015);
echo "创建日期是 " . date("Y-m-d h:i:sa", $d) 创建日期是 2015-06-10 09:12:31am
strtotime(time,now) 函数创建日期和时间:

$d=strtotime("tomorrow");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("next Saturday");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("+3 Months");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d1=strtotime("December 31");
$d2=ceil(($d1-time())/60/60/24);
echo "距离十二月三十一日还有:" . $d2 ." 天。"; 距离十二月三十一日还有:249 天。
处理异常
function checkNum($number)
 {
 if($number>1)
  {
  throw new Exception("Value must be 1 or below");
  }
 return true;
 }

//在 "try" 代码块中触发异常
try
 {
 checkNum(2);
 //If the exception is thrown, this text will not be shown
 echo 'If you see this, the number is 1 or below';
 }

//捕获异常
catch(Exception $e)
 {
 echo 'Message: ' .$e->getMessage();
 }

文件处理函数**

readfile() 函数读取文件,并把它写入输出缓冲。
echo readfile("webdictionary.txt");
fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式

模式  描述
r   打开文件为只读。文件指针在文件的开头开始。
w   打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
a   打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
x   创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
r+  打开文件为读/写、文件指针在文件开头开始。
w+  打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
a+  打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
x+  创建新文件为读/写。返回 FALSE 和错误,如果文件已存在
fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
fread($myfile,filesize("webdictionary.txt"));
fclose() 函数用于关闭打开的文件
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);

fgets() 函数用于从文件读取单行。
逐行读取 "webdictionary.txt" 文件
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 输出单行直到 end-of-file
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);

fgetc() 函数用于从文件中读取单个字符。
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
// 输出单字符直到 end-of-file
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);

fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "Bill Gates\n";
fwrite($myfile, $txt);
$txt = "Steve Jobs\n";
fwrite($myfile, $txt);
fclose($myfile);

文件上传**

上传限制
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"];
    }
  }
else
  {
  echo "Invalid file";
  }
保存被上传的文件
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>


$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码

Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用

session_start() 函数必须位于 <html> 标签之前:
session_start();
// store session data
$_SESSION['views']=1;

终结 Session
unset($_SESSION['views']);session_destroy();session_destroy() 将重置 session,您将失去所有已存储的 session 数据。

安全性**

htmlspecialchars() 函数把特殊字符转换为 HTML 实体
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
我们能够通过 test_input() 函数检查每个 $_POST 变量,脚本是这样的:
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

PHP 过滤器(Filter)**

filter_var() - 通过一个指定的过滤器来过滤单一的变量
filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
filter_input - 获取一个输入变量,并对它进行过滤
filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
filter_var($int, FILTER_VALIDATE_INT)

PHP 数据库**

连接到一个 MySQL 数据库 mysql_connect(servername,username,password);
$con = mysql_connect("localhost","peter","abc123");
创建数据库 
mysql_query("CREATE DATABASE my_db",$con)

完整例子
$con = mysql_connect("localhost","peter","abc123");//链接数据库
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Create database
if (mysql_query("CREATE DATABASE my_db",$con))//创建数据库
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

// Create table in my_db database
mysql_select_db("my_db", $con);//选择数据库
$sql = "CREATE TABLE Persons 
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);//创建表

mysql_close($con);//关闭链接

主键自增的表
$sql = "CREATE TABLE Persons 
(
personID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(personID),
FirstName varchar(15),
LastName varchar(15),
Age int
)";

mysql_query($sql,$con);

插入数据
mysql_query("INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Peter', 'Griffin', '35')")
查询数据
$result = mysql_query("SELECT * FROM Persons");
$result = mysql_query("SELECT * FROM Persons
WHERE FirstName='Peter' ORDER BY age ");
修改数据
mysql_query("UPDATE Persons SET Age = '36'
WHERE FirstName = 'Peter' AND LastName = 'Griffin'");
删除表
mysql_query("DELETE FROM Persons WHERE LastName='Griffin'");

ODBC 数据库**

<?php
$conn=odbc_connect('northwind','','');
if (!$conn)
  {exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
if (!$rs)
  {exit("Error in SQL");}
echo "<table><tr>";
echo "<th>Companyname</th>";
echo "<th>Contactname</th></tr>";
while (odbc_fetch_row($rs))
{
  $compname=odbc_result($rs,"CompanyName");
  $conname=odbc_result($rs,"ContactName");
  echo "<tr><td>$compname</td>";
  echo "<td>$conname</td></tr>";
}
odbc_close($conn);
echo "</table>";
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GY程序源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值