Hoy les daré un resumen de los dolores de cabeza para los principiantes en PHP. Las 14 preguntas planteadas a continuación esperan ser útiles para los principiantes en PHP.
1. Las variables
get, post y session no se pueden transferir entre páginas. En la última versión de PHP, las variables globales automáticas están desactivadas, por lo que para obtener las variables enviadas de la página anterior, use $_GET['foo'], $_POST. [ 'foo'],$_SESSION['foo'] para obtener. Por supuesto, también puede modificar las variables globales automáticas para que estén activadas (php.ini se cambia a Register_globals = On), considerando la compatibilidad, es mejor esforzarse por familiarizarse con el nuevo método de escritura.
2. Cuando Apache2 usa el método get para pasar parámetros chinos en Win32, se producirá un error
Test.php?a=Hello&b=Hello.
Pasar parámetros provocará un error interno
. (Hola)."&b=".urlencode (de nada)
...
3. La sesión en win32 no funciona correctamente.
El valor predeterminado de php.ini es session.save_path = /tmp.
Esta es obviamente la configuración en PHP de Linux. en win32 No se puede leer ni escribir el archivo de sesión, lo que hace que la sesión quede inutilizable
. Simplemente cámbielo a una ruta absoluta, por ejemplo, session.save_path = c:windowstemp
4. Muestra información de error
cuando display_errors = On y. error_reporting = E_ALL en php.ini. Se mostrarán todos los errores y mensajes. Es mejor activarlo durante la depuración para corregir errores. Si utiliza el método de escritura PHP anterior, la mayoría de los mensajes de error serán sobre variables indefinidas. Habrá un mensaje cuando se llame a una variable antes de que se le asigne un valor. La solución es detectarla o protegerla.
Por ejemplo, para mostrar $foo, puede if(isset($foo)) echo $foo o echo @$foo
5. Mail() no puede enviar correos electrónicos en Win32
. Sendmail configurado en Linux puede enviar. llame al servidor smtp Para enviar correos electrónicos, modifique el SMTP de php.ini = ip //ip es un servidor SMTP sin función de verificación (difícil de encontrar en Internet. La mejor solución para enviar correos electrónicos en PHP es usar socket para). enviar directamente al servidor de correo electrónico de la otra parte en lugar del servidor de reenvío.
6. Si la contraseña no está configurada para la instalación inicial de mysql, debe usar
update mysql.user set password="yourpassword" donde usuario="root"
para cambiar la contraseña
7.
El encabezado de error ya enviado generalmente ocurre cuando
.use HEADER. Puede haber varias razones: 1. Usted hace PRING o ECHO antes de usar HEADER 2. Hay una línea en blanco delante de su archivo actual 3. Es posible que haya INCLUIDO un archivo y hay una línea en blanco al final de. el archivo o este error ocurrirá en la salida.
8. Si no hay cambios después de cambiar php.ini,
reinicie el servidor web, como IIS, Apache, etc., y luego se aplicará la configuración más reciente.
9. PHP está instalado en 2003 (el método de instalación de ISAPI es
.solicitado por expertos para obtener asesoramiento).
El php4isapi.dll de PHP4 parece tener algún conflicto con 2003 y solo se puede instalar en modo CGI:
Paso 1, primero descargue un programa de instalación en www.php.net , lo instalé. : php-4.2.3-installer.exe, también puede encontrar la última versión, asegúrese de que su IIS6.0 esté iniciado y sea accesible antes de instalar php-4.2.3-installer.exe. Después de la instalación, vaya al sitio web predeterminado-->Configuración de la aplicación;
Paso 2: haga clic en extensión del servicio web-->Nueva extensión del servicio web
Paso 3: Extensión-->php, y luego agregue
Paso 4: busque php.exe; la ruta;
Paso 5: Simplemente confirme.
Paso 6: Seleccione la extensión del servicio PHP y haga clic en Permitir.
10. A veces la declaración SQL no funciona.
La forma más sencilla de depurar el error de operación de la base de datos es repetir la oración SQL y ver si se puede obtener el valor de la variable.
11. La diferencia entre incluir y requerir.
No hay mucha diferencia entre los dos. Si el archivo que se va a incluir no existe, incluya un aviso y luego continúe ejecutando la siguiente instrucción. Según mis pruebas, ambos están bajo la plataforma win32. Se incluye primero y luego se ejecuta, por lo que es mejor no tener declaraciones include o require en los archivos incluidos, lo que causará confusión en el directorio. Quizás la situación sea diferente en *nux. Aún no se ha probado.
Si un archivo no desea incluirse varias veces, puede usar include_once o require_once## para leer y escribir datos del documento:
función r($nombre_archivo) {
$filenum=@fopen($file_name,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name ));
@fclose($filenum);
devolver $archivo_datos;
}
función w($nombre_archivo,$datos,$método="w"){
$filenum=@fopen($nombre_archivo,$método );
rebaño($filenum,LOCK_EX);
$file_data=fwrite($filenum,$datos);
fclose($filenum);
devolver $archivo_datos;
}
www.devdao.com
12. La diferencia entre isset() y vacío() es
que ambos se utilizan para probar variables.
Pero isset() prueba si a una variable se le ha asignado un valor, y vacía() prueba si una variable a la que se le ha asignado un valor está vacía. Si se hace referencia a una variable en PHP sin que se le asigne un valor, está permitido, pero habrá un aviso. Si a una variable se le asigna un valor nulo, $foo="" o $foo=0 o $foo=false, entonces vacío($foo) devuelve verdadero e isset($foo) también devuelve verdadero, lo que significa que asignar un valor nulo no cerrar sesión.
Para cancelar el registro de una variable, utilice unset($foo) o $foo=NULL.
13. La declaración de consulta de MySQL contiene palabras clave.
Cuando PHP consulta MySQL, a veces el nombre de la tabla o el nombre de la columna de MySQL contiene palabras clave. Habrá errores en la consulta en este momento. Por ejemplo, si el nombre de la tabla es orden, se producirá un error durante la consulta. La forma más sencilla es agregar "[arriba de la tecla de tabulación] al nombre de la tabla o de la columna en la declaración SQL para distinguirlo,
como seleccionar * de "orden".
14. Hay dos formas de cargar varios archivos a la vez a través del protocolo HTTP
, que son dos implementaciones del mismo método. Los procedimientos específicos deben ser diseñados por usted mismo:
1. Configure varios cuadros de entrada de archivos en el formulario y asígneles nombres con matrices, de la siguiente manera:
<formulario acción="" método=publicación>
<tipo de entrada=nombre de archivo=usararchivo[]>
<tipo de entrada=nombre de archivo=usararchivo[]>
<tipo de entrada=nombre de archivo=usararchivo[]>
</formulario>
De esta manera, haga la siguiente prueba en el lado del servidor.
eco "<pre>";
print_r($_FILES);
eco "</pre>";
2. Configure varios cuadros de entrada de archivos en el formulario, pero con nombres diferentes, de la siguiente manera:
<formulario acción="" método=post>
<tipo de entrada=nombre de archivo=usefile_a>
<tipo de entrada=nombre de archivo=usefile_b>
<tipo de entrada=nombre de archivo=usefile_c>
</formulario>
Haga la misma prueba en el lado del servidor:
eco "<pre>";
print_r($_FILES);
eco "</pre>";