Hari ini saya akan memberikan ringkasan sakit kepala bagi pemula PHP. 14 pertanyaan yang diajukan di bawah ini semoga dapat membantu bagi pemula PHP.
1. Variabel
get, post, dan session tidak dapat ditransfer antar halaman. Pada versi PHP terbaru, variabel global otomatis dinonaktifkan, jadi untuk mendapatkan variabel yang dikirimkan dari halaman sebelumnya, gunakan $_GET['foo'], $_POST [ 'foo'],$_SESSION['foo'] untuk mendapatkan. Tentu saja, Anda juga dapat mengubah variabel global otomatis menjadi aktif (php.ini diubah menjadi register_globals = On);
2. Ketika Apache2 menggunakan metode get untuk meneruskan parameter berbahasa Mandarin di bawah Win32, kesalahan akan terjadi.
Test.php
?a=Hello&b=Hello.
Melewati parameter akan menyebabkan kesalahan internal
(Halo )."&b=".urlencode (sama-sama)
...
3. Sesi di bawah win32 tidak berfungsi dengan baik.
php.ini defaultnya adalah session.save_path = /tmp.
Ini jelas merupakan konfigurasi di Linux PHP
di bawah win32 Tidak dapat membaca danmenulis
file sesi, menyebabkan sesi tidak dapat digunakan
. Ubah saja ke jalur absolut, misalnya session.save_path = c:windowstemp
4. Tampilkan informasi kesalahan
error_reporting = E_ALL di php.ini, Semua kesalahan dan petunjuk akan ditampilkan. Yang terbaik adalah mengaktifkannya saat debugging untuk koreksi kesalahan. Akan ada prompt ketika suatu variabel dipanggil sebelum diberi nilai. Solusinya adalah dengan mendeteksi atau melindunginya.
Misalnya, untuk menampilkan $foo, Anda dapat if(isset($foo)) echo $foo atau echo @$foo
5. Mail() tidak dapat mengirim email di bawah Win32
. Sendmail yang dikonfigurasi di Linux dapat mengirim panggil server smtp. Untuk mengirim email, ubah SMTP php.ini = ip //ip adalah server SMTP tanpa fungsi verifikasi (sulit ditemukan di Internet). kirim langsung ke server email pihak lain alih-alih server penerusan.
6. Jika kata sandi tidak disetel untuk instalasi awal mysql, Anda harus menggunakan
update mysql.user set password="yourpassword" di mana user="root"
untuk mengubah kata sandi
7.
Header kesalahan yang sudah dikirim biasanya terjadi ketika Anda gunakan HEADER. Dia mungkin Ada beberapa alasan: 1. Anda PRING atau ECHO sebelum menggunakan HEADER 2. Ada baris kosong di depan file Anda saat ini 3. Anda mungkin sudah MENYERTAKAN file dan ada baris kosong di akhir file atau kesalahan ini akan terjadi pada output.
8. Jika tidak ada perubahan setelah mengubah php.ini,
restart web server seperti IIS, Apache, dll, lalu setting terbaru akan diterapkan.
9. PHP diinstal pada tahun 2003 (metode instalasi ISAPI adalah diminta oleh para ahli untuk meminta nasihat).
Php4isapi.dll dari PHP4 tampaknya Ada beberapa konflik dengan tahun 2003, dan hanya dapat diinstal dalam mode CGI:
Langkah 1, pertama unduh program instalasi di bawah www.php.net , saya menginstal : php-4.2.3-installer.exe, Anda juga dapat menemukan versi terbaru, pastikan IIS6.0 Anda dimulai dan dapat diakses sebelum menginstal php-4.2.3-installer.exe. Setelah instalasi, buka situs web default-->Konfigurasi aplikasi;
Langkah 2: Klik ekstensi layanan web-->
Ekstensi layanan web baru;
Langkah 3: Ekstensi-->php, lalu tambahkan;
jalurnya;
Langkah 5: Konfirmasikan saja;
Langkah 6: Pilih ekstensi layanan PHP dan klik Izinkan.
10. Terkadang pernyataan sql tidak berfungsi.
Cara termudah untuk men-debug kegagalan operasi database adalah dengan mengulangi kalimat sql dan melihat apakah nilai variabel dapat diperoleh.
11. Perbedaan antara include dan require.
Tidak ada banyak perbedaan di antara keduanya. Jika file yang akan dimasukkan tidak ada, masukkan pemberitahuan prompt, dan kemudian lanjutkan menjalankan pernyataan berikut require prompt kesalahan fatal dan keluar Sesuai untuk pengujian saya, keduanya berada di bawah platform win32. Ini disertakan terlebih dahulu dan kemudian dieksekusi, jadi yang terbaik adalah tidak menyertakan atau memerlukan pernyataan dalam file yang disertakan, yang akan menyebabkan kebingungan direktori. Mungkin situasinya berbeda di *nux. Ini belum diuji.
Jika file tidak ingin dimasukkan beberapa kali, Anda dapat menggunakan include_once atau require_once## untuk membaca dan menulis data dokumen:
fungsi r($nama_file) {
$filenum=@fopen($file_name,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,ukuranfile($nama_file ));
@fclose($filenum);
kembalikan $file_data;
}
fungsi w($nama_file,$data,$metode="w"){
$filenum=@fopen($nama_file,$metode );
kawanan($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
kembalikan $file_data;
}
www.devdao.com
12. Perbedaan antara isset() dan blank() adalah
keduanya digunakan untuk menguji variabel.
Tapi isset() menguji apakah suatu variabel telah diberi nilai, dan kosong() menguji apakah variabel yang diberi nilai kosong. Jika suatu variabel direferensikan dalam PHP tanpa diberi nilai, maka diperbolehkan, tetapi akan ada prompt pemberitahuan. Jika suatu variabel diberi nilai null, $foo="" atau $foo=0 atau $foo=false, maka kosong($foo) mengembalikan nilai benar dan isset($foo) juga mengembalikan nilai benar, yang berarti menetapkan nilai nol akan tidak keluar.
Untuk membatalkan pendaftaran variabel, gunakan unset($foo) atau $foo=NULL.
13. Pernyataan query mysql berisi kata kunci.
Ketika php menanyakan mysql, terkadang nama tabel mysql atau nama kolom berisi kata kunci. Akan ada kesalahan dalam kueri saat ini. Misalnya, jika nama tabelnya berurutan, kesalahan akan terjadi saat kueri. Cara sederhananya adalah dengan menambahkan `[di atas tombol tab] ke nama tabel atau nama kolom dalam pernyataan SQL untuk membedakannya,
seperti pilih * dari `pesanan`.
14. Ada dua cara untuk mengunggah banyak file sekaligus melalui protokol HTTP
, yang merupakan dua implementasi dari metode yang sama. Prosedur khusus perlu dirancang sendiri:
1. Siapkan beberapa kotak input file dalam formulir dan beri nama dengan array, sebagai berikut:
<bentuk tindakan="" metode=posting>
<tipe masukan=nama file=usefile[]>
<tipe masukan=nama file=usefile[]>
<tipe masukan=nama file=usefile[]>
</bentuk>
Dengan cara ini, lakukan tes berikut di sisi server
gema "<sebelum>";
print_r($_FILES);
gema "</pre>";
2. Atur beberapa kotak input file dalam form, tetapi dengan nama berbeda, sebagai berikut:
<form action="" method=post>
<tipe masukan=nama file=usefile_a>
<tipe masukan=nama file=usefile_b>
<tipe masukan=nama file=usefile_c>
</bentuk>
Lakukan tes yang sama di sisi server:
gema "<sebelum>";
print_r($_FILES);
gema "</pre>";