PHP 초보자 실수 세트
개발을 위해 모든 오류 프롬프트를 활성화하십시오: error_reporting = E_ALL | E_STRICT
오류 프롬프트를 차단하는 것은 귀를 숨기고 종을 훔치는 것과 같습니다.
표준화된 방식으로 코드를 작성하면 오류가 절반으로 줄어듭니다.
1: 왜 변수를 가져올 수 없나요?
한 웹 페이지에서 다른 웹 페이지로 데이터 이름을 게시했는데 $name을 출력할 때 왜 값을 얻을 수 없나요? 방법 2: extract($_POST);extract($_GET); (extract($_SESSION) 앞에 Session_Start()가 있어야 함)를 수신 웹 페이지 앞에 놓습니다.
//extract ( array $var_array [, int $extract_type [, string $prefix ]] )
//이 함수는 배열의 변수를 현재 기호 테이블로 가져오는 데 사용됩니다. 연관 배열 var_array를 인수로 받아들이고 //name 키를 변수 이름으로, 값을 변수 값으로 사용합니다. 각 키/값 쌍에 대해 //extract_type 및 prefix 매개변수의 영향을 받는 변수가 현재 기호 테이블에 생성됩니다.
//import_request_variables (string $types [, string $prefix])는 매우 전역적이며 $_ $*에 허점이 있습니다.
방법 3: 변수를 하나씩 읽기 $a=$_GET["a "];$b=$_POST["b"] 등 이 방법은 번거롭지만 더 안전합니다.
2: 프로그램 디버깅
What을 실행할 때 알아야 할 사항 변수의 값입니다. 이것이 제가 한 일입니다. 다음 내용으로 debug.php 파일을 만듭니다.
PHP 코드:------------------------- ------------------------------------- ------
코드 복사
Ob_Start();
Session_Start();
Echo "
";<br> Echo "이걸 타세요 page _GET 변수는 다음과 같습니다. ";<br> Print_R($_GET);<br> Echo "이 페이지에서 얻은 _POST 변수는 다음과 같습니다.";<br> Print_R($_POST);<br> Echo "이 페이지는 다음과 같습니다. 획득한 _COOKIE 변수는 다음과 같습니다: ";<br> Print_R($_COOKIE);<br> Echo "이 페이지에서 획득한 _SESSION 변수는 다음과 같습니다: ";<br> Print_R($_SESSION);<br> Echo "</ 사전>";<br><br><br><br>---------------------- ------------------------------------- <br><br>그런 다음 php.ini에 include_path = "c:/php"를 설정하고 이 폴더에 debug.php를 넣으세요. <br> 앞으로 모든 웹 페이지에 이 파일을 포함시키고 얻은 변수 이름을 확인할 수 있습니다. 및 값.<br><br>3: 세션 사용 방법<br><br>세션과 관련된 모든 것은 먼저 session_start() 함수를 호출해야 합니다.<br><br>세션에 대한 값을 지불하는 것은 매우 간단합니다. 예:<br><br><br>PHP 코드:---------------------- ----- --------------<br><br> php4.2 이후에는 세션 비용을 직접 지불할 수 있습니다: <br><br>PHP 코드:------------ ------- --------------<br> <br>[php]<br>Session_Start();<br>$_SESSION["name"]="value";<br>[/php]<br><br>--------- - ------------------------------------------------- - ---------<br><br>다음과 같이 세션을 취소하세요.<br><br>PHP 코드:--------- - ------------------------------------------------- - ----------<br><br>[php]<br>session_start();<br>session_unset();<br> session_destroy( );<br>[/php]<br><br>-------------------- - ------------------------------------------------<br><br><br>php4.2 이상에서는 특정 세션 변수를 취소할 때 BUG가 있습니다.<br><br><br><br>참고:<br><br>1: 있을 수 없습니다. Session_Start() 를 호출하기 전의 모든 출력. 예를 들어 다음은 잘못되었습니다.<br>=============================== =========== ==<br>1줄<br>2줄 [php]<br>3줄 Session_Start();//이미 첫 줄에 출력이 있었습니다<br>4 줄....<br>5줄[ /php]<br>================================= =========<br><br><br>팁 1:<br><br>".....헤더가 이미 전송되었습니다....."가 나타날 때마다 Session_Start() 출력 정보 이전에 브라우저에 메시지를 보냅니다.<br>출력을 제거하면 정상입니다. (이 오류는 COOKIE에서도 발생하며 오류 원인은 동일합니다.)<br><br>Tip 2:<br><br>Session_Start()가 루프 문에 배치되어 이전에 브라우저에 정보가 출력된 위치를 확인하기 어려운 경우 다음 방법을 사용할 수 있습니다. <br>1줄 [php ] Ob_Start(); [/php]<br>.....여기 있습니다 프로그램...<br><br><br><br>2: 오류가 무엇인가요<br><br>경고 : session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) failed:... .<br>세션 파일의 저장 경로를 지정하지 않았기 때문입니다.<br><br>해결 방법: <br>(1) C 드라이브의 tmp 폴더<br>(2) php.ini를 열고 session.save_path= "c:/tmp"로 수정된 save_path를 찾습니다<br><br><br><br>4: 이유 변수를 다른 웹페이지로 옮기면 전반부만 가져오고 공백으로 시작하는 변수는 모두 손실됩니다. <br><br><br>PHP 코드:------------ ----------------------------- -------- --------<br><br>[php ]<br>$Var="hello php";//$Var="hello로 변경 php"; 결과를 얻으려고 노력하세요<br>$post= "receive.php?Name=".$Var;<br>헤더("location:$post");<br>[/php]<br><br>--------- ------------------------------------- --------<br><br>receive.php 내용:<br><br>PHP 코드:--------- - ------------------------------------------------- - ----------------------<br><br>[php]<br>Echo "<pre class="brush:php;toolbar:false">";<br>Echo $_GET[" 이름"];<br>에코 "";
[/php]
---------------------- ------------------------------------- ----------
올바른 방법은 다음과 같습니다.
PHP 코드:----------------- - ------------------------------------------------- - ------------
[php]
$Var="hello php";
$post= "receive.php?Name=".urlencode( $ Var);
header("location:$post");
[/php]
------ - ------------------------------------------------- - ---------
수신 페이지에서는 Urldecode()를 사용할 필요가 없으며 변수가 자동으로 인코딩됩니다.
5: 지정된 길이의 한자를 가로채는 방법 "[/php]"로 끝나지 않고, 남는 부분은 "..."로 대체됩니다.
일반적으로 변수는 가로채려면 먼저 필드 길이가 충분한지 확인해야 합니다. 일반적으로 char(200)는 구두점을 포함하여 100자를 수용할 수 있습니다.
PHP 코드: ----- ------------------ -------------------------------- ----- -------
[php]
$str="글자가 너무 길어요^_^ ";
$Short_Str=showShort($str,4);// 처음 4개의 한자를 가로채서 결과는 다음과 같습니다.
Echo "$Short_Str";
함수 csubstr($ str,$start,$len)
{
$strlen=strlen( $str);
$clen=0;
for($i=0;$i<$strlen;$i++ ,$clen++)
{
if ($clen>=$start+$ len)
break;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr .=substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.= substr($str,$i,1);
}
}
return $tmpstr;
}
함수 showShort($str,$len)
{
$tempstr = csubstr($str,0,$len);
if ($str<>$tempstr)
$tempstr .= "..."; //끝낼 내용, 수정은 여기서 하시면 됩니다.
return $tempstr;
}
--- --------- --------------- ---------------------- ----
6: SQL 문 표준화
오용되지 않도록 테이블과 필드 앞에 "`"를 추가하세요. 키워드로 인해 오류가 발생합니다.
당연히 키워드 사용을 권장하지 않습니다.
예를 들어
$Sql="INSERT INTO `xltxlm` (`author`, `title`, `id` , `content`, `date`) VALUES ('xltxlm', 'use`', 1, 'criterion your sql string ', '2003-07-11 00:00:00')"
" `"입력방법은? TAB키로.
7: Html 방지방법 /PHP 형식 문자열은 해석되지 않지만
PHP 코드는 그대로 표시됩니다.------------------------- ------------ ------------ ---------
[php]
$str="