Home >Backend Development >PHP Tutorial >Summary of some error handling methods and techniques in PHP_PHP Tutorial

Summary of some error handling methods and techniques in PHP_PHP Tutorial

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-21 14:58:381016browse

1: Why can’t I get the variable?
I POST data name from one web page to another web page, why can’t I get any value when I output $name?
In PHP4. In versions 2 and later, register_global defaults to off

If you want to get the variables submitted from another page:
Method one: Find register_global in PHP.ini and set it to on.
Method two: Put this extract($_POST);extract($_GET); at the front of the receiving web page (note that there must be Session_Start() before extract($_SESSION)).
Method 3:Read variables $a=$_GET["a"];$b=$_POST["b"], etc. one by one. Although this method is troublesome, it is safer.

2: Debugging your program
You must know the value of a certain variable at runtime. This is what I did, create a file debug.php with the following content:
PHP code:-------------------------- ---------

Copy code The code is as follows:

Ob_Start();
Session_Start( );
Echo "
"; <br>Echo "The _GET variables obtained on this page are:"; <br>Print_R($_GET); <br>Echo "The _POST variables obtained on this page There are: "; <br>Print_R($_POST); <br>Echo "The _COOKIE variables obtained on this page are:"; <br>Print_R($_COOKIE); <br>Echo "The _SESSION variables obtained on this page There are: "; <br>Print_R($_SESSION); <br>Echo "
";

---------------- ----------------------------------
Then set in php.ini: include_path = "c:/php", And put debug.php in this folder,
You can include this file in every web page in the future and view the obtained variable names and values.

3: How to use session
Everything related to session must call the function session_start() before;
Paying value for session is very simple, such as:

Copy code The code is as follows:

Session_start();
$Name = "This is a Session example";
Session_Register("Name ");//Note, do not write: Session_Register("$Name");
Echo $_SESSION["Name"];
//After that $_SESSION["Name"] is "This is a Session example "

After php4.2, you can pay directly for the session:
Copy the code The code is as follows:

Session_Start();
$_SESSION["name"]="value";

Cancel the session like this:
Copy the code The code is as follows:

session_start();
session_unset();
session_destroy();

Cancel a certain The session variable still has bugs in php4.2 and above.
Note:
1: There cannot be any output before calling Session_Start(). For example, the following is wrong.
========== =================================
1 line
2 lines [php]
3 Line Session_Start();//There has been output in the first line before
4 lines....
5 lines[/php]
============== =============================
Tip 1:
Whenever "... .....headers already sent.....", which is the information output to the browser before Session_Start().
Remove the output and it will be normal. (This error will also occur in COOKIE. The reason for the error Same)

Tip 2:
If your Session_Start() is placed in a loop statement and it is difficult to determine where the information was output to the browser before, you can use the following method:
1 Line [php] Ob_Start(); [/php]
.....Here is your program...
2: What is the error?
Warning: session_start( ): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:....
Because you did not specify the storage path of the session file.

Solution:
(1) Create the folder tmp in the c drive
(2) Open php.ini, find session.save_path, and change it to session.save_path= "c: /tmp"

4: Why when I send variables to another web page, I only get the first half, and all the ones starting with spaces are lost

Copy the code The code is as follows:

$Var="hello php";//Change to $Var=" hello php"; Try to get the result
$ post= "receive.php?Name=".$Var;
header("location:$post");

Content of receive.php:
Copy code The code is as follows:

Echo "
"; <br>Echo $_GET["Name"]; <br>Echo "&lt ;/pre>"; <br>
</div>
<br>The correct method is: <br><div class="codetitle">
<span style="CURSOR: pointer" onclick="doCopy('code44918')"><u>Copy the code</u></span> The code is as follows:</div>
<div class="codebody" id="code44918">
<br>$Var="hello php"; <br>$post= "receive.php?Name=".urlencode($Var); <br>header("location:$post"); <br>
</div>
<br>You don’t need to use Urldecode() on the receiving page, the variables will be automatically encoded. 
<p><strong>5: How to intercept Chinese characters of a specified length without ending with "[/php]", and the excess part is replaced with "..."<br></strong>Generally speaking, the variables to be intercepted come from Mysql, first ensure that the field length is long enough, usually char(200), which can hold 100 Chinese characters, including punctuation. <br></p>
<div class="codetitle">
<span style="CURSOR: pointer" onclick="doCopy('code64808')"><u>Copy code</u></span> The code is as follows :</div>
<div class="codebody" id="code64808">
<br>$str="This character is so long, ^_^"; <br>$Short_Str=showShort($str,4);//Intercept the first 4 Chinese characters, the result is: This character... <br>Echo "$Short_Str"; <br>Function csubstr($str,$start,$len) <br>{ <br>$strlen=strlen($str); <br>$clen =0; <br>for($i=0;$i<$strlen;$i++,$clen++) <BR>{ <BR>if ($clen>=$start+$len) <br>break; <br>if(ord(substr($str,$i,1))>0xa0) <br>{ <br>if ($clen>=$start) <br>$tmpstr.=substr($str,$i ,2); <br>$i++; <br>} <br>else <br>{ <br>if ($clen>=$start) <br>$tmpstr.=substr($str,$i,1 ); <br>} <br>} <br>return $tmpstr; <br>} <br>Function showShort($str,$len) <br>{ <br>$tempstr = csubstr($str,0, $len); <br>if ($str<>$tempstr) <br>$tempstr .= "..."; //What you want to end with, just modify it here. <br>return $tempstr; <br>} <br>
</div>
<br><strong>6: Standardize your SQL statements <br></strong>Add "`" in front of tables and fields so that they will not appear due to misuse of keywords Wrong, <br>Of course I don’t recommend you to use keywords. 
<p><strong>For example<br></strong>$Sql="INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', ' use`', 1, 'criterion your sql string ', '2003-07-11 00:00:00')" <br>How to enter "`"? On the TAB key. </p>
<p><strong>7: How to make the Html/PHP format string not to be interpreted, but displayed as it is <br></strong></p>
<div class="codetitle">
<span style="CURSOR: pointer" onclick="doCopy('code31696')"><u>Copy code</u></span> Code As follows:</div>
<div class="codebody" id="code31696">
<br>$str="<h1>PHP</h1>"; <br>Echo "Interpreted: ".$str."<br>Processed: "; <br>Echo htmlentities(nl2br($str)); <br>
</div>
<br><strong>8: How to get the variable value outside the function in the function<br></strong><div class="codetitle">
<span style="CURSOR: pointer" onclick="doCopy('code31032')"><u>Copy code</u></span> The code is as follows:</div>
<div class="codebody" id="code31032">
<br>$a="PHP"; <br>foo(); <br>Function foo() <br>{ <br> global $a;//Delete here to see what the result is <br> Echo "$a"; <br>} <br>
</div>
<br><strong>9: How do I know what functions are supported by the system by default? <br></strong><div class="codetitle">
<span style="CURSOR: pointer" onclick="doCopy('code6465')"><u>Copy code</u></span> The code is as follows:</div>
<div class="codebody" id="code6465">
<br>$arr = get_defined_functions(); <br>Function php() { <br>} <br>echo "<pre class="brush:php;toolbar:false">"; <br>Echo "This displays all functions supported by the system, and the custom function phpn"; <br>print_r($arr); <br>echo "
";

10: How to compare the number of days between two dates
Copy code The code is as follows:

$Date_1="2003-7-15";//It can also be:$Date_1="2003-6-25 23:29:14";
$Date_2="1982-10-1";
$Date_List_1=explode("-",$Date_1);
$Date_List_2=explode("-",$Date_2);
$d1= mktime(0,0,0,$Date_List_1[1],$Date_List_1[2],$Date_List_1[0]);
$d2=mktime(0,0,0,$Date_List_2[1],$Date_List_2[ 2],$Date_List_2[0]);
$Days=round(($d1-$d2)/3600/24);
Echo "I have struggled for $Days days^_^";

11: Why after I upgraded PHP, the original program showed a full screen Notice: Undefined variable:
This is a warning, caused by the variable being undefined.
Open php .ini, find the error_reporting at the bottom, change it to error_reporting = E_ALL & ~E_NOTICE
For Parse error error
error_reporting(0) cannot be closed.
If you want to close any error prompts, open php.ini, Find display_errors and set it to display_errors = Off. Any errors in the future will not be prompted.
Then what is error_reporting?

12: I want to add a file at the beginning and end of each file. But adding them one by one is troublesome

1: Open the php.ini file
Set include_path= "c:"

2: Write two files
auto_prepend_file.php and auto_append_file.php are saved in the c drive, they will be automatically attached to the head and tail of each php file.

3: Found in php.ini:
Automatically add files before or after any PHP document.
auto_prepend_file = auto_prepend_file.php; attached to the head
auto_append_file = auto_append_file .php; attached to the tail

In the future, each of your php files will be equivalent to

Copy code The code is as follows:

Include "auto_prepend_file.php" ;
.....//Here is your program
Include "auto_append_file.php";

13: How to upload files using PHP
Copy code The code is as follows:


Upload file form


Please select a file:




< /form>


$upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file' ]['name'];
if($upload_file){
$file_size_max = 1000*1000;// 1M limit file upload maximum capacity (bytes)
$store_dir = "d:/";/ / Storage location of uploaded files
$accept_overwrite = 1;//Whether overwriting the same file is allowed
// Check file size
if ($upload_file_size > $file_size_max) {
echo "Sorry, you The file capacity is larger than specified";
exit;
}
// Check read and write files
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
Echo "Exists Files with the same file name";
exit;
}
//Copy the file to the specified directory
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo " Failed to copy file";
exit;
}
}
Echo "

You uploaded the file:";
echo $_FILES['upload_file']['name'] ;
echo "
";
//The original name of the client machine file.
Echo "The MIME type of the file is:";
echo $_FILES['upload_file']['type'];
//The MIME type of the file, the browser needs to provide support for this information, for example "image/gif".
echo "
";
Echo "Upload file size:";
echo $_FILES['upload_file']['size'];
//The size of the uploaded file, The unit is bytes.
echo "
";
Echo "The file is temporarily stored as:";
echo $_FILES['upload_file']['tmp_name'];
//The file is The temporary file name stored on the server after uploading.
echo "
";
$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
case 0:
Echo " Uploaded successfully"; break;
case 1:
Echo "The uploaded file exceeds the value limited by the upload_max_filesize option in php.ini."; break;
case 2:
Echo "Echo of the uploaded file The size exceeds the value specified by the MAX_FILE_SIZE option in the HTML form. "; break;
case 3:
Echo "Only part of the file was uploaded"; break;
case 4:
Echo "No file was uploaded. Upload";break;
}


14: How to configure the GD library
The following is my configuration process
1: Use the dos command (you can also do it manually, copy all the dll files in the dlls folder to the system32 directory ) copy c:phpdlls*.dll c:windowssystem32
2: Open php.ini
Set extension_dir = "c:/php/extensions/";
3:
extension=php_gd2.dll; Remove the comma in front of the extension. If there is no php_gd2.dll, the same goes for php_gd.dll. Make sure this file does exist c:/php/extensions/php_gd2.dll

4: Run the following program to test

Copy the code The code is as follows:

Ob_end_flush();
/ /Note, no information can be output to the browser before this, please pay attention to whether auto_prepend_file is set.
header ("Content-type: image/png");
$im = @imagecreate (200, 100)
or die ("Unable to create image");
$background_color = imagecolorallocate ($im, 0,0, 0);
$text_color = imagecolorallocate ($im, 230, 140, 150);
imagestring ($im, 3, 30, 50, "A Simple Text String", $text_color);
imagepng ($im);

15: What is UBB Code
UBB code is a variant of HTML and a special TAG used by Ultimate Bulletin Board (a foreign BBS program, which is also used in many places in China).

Even if it is prohibited Using HTML, you can also use UBBCode? Maybe you prefer to use UBBCode? instead of HTML, even if the forum allows the use of HTML, because it uses less code and is safer.
There are examples in Q3boy's UBB. You can run tests directly

16: I want to modify the MySQL user and password
First of all, I must declare that in most cases, modifying MySQL requires root permissions in mysql.
So ordinary users Password cannot be changed without requesting an administrator.

Method 1
Use phpmyadmin, this is the simplest, modify the user table of the mysql library,
But don’t forget to use the PASSWORD function.

Method 2
Using mysqladmin, this is a special case stated earlier.
Mysqladmin -u root -p password mypasswd
After entering this command, you need to enter the original password of root, and then the root password will be changed to mypasswd.
Change root in the command to your username, and you can change your own password.
Of course, if your mysqladmin cannot connect to the mysql server, or you cannot execute mysqladmin,
then this method is invalid.
And mysqladmin cannot clear the password.

The following methods are used at the mysql prompt and must have root permissions for mysql:
Method 3
mysql> INSERT INTO mysql.user ( Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
To be precise, this is adding a user with the user name jeffrey, the password is biscuit.
There is this example in the "mysql Chinese Reference Manual", so I wrote it out.
Be careful to use the PASSWORD function, and then use FLUSH PRIVILEGES.

Method 4
Same as method 3, except that the REPLACE statement is used
mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES('%' ,'jeffrey',PASSWORD('biscuit'));
 mysql> FLUSH PRIVILEGES

Method 5
Use the SET PASSWORD statement,
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
You must also use PASSWORD() Function,
But there is no need to use FLUSH PRIVILEGES.

Method 6
Use GRANT... IDENTIFIED BY statement
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
Here PASSWORD () function is unnecessary, and there is no need to use FLUSH PRIVILEGES.
Note: PASSWORD() [does not] perform password encryption in the same way as Unix password encryption.

17: I want to know which website he connected to this page through

Copy the code The code is as follows:

//You must enter through a super connection to have output
Echo $_SERVER['HTTP_REFERER'];

18: What should you pay attention to when putting data into the database and taking it out to display on the page
When entering the database
$str=addslashes($str);
$sql="insert into `tab` (`content`) values('$str')";
When leaving the library
$str=stripslashes($str);
When displaying
$str=htmlspecialchars(nl2br ($str)) ;

19: How to read the current address bar information

Copy the code The code is as follows:

$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: When I clicked the back button, why did the previously filled out stuff disappear?
This is because you used session.
Solution:
Copy code The code is as follows:

session_cache_limiter('private, must-revalidate');
session_start();
.... .......
..........

21: How to display the IP address in the picture
Copy code The code is as follows:

Header("Content-type: image/png");
$img = ImageCreate(180,50 );
$ip = $_SERVER['REMOTE_ADDR'];
ImageColorTransparent($img,$bgcolor);
$bgColor = ImageColorAllocate($img, 0x2c,0x6D,0xAF); // Background color
$shadow = ImageColorAllocate($img, 250,0,0); // Shadow color
$textColor = ImageColorAllocate($img, oxff,oxff,oxff); // Font color
ImageTTFText($ img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma.ttf",$ip); //Display background
ImageTTFText($img,10,0,25,28, $textColor,"d:/windows/fonts/Tahoma.ttf","your ip is".$ip); // Display IP
ImagePng($img);
imagecreatefrompng($img);
ImageDestroy($img);

22: How to get the user’s real IP
Copy code The code is as follows:

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: How to read all records within three days from the database
First there must be a The DATETIME field records the time,
The format is '2003-7-15 16:50:00'
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;

24: How to remotely connect to Mysql database
There is a host field in the mysql table of adding users, change it to "%", or specify the IP address that allows the connection, so that you can Called remotely.
$link=mysql_connect("192.168.1.80:3306","root","");

25: How to use regular expressions
Special characters in regular expressions

26: After using Apache, garbled characters appear on the homepage
Method 1:
AddDefaultCharset ISO-8859-1 is changed to AddDefaultCharset off
method Two:
AddDefaultCharset GB2312
====================================== ===================
tip:
When you post the code, GB2312 will be interpreted as??????
Changed to This way it won’t
GB2312

10: How to compare the number of days between two dates, (simpler algorithm)

Copy code The code is as follows:

$Date_1="2003-7-15";//It can also be: $Date_1="2003-7-15 23:29:14";
$Date_2="1982-10- 1";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$Days=round(($d1-$d2)/3600/24);
Echo "I have struggled for $Days days^_^";

27: Why do single and double quotes become ('") on the acceptance page?
Solution:
Method 1: Set: magic_quotes_gpc = Off in php.ini
Method 2: $str=stripcslashes($str )

28: How to keep the program running instead of stopping after more than 30 seconds
set_time_limit(60)//The maximum running time is one minute
set_time_limit(0)//Run until the program ends by itself, or Manual stop

29: Calculate the number of people currently online
Example 1: Use text to implement

Copy code The code is as follows:

//First of all, you must have permission to read and write files
//This program can be run directly. If an error is reported for the first time, it can be run later
$online_log = "count.dat"; // Save the file of the number of people,
$timeout = 30; //If there is no action within 30 seconds, it is considered offline
$entries = file($online_log);
$temp = array();

for ($i=0;$i $entry = explode(",",trim($entries[$i]));
if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time())) {
array_push($temp,$entry[0].",".$ entry[1]."n"); //Get the information of other viewers, remove the timeout ones, and save it into $temp
}
}
array_push($temp,getenv('REMOTE_ADDR') .",".(time() + ($timeout))."n"); //Update the viewer's time
$users_online = count($temp); //Calculate the number of people online
$entries = implode("",$temp);
//Write file
$fp = fopen($online_log,"w");
flock($fp,LOCK_EX); //flock() Cannot work properly in NFS and some other network file systems
fputs($fp,$entries);
flock($fp,LOCK_UN);
fclose($fp);
echo " Currently there is ".$users_online."People are online";

Example 2:
Use database to implement online users

30: What is a template and how to use it
I use phplib template
Here are the uses of several functions
$T->Set_File("Define whatever you want ","Template file.tpl");
$T->Set_Block("defined in set_file","","define as you like");
$T->Parse("Defined in Set_Block","",true);
$T->Parse("Output the result as you like"," ");
defined in Set_File sets the loop format to:

How to generate the template Static web page

Copy code The code is as follows:

//The phplib template is used here
 …. .....
............
$tpl->parse("output","html");
$output = $tpl-> get("output");// $output is the entire web page content
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;
}
// Write to file
Wfile($FILE,$output);
header("location:$FILE");//Repeat Directed to the generated web page
}

31: How to use php to interpret the characters
For example: input 2+2*(1+2), automatically output 8
You can use the eval function
Copy the code The code is as follows:



[php]
$str=$ _POST['str'];
eval("$o=$str;");
Echo "$o";

-------------------------------------------------- -----------------------
In addition, you must be particularly careful when using this function!!
What will be the result if someone enters format: d:?

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/328192.htmlTechArticle1: Why can’t I get the variable? I POST data name from one web page to another web page, why is $name output? But can't get any value? In PHP4.2 and later versions, register_global defaults to off. If you want to...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn