くだすれPHP(超初心者用)3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/25(木) 16:04:31ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
---前スレのテンプレここまで---
前スレ: くだすれPHP(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1164617202/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1187729623/
完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0002nobodyさん
2007/10/25(木) 16:05:30ID:???PHPプロ!PHP講座
ttp://www.phppro.jp/school/phpschool/
では、ドゾー
0003nobodyさん
2007/10/26(金) 01:14:43ID:???ほかに無料Webスペースで使えるスクリプト言語が少ないっていう程度
Perlよりわかりやすい言語っていう程度
変な言語仕様だ
即死回避
0004nobodyさん
2007/10/26(金) 01:15:22ID:???0005nobodyさん
2007/10/27(土) 00:52:57ID:???0006nobodyさん
2007/10/29(月) 21:43:11ID:???function hoge(){
$a = array("X", "Y");
return($a);
}
戻り値の 配列の要素にアクセスする場合に、戻り値を一旦変数に入れるのではなく直接参照することは出来ませんでしょうか。
$r = hoge();
print($r[0]);
hoge()[0] //<-- こんなようなこと出来ない?
0007nobodyさん
2007/10/29(月) 22:06:52ID:???0008nobodyさん
2007/10/29(月) 22:51:03ID:???0009nobodyさん
2007/10/29(月) 23:26:14ID:???0010nobodyさん
2007/10/30(火) 01:25:10ID:???0011nobodyさん
2007/10/31(水) 06:13:37ID:???Submitボタンを押すと入力した内容が含まれたtxtファイルのダウンロードが始まる
というようなサイトを作りたいのですがphpで可能ですか?
当り前っちゃ当り前なのかもですがprint関数で試してもファイルを保存ではなく
中身がブラウザに表示されてしまいそれを手動で保存してもらわないといけないので
そこをなんとかしたいです。
0012nobodyさん
2007/10/31(水) 06:35:32ID:???http://jp2.php.net/header
0014nobodyさん
2007/11/01(木) 18:50:02ID:???画像の左右5pxに黒い背景をつけたいのですが
どのようにすればいいのでしょうか?
黒の画像と合成してみましたが画像の端が消えてしまいました。
0015nobodyさん
2007/11/01(木) 19:12:21ID:???0016nobodyさん
2007/11/02(金) 12:05:48ID:???指定したタグをそのまま残して他はhtmlspecialcharsみたいに
そのまま表示をしたい。
そんな関数ある?
0018nobodyさん
2007/11/03(土) 11:41:40ID:???例えば「☆」だと化けませんが「☆あ」だと「?#63908;」みたいに化けます。
なぜですか。
0019nobodyさん
2007/11/03(土) 13:38:29ID:???0020nobodyさん
2007/11/03(土) 16:38:34ID:GrGF3a3n0021nobodyさん
2007/11/03(土) 18:39:13ID:???gattai(Human ore, Human anata) {
return ore.gattai(anata);
}
みたいな?
こういうことやるためには
HumanクラスにgetTypeメソッド
public function getType() {
return "Human";
}
を実装
function gattai($ore, $anata) {
if(is_Human($ore) && is_Human($anata)) {
return $ore->gattai($anata);
} else {
throw Exception();
}
}
function is_Human($human) {
return $human->getType() == "Human" ? true : false;
}
とでもしないと駄目なんかね。
0022nobodyさん
2007/11/03(土) 18:51:02ID:EkQ97k6rメールフォームを作ったんですが、なぜか入力確認画面の表示のところでparser errorが出てしまいます。
# エラーが出ているところ
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
# それより上の部分
function check_html(){
global $homeurl,$title;
if(NAME_FLG){
$name_chk = MARK;
}
if(EMAIL_FLG){
$email_chk = MARK;
}
if(COMMENT_FLG){
$comment_chk = MARK;
}
if($_POST['copy'] == "on"){
$copy_flg = "E-mailで受信する";
}else{
$copy_flg = "E-mailで受信しない";
}
?>
<?php echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
以上ですよろしくお願いします。
0024nobodyさん
2007/11/03(土) 18:55:29ID:???0025nobodyさん
2007/11/03(土) 18:58:57ID:UiuKYuS+デザインとロジックを分けて作ってあるのですが
デザインのhtmlファイル内の各所に
{rval hr} とか index.php?{rval param} のように
{rval --} とあります。
htmlファイル内にphpを埋め込む際は下記のような記述が基本だと思っていたのですが、くくられていなかったりaltタグの中に入っていたりします。これはどういうことでしょうか?
<?php
?>
0026nobodyさん
2007/11/03(土) 19:05:47ID:???まぁ自力でも置換できるけど
0027nobodyさん
2007/11/03(土) 19:06:47ID:EzkHevL1【PHP】下らねぇ質問はここに書き込みやがれ 58 立ててくる。
0028nobodyさん
2007/11/03(土) 19:11:31ID:???0029nobodyさん
2007/11/03(土) 19:15:50ID:???「下らねぇ〜」がない間、ここに居候させてもらってた皆さんは移動。
【PHP】下らねぇ質問はここに書き込みやがれ 58
http://pc11.2ch.net/test/read.cgi/php/1194084457/
0030nobodyさん
2007/11/03(土) 19:18:03ID:???まったく同じように機能するわけじゃないけどね
http://jp2.php.net/language.oop5.typehinting
0032超初心者
2007/11/05(月) 18:43:22ID:s8UgZp9yカウンターを造るところで一つ疑問点が
<?php
$fp = fopen("count.txt", "r+");
$iCount = fgets($fp, 64);
flock($fp, 2);
fseek($fp, 0);
$iCount++;
fputs($fp, $iCount);
fclose($fp);
print $iCount;
?>
だとカウントがあがらない
$iCount++;を$iCount = $iCount + 1;にするとカウントがあがります。
$iCount++;が効かないのかと思いましたが
違うスクリプトで
<?php
$filename = "count.dat";
$file = fopen($filename, "r+");
flock($file,2);
$count = fread($file, filesize($filename));
$count++;
print "$count";
rewind($file);
fwrite($file, $count);
flock($file,3);
fclose($file);
?>
これだとカウントが上がります
どなたか説明していただけないでしょうか
0034nobodyさん
2007/11/05(月) 18:57:07ID:???$iCount++; の動作がおかしいと思ったら、その前後で変数を調べてみればいい
おそらく $iCount に余計なスペースが含まれているのが原因
$i = "1 "; の場合、$i++ ではカウントアップしないが、$i = $i+1; では増加する
あと、flockのタイミングに問題があるのでファイルロックについても一般的なお勉強が必要と思う
0035超初心者
2007/11/05(月) 19:13:14ID:Sif87GT6やっぱり家のは上がらないです。
0036nobodyさん
2007/11/05(月) 19:14:52ID:???0037nobodyさん
2007/11/05(月) 19:18:07ID:???0038nobodyさん
2007/11/05(月) 19:21:01ID:???原因は>>34と似たようなもんだったけど。
同じソースのはずなのにどこの違いで
みんなの結果が違うのかが気になる。
0039nobodyさん
2007/11/05(月) 19:39:54ID:???0041超初心者
2007/11/06(火) 16:36:17ID:blXO/asx<?php
$fp = fopen("count.txt", "r+");
$iCount = fgets($fp, 64);
flock($fp, 2);
fseek($fp, 0);
$iCount++;
fputs($fp, $iCount);
fclose($fp);
print $iCount;
?>
count.txtを変数化しました。$db
そして$iCount=fgets($fp,filesize($db));
にしたらカウントが上がりました。
php5です
0042nobodyさん
2007/11/06(火) 17:01:40ID:???0043nobodyさん
2007/11/06(火) 18:33:16ID:???34氏と40氏のレスが全てだと思う
インクリメント演算子は数値型(intその他)の他に文字型(string)に対しても
有効なんだけど、NULL、boolean以外にコントロールコードを含む文字列に
対しては無効。
だから、PHPスクリプトに読ませるファイルのデータにも注意しないとね。
例えば初期値0を書き込んだファイルの16進ダンプを取った時に
30
のみ書かれている場合は良いけど、その後ろにCR+LFやLFが付いている
30 0d 0a 又は 30 0a
などのデータは余分なコントロールコードを排除しないかぎり
そのままではインクリメント演算子で加算はできないよ。
0044nobodyさん
2007/11/07(水) 12:10:07ID:???(またはその逆のケース)って、どういう場合が考えられますか?
0045nobodyさん
2007/11/09(金) 18:37:25ID:/x/z4zSE200711 2007101 などを
20070101 20071001 に
変換する関数とかってないでしょうか?
ない場合どうやって分離するか教えてください。
0046nobodyさん
2007/11/09(金) 18:40:13ID:/x/z4zSE0047nobodyさん
2007/11/09(金) 18:41:57ID:???0048nobodyさん
2007/11/09(金) 18:49:12ID:???2007年1月10日がきたら「2007110」になるし
2007年10月1日がきたら「2007101」になるし
2007年10月10日がきたら「20071010」になるし
0049nobodyさん
2007/11/09(金) 18:51:54ID:???例えば2007121が
20071201、20071021のどちらかを見分けられないから無理ぽ
取得する時にそのようにするしかないかと
0050nobodyさん
2007/11/09(金) 18:53:49ID:???0052nobodyさん
2007/11/10(土) 00:26:51ID:???PHP5.24では使えないのでしょうか。
4.4.1のサーバーで使えてたファイルを
PHP5.24にアップしたら、エラーがでます。
メールフォームで全角で入力された文字を、
次の確認画面で、半角で表示させたいのですが、
もしmb_convert_kanaが使えないなら、他の方法はありますでしょうか。。。
0053nobodyさん
2007/11/10(土) 01:54:48ID:???mb_convert_kanaはわからんけど、
preg_replaceでがんばってみては。
http://jp2.php.net/preg_replace
もしくは全角が入力されてたらエラーページにいくようにしたりとか。
携帯向けってわけじゃないなら、JavaScriptあたりで、全角のチェックいれてみたり。
携帯だったら、inputタグにistyleとか要素突っ込めば、IMEのデフォルトを半角に出来たりしたきがする。
0054nobodyさん
2007/11/10(土) 02:25:51ID:???使えるよ、変換できるよ
そのサーバーでmbstringが有効になっていて、かつ、mb_convert_kanaに
適切なオプションを引数として渡して駄目ならわからん
0055nobodyさん
2007/11/10(土) 09:18:23ID:???>>54が使えるっていってるし、とりあえず、
phpinfo();
あたりでmbstringが有効になってるか確認することが必要なのかね。
0056nobodyさん
2007/11/10(土) 10:43:48ID:???0057nobodyさん
2007/11/10(土) 11:31:39ID:???phpinfo();でみたところ、
mbstriongが有効になってませんでしたorz
preg_replace、やってみましたが、どう使えばいいのか・・・(汗)。
たとえば身長を全角で入れて、その数字をわり算したいのですが、
全角だとそのわり算部分でエラーがでるので、
半角に事前に変換した上で、わり算に持っていきたいのです。
無難にjavaスクリプトでエラーチェックしたほうがよいのかもですね。。。
0058nobodyさん
2007/11/10(土) 12:02:20ID:kqDw9Pxy0059nobodyさん
2007/11/11(日) 00:35:28ID:???おそくなっちゃったけど
たとえば、全角が表示されてたときにエラーページに行くためのフラグを立てるだけだったら、
if( preg_match("/^[0-9]*$/", $_POST["sincho"]) ){
//半角数字で記述されてた場合
}else{
//それ以外のまちがった記述の場合
}
とかにするとかかな。
preg_replaceで置換する場合は
$str = preg_replace("/A/", "A", $_POST["shincho"]);
とかやると、全角Aで書かれた文字が半角Aになる。
変換表を作って変換させなきゃいけなくてうざいけど。
そして、もっと効率のいい方法があるきがするけど、思いつかなかった。
0060nobodyさん
2007/11/12(月) 00:29:44ID:jDp7PoYPPHPをやろうと思いどうすればできるのかを
調べたのですがどうすればPHPを使えるのかがよくわかりません・・・
apacheを使ってやろうとしているのですが
あるサイトでhttpd.confの中にある文を書き加えるというのがあり
やったのですが上書き保存しようとすると
「フォルダを作成できません。パスおよびファイル名が正しいか
確認してください」と出てきます・・・
それとapacheをstartさせてもerrorと出てきてしまい
どうすることもできません。
わかる方教えてください。
0061nobodyさん
2007/11/12(月) 00:48:04ID:???0062nobodyさん
2007/11/12(月) 02:37:46ID:hPj5yJAtお返事ありがとうございます。
どこがおかしいのでしょうか・・・?
ちなみにhttpd.confの書き換えのやつは保存というか
無理矢理ぶち込んでできたんですが相変わらず
エラーと出ます・・・
というかずっとググってたんですがyahooで検索してみたら
PHPエディタというのが出てきたんですが
初心者はこっちでやったほうがいいんでしょうか
0063nobodyさん
2007/11/12(月) 11:55:27ID:cLhnRAhSよくわからんがSSHで操作するのがいいと思うんだが。
質問です、メールを解析するのに
PEARのMail_Mimeを使う方法ではできました。
これを自分で解析する場合、かなり手間暇かかりますか?
めちゃくちゃアバウトな事言ってるのは承知の上での質問で申し訳ないですが…
0065nobodyさん
2007/11/12(月) 14:14:19ID:cLhnRAhS現状では添付ファイルなど
内容を解析して
本文やヘッダーを抜き出したり
ファイルのアップロード程度です。
この程度なら作れそうかなと思いました。
解答ありがとうございます。
0066nobodyさん
2007/11/12(月) 17:36:32ID:mA3HDDMgエラーになります。なぜエラーになるのか指摘おねがいします。
$dir = "tetess";
$rc = mkdir($dir, 0777);
if ($rc) {
print "成功";
} else {
print "失敗";
}
0067nobodyさん
2007/11/12(月) 17:42:25ID:???0068nobodyさん
2007/11/12(月) 17:43:37ID:cLhnRAhS作ろうと思ってるディレクトリのパーミッションは?
0069nobodyさん
2007/11/12(月) 17:55:22ID:???007066
2007/11/12(月) 18:36:45ID:???無事できました!
意見くれたみなさんありがとうございます。
0071nobodyさん
2007/11/12(月) 19:43:02ID:???0072nobodyさん
2007/11/12(月) 20:46:49ID:???go-pear.bat実行してpear_env.regして、pear.batを実行したら「コマンドまたはファイル名が違います」ってなります。
win98環境です。pearのキャッシュライトは個別にダウンロードして使えてます。
最悪、PEAR::HTTP_Requestを使えるようになれば良いのですが、どうしたら良いでしょうか?
0073nobodyさん
2007/11/12(月) 22:55:28ID:???どうしても使いたいんなら直接落としてrequireしてやれば?
0074nobodyさん
2007/11/12(月) 23:02:11ID:???同時に落さないといけないらしく、だからコマンドで関連性のあるもの一気に落としちゃいましょう的なサイトしか見付ける事が
出来ませんでした…orz
0075nobodyさん
2007/11/12(月) 23:28:42ID:???だったらそれを落としてくればいいじゃない。
それとdocumentぐらい嫁
0076nobodyさん
2007/11/12(月) 23:51:23ID:KsyPxw5Nお返事ありがとうございます。
そのやり方調べてやってみようと思います。
バージョンによってやり方って変わるのでしょうか?
やり方が書いてあるサイトは5.2.3で説明してるんですが
自分は新しい5.2.5をダウンロードしてやりました。
ちなみにそのサイトは
ttp://www.standpower.com/
です。
0077nobodyさん
2007/11/13(火) 02:23:32ID:???ありがとうございます。
Warning: Division by zero in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2
Warning: include(php) [function.include]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2
Warning: include() [function.include]: Failed opening 'php' for inclusion (include_path='.;C:\php\includes;C:\php\pear') in C:\Program Files\Apache Group\Apache2\htdocs\sample\pati\test.php on line 2
ここから先に進めませんが、どうしたらいいでしょうか?
0078nobodyさん
2007/11/13(火) 18:58:47ID:???まず調べてから言えば?
1番目のエラーは
検索したら3件目に出た。
エラーが2行目にあるんだから2行目に使ってる物をechoでもしてみろ。
2番目も3番目を調べたらすぐわかる。
甘えんな。
0079nobodyさん
2007/11/13(火) 19:03:37ID:???0082nobodyさん
2007/11/13(火) 19:48:42ID:???最初から読む気がないのか、読もうとしたけど読めないのか、読んだ上であえて質問しているのか。
それぞれに対して突っ込みどころはあるんだけども。
純粋に気になる。
008477
2007/11/13(火) 22:03:22ID:???今から調べてみます!
0085nobodyさん
2007/11/13(火) 22:26:14ID:???エラーメッセージは検索窓にフレーズをそのままぶっ込むもんです。
「英語だからわかんない」とか思ってそういう手に走ると
failed to open stream 「ストリームを開くために、失敗されます」
Failed opening 'php' for inclusion 「包含のための失敗した初めの'php'」
余計わからなくなる。
0086nobodyさん
2007/11/13(火) 22:31:28ID:???0087nobodyさん
2007/11/13(火) 23:00:02ID:???「opening」は「初めの」という訳しか思いつかないのかよ。
・ストリームを開くことに失敗しました
・includeで'php'というファイルを開けませんでした
素で疑問なんだが、もしかして現役中学生なの?
高校生なら英語の授業でもっと難しい英文やってるだろ?
正直、プログラミングをやるにはまだかなり早いんじゃないかと。
プログラム言語って英文法の構造を元に設計されているから。それに当然エラーメッセージやドキュメントは英語だし。
英語を先に高校レベルまで勉強したほうがいい。真面目な話。
0088nobodyさん
2007/11/13(火) 23:18:00ID:???0089nobodyさん
2007/11/14(水) 17:43:26ID:???ローカルでサーバを作ったのはいいのですが
PEARなどのパッケージをインストールするのに
SSHなどで起動したいのですが
127.0.0.1やlocalhostで接続しても接続できません。
ローカルの場合どうやって起動すればいいのでしょうか?
Puttyを使ってやってSSHで接続してました。
0090nobodyさん
2007/11/15(木) 10:12:38ID:???と、あるサーバーに対して、Accept-Encoding: gzip リクエストヘッダーを付加して、
GET メソッドにてアクセスし、レスポンスヘッダーに
Content-Encoding: gzip
Content-Length: xxx
と、返ってきたので gzuncompress を使用した所、以下のエラーが…
PHP Warning: gzuncompress(): data error in paipan.php on line 277
使っている PHP は Windows 版の 5.1.6 でマニュアルには、バイナリビルトインされているとの事なので
php.ini は特に編集していません。gzdecode, gzinflate を試しても以下のエラーが…
PHP Fatal error: Call to undefined function gzdecode() in paipan.php on line 277
PHP Warning: gzinflate(): data error in paipan.php on line 277
これは、サーバー側のデータがおかしいのでしょうか?
phpinfo.php の zlib の所はこうなってます
ttp://www.imgup.org/iup502722.png
009190
2007/11/15(木) 10:29:50ID:???fopen のパス名の接頭語に圧縮ストリーム compress.zlib:// ラッパー識別文字列を
付加する事によって、コンテンツを取得した際に解凍されて戻ってきました…
でも、なんかスッキリしない…これで、いいのでしょうか?
0092nobodyさん
2007/11/16(金) 13:25:48ID:???そこで疑問に思う事があるのですが、PEARやSmartyは必要でしょうか?
もちろん使う環境によって違うのでしょうが、oopを理解してPEARなどの各ライブラリのオプションを覚えて使いこなすのは手間に感じてなりません。
初心者の戯言ですが、ご意見お願いします。
0093nobodyさん
2007/11/16(金) 13:34:45ID:???つくれるかどうかだ
0094nobodyさん
2007/11/16(金) 18:43:48ID:???0095nobodyさん
2007/11/16(金) 21:48:15ID:SDmAZVUYまあ初心者相手にそう悶えるな初級者くん
>>92
自分で遊んで使うのには、まったくいらんと思うよ俺は
0096nobodyさん
2007/11/17(土) 01:30:35ID:LKV8TtnR>PEARなどの各ライブラリのオプションを覚えて使いこなすのは手間に感じてなりません。
ライブラリやフレームワークはそういうデメリットがあるよ。
要するに楽して作るためのものなんだけど、そのメリットが上回らないなら使う意味はないです。
それに、内部でどんな処理をやっているのか理解していないとはまることも多いし、勉強中
ならこれらを使わず書いていった方がいいとおもうよ。
PHPの質問はいろんな掲示板で見かけるけど、意味もわからず本か何かのサンプル打ち込んで
簡単なエラーに対処できなかったりトンデモなソース書いたりしてる人多いし。
どういう目的で利用するためのもので、どんなものがあるのか知っていれば十分かな。
習熟したころに思い出して、必要と思ったときに使えばいいと思う。
0098nobodyさん
2007/11/17(土) 10:07:21ID:gYmumvx4するとブラウザ上にスペースができてしまいます。
スペースができない様に書く方法はありますか?
0099nobodyさん
2007/11/17(土) 11:26:53ID:???010098
2007/11/17(土) 12:26:52ID:gYmumvx4物凄く使いにくいです
皆さん改行せずにやっているのでしょうか?
0101nobodyさん
2007/11/17(土) 12:27:32ID:???■ このスレッドは過去ログ倉庫に格納されています