タグ『 PHP 』

≒ $_session

未来の自分への教訓(「お前も最初はこんなレベルだったんだぞ」)のために色々書いてるわけですが、恥ずかしいことは自覚してます。

でも恥ずかしいほど教訓になる、と思ってこのブログは書いてます。が。しかし。記憶力の減退が酷くて、「二三日後の自分への教訓」になってる場合がちらほら出てきてます。

今日も自分向けのメモ。

PHPで$_GETとか$_POSTとか、よく考えないで教科書通り大文字で入力してきたけど、やっぱり大文字じゃなきゃ駄目だったことをはっきり実感した。
先日書いたとおり試験勉強(いよいよ今度の日曜日!)の暇を見つけてはちまちまECサイトみたいなの(だってホントには商売できないもん)を作ってるんだけど、やっぱりちゃんとしたサービス作ろうとするとスクリプトを結構な数のファイルに分けて書いていくわけで、その場合、ある程度まとまって処理を記述し終わらないと走らせられないわけで…。

で、ようやくECサイトの会員向け部分の半分と管理画面の30%位出来たので、走らせてみたところエラー。サクラエディタとDWのお陰で入力ミスは無いんだけど、挙動が無茶苦茶。

結局if分岐のかなりの部分でうまくいってないご様子。さらに分岐がうまく行ってても必要な値が渡されていない結果。例えばログイン後画面に「いらっしゃいませさん」とか(本来あいだに名前が入る)。

犯人探しに2時間。犯人は「$_session」。「$_SESSION」じゃないとPHP君にはわからないようです。面白いのはエラーにはならないこと。JSだと未定義変数エラーばっかり見てる気がするときあるけど、そういえばPHPでは見たことないな。
勘違いか。

とにかく、スーパーglobalsの名前は大文字でが正解。小文字の場合静かに誤動作。途中のデバックやって無いから、6~7ファイル書きなおし。といってもサクラで置換だけど。サクラかわいいよサクラ!

≒ PHPスクリプト内でのXML宣言

結構ありふれた問題で、PHPスクリプトでHTML描画するときにXML宣言入れるとエラーになるってのがあるけど、原因は簡単で、「<?xml version=”1.0″ encoding=”UTF-8″?>」(あくまで一例)の「<?  ?>」の部分をPHPのショートハンドタグ「<? ~ ?>」と勘違いしてしまうから。
勘違いというより同じものだからしょうがない。規格作った人達のミスだと思う。

で、対処法は

  1. php.iniで「short_open_tag = Off」に設定する。
  2. スクリプト内で、スクリプトを使ってxml宣言を出力する。(例えば「echo ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;」)

の二つ(のうちどちらか)。かんたーん。①は以後PHPスクリプトで「<? ?>」ってタグの書き方が使えなくなる。僕は元々使ってないので問題なし。余談だけど、僕ぐらいの初心者レベルプログラマがあんまり省略ばっかり覚えてもしょうがないと思ってやってる。何より省略してなくても後で見返して自分で書いたものの意味が分からなくなることが多いんだから、省略なんてしてる場合じゃないよね!昨日のDB消去の件もはっきりわかる名前をテーブルにつけてれば避けられたんだよ!俺の馬鹿!
②がお手軽。昔からPHP走らせてる環境で動かす場合、ショートハンド禁止になってない場合多いだろうから。でも何か気持ち悪いのも確か。W3C先生を騙してるような感じ。

この問題は前にちょっとはまって、②の解決法でやってきてたんだけど、今日はまったのはここじゃない。いつも通りecho~でxml宣言してたら

line 2 column 1 – 警告: removing whitespace preceding XML Declaration

ってvalidaterに怒られた。ソース見たら確かに一行空白がある。何をどう動かしても消えない。①の対処法にも変えてみた。駄目。
一通りググってみたら、requireしているものが勝手に改行入れてる場合がある模様。で、あっちやりこっちやりしてたら、関数だけ切り出したファイルが悪さしてた。
ヘッダ部分のあとに関数ファイルをrequireしたら解決。僕は使ったことないけど、smarty使ってると同じ事になるとのこと。今回はヘッダ部分の後に移すことができたけど、そうできない場合もありそうです。ちゃんと覚えとこう、と自分向けのメモ。

さらに余談だけど、職業訓練では「xml宣言は付けなくて大丈夫。付けると誤動作する」って教えてる。良いのかな?
というより、地方都市のweb制作現場なんてこんな感じなんだろうな、と思う。そこに仲間入りしたくて勉強しているわけなんだけれども。

≒ 学習の記録(PHP)

今日は職業訓練が一日自習だったので勉強が大分捗った。web構築スキルの「勉強」ってのも変な話だけど、本をじっくり読んで「勉強する」ってことは今しかできないかなって思ってるのと、資格試験が近いため「勉強」してるんです。ええ、あの悪評高い「ウェブデザイン技能検定」受けます。ええ。2級です。すみません。この話はまたの機会に。

というわけで時間が出来たので皆さんお待ちかねの学習の記録第二弾。PHP(地獄)編です。ええ、分かってます。誰も見てません。アクセスログ見てますから。

ノン・プログラマのためのPHP入門 10日間コース

JS編で書いたとおり、PHPの学習にはすごく苦労してます。この本に最初に取りかかったのは「持ってたから」。去年前職がちょっと暇だったときに少しでも勉強しようかと思い買いました。けど積ん読。「ノンプログラマ」とはありますが、「素人向け」という内容ではないよう。(僕ちょっと疲れてるのかな)。webデザイナーなど、「触れたことはある」程度の知識は事前に必要ではないかと思います。はい言い訳です。で、用語の分からないものが多く、3章で挫折。ただし、この本にものすごく感謝してるのはXamppの導入を助けてくれたこと。おかげさまで最初の学習環境を整えることに労力をとられないで済みました。僕の場合は本の通りやって一発で上手く行きました。まぁ後で人並みに苦労はするんですが。

初めてのPHP5

次はこれ。迷いに迷ってこれを買いました。JS編で触れた『初めてのJavaScript 第2版』より先に始めて6章で挫折。詳細な説明で勉強の充実感はあるんですが、知らない言葉が多すぎて本当に頭がパンクしそうになりました。1ページ/日がデフォになってきたんで一旦撤退しました。

基礎からのMySQL

ネットで(泣きながら)探しまくって、藁にもすがる思いで次に買ったのがこの本。どこでも絶賛されてる感じなのですが、僕にもこの本はよく理解できました。というかこの本で駄目ならサーバサイドは一旦諦めようと思って始めたので、西沢先生(勝手に呼ばせてもらってます。)には足を向けて寝られません。2章の扉に書かれてらっしゃる「必ず成功する秘訣」を何回も読み返しながら勉強しました。で、嬉しくて調子に乗って掲示板を公開してます。理解し易くて読んでて気持ちが良いので暇があれば読み返してますが、やっぱり分かってない部分も多くてまだまだお世話になりそうです。

以上が勉強のために買った本です。今は『初めてのPHP5』に再挑戦中。今日は9章がようやく終わりました。頭痛が酷い。2度目の挫折間近。明後日から一旦『独習PHP 第2版』に行く予定です。

他にも評判が良かったので『PHPによるWebアプリケーションスーパーサンプル 第2版』も買いました。でも今の僕のレベルでは意味が分からなすぎてただのカーゴカルトコーディング(こんな言葉あったのね)になっちゃうんで、眺めるだけに止めてます。もう少し理解が進んだらもう「勉強」ではなくて「実習」を始めるつもりなんで、その時は大活躍してくれそうです。いつのことやら。

以上、PHP編でした。JSの方は順調に『JS5』に進んでいて今日は5章まで進みました。意外に分かり易いです。