Jag vet inte vilka böcker som är bra. Har inte läst någon PHP-bok sedan jag började med PHP för snart två år sedan.
Som ett råd när det gäller böcker vill jag dock säga att man bör köpa någon som är reviderad under senaste året, eller något sådant.
Anledningen till det är att det har hänt mycket med PHP under de senaste åren. En viktig sak är att man ur säkerhetssynpunkt har satt register_globals till Off som default. De flesta webbhotell har register_globals satt till On för att äldre skript ska fungera, men kodar man så det funkar med Off så funkar det även med On, så behåll du Off på din utvecklingsserver.
För bakåtkompabiliteten skull är det tillåtet i PHP att använda variabler utan att de är initierade. Dock resulterar detta användande i en notis för att man ska uppmärksammas på att så här bör man inte koda.
De flesta, åtminstone seriösa, webbhotell har visning av notiser och varningar bortkopplat eftersom felmeddelanden kan ge information till någon som försöker hacka servern, men när du kör lokalt på din utvecklingsmaskin bör du ha visning av notiser och varningar påkopplat, eftersom dessa även ger information om fel som kan bero på annat.
Om du har en äldre bok så är det några saker du kan göra med skripten.
Kommer en variabel från formulär, länk, cookie eller session så byter du ut $variabel mot $_POST['variabel'], $_GET['variabel'], $_COOKIE['variabel'] eller $_SESSION['variabel']. Sessioner är här en liten historia i sig själv, ska du pyssla med det så sök på forumet så kan du få en hel del information.
Använder skriptet servervariabler typ $PHP_SELF så skriver man $_SERVER['PHP_SELF'].
Du kan läsa mer om dessa variabler här: http://se.php.net/manual/en/language.variables.predefined.php
Ibland används en variabel från ett formulär på samma sida som formuläret, t.ex echo $namn, men man har inte postat något än. Då kommer du att få "undefined variable". Åtgärden är då att använda isset (engelska, is set = är satt). T.ex
if (isset($_POST['namn'])) echo $_POST['namn'];
Ibland används en automatisk tilldelning till samma variabel i en slinga. T.ex något på det här hållet:
while (..villkor..) {
$variabel .= "Något värde";
}
Första gången variabeln används så finns den inte, och därför rapporterar en notis att man försöker lägga till något till en variabel som inte finns. Åtgärden är enkel. Initera variabel först:
$variabel = "";
while (..villkor..) {
$variabel .= "Något värde";
}
Det här borde ta dig en bit genom en äldre bok. Sedan rekommenderar jag att om du kör windows så bör du ladda ner manualen i chm-format. Hämtar du den här: http://weblabor.hu/php-doc-chm/ så får du även med användarnoteringarna där det finns mycket guld att hämta.
Jobba på och återkom när du har frågor. :)