トップページ⇒php
1001コメント296KB

【PHP】下らねぇ質問はID出して書き込みやがれ 92

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/01/09(土) 20:11:42ID:lsb/cZ9k
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
02372332010/01/20(水) 10:58:08ID:6zid23dW
>>236
そうなんですか。素直にforeach使います。
0238nobodyさん2010/01/20(水) 12:46:53ID:a0XNCYkl
htmlspecialcharsに関してですが
関数名でぐぐっていたら
http://www.rubyist.net/~matz/20080129.html#p02
rubyのまつもとさんのBlogにたどり着きました。
なんとなく読んでいたら
htmlspecialchars($_GET['text']);
この書き方は良く無い、とおっしゃってるように見えるのですが
$_GET['text']をhtml内に表示する際にどのように記述したら良いのでしょうか?
0239nobodyさん2010/01/20(水) 13:04:54ID:???
>>238
とりあえずENT_QUOTESつけて。

ただ記事の趣旨としてはtaintが無いのが問題と言ってると思うぞ
0240nobodyさん2010/01/20(水) 13:04:58ID:???
まつもとゆきひろに見事に釣られてるぞw
そうやって上から目線でどうひどいでしょ的な例を出して初心者や経験者を釣るのがそのエントリの目的
問題点だけ出して対策案を出さないのはエンジニアとして残念だわなぁ

そのコードに関しては第二引数を適切に指定しろということかと


0241nobodyさん2010/01/20(水) 14:05:24ID:???
test
0242nobodyさん2010/01/20(水) 14:37:51ID:???
おしえてください

LAMP + Exclipse PDTをインストールして、デバッグしするとこまでは着たのですが
指定URLでデバッグするのってどうやるのでしょうか?

例)http://localhost/test.php?param=1

↑こんな感じです。
よろしくお願いします。

02432382010/01/20(水) 14:40:40ID:a0XNCYkl
>>239
>>240

ありがとう、ENT_QUOTES全然知らなかったです
ついでにENT_QUOTESでぐぐると
ENT_QUOTESつけてもjavascript有効になっちゃうみたいで
http://phpspot.org/blog/archives/2008/04/phphtmlspecialc_1.html
addslashes使うといいかも、とありましたのでご参考まで。

両方合わせるのかな?
htmlspecialchars(addslashes($_GET['text']));
みたいな?
0244nobodyさん2010/01/20(水) 14:41:38ID:???
IDEの質問は該当スレで
0245nobodyさん2010/01/20(水) 15:46:29ID:???
>>243
それなぜSmartyでやっているのか分からないけどSmartyに関係なく発生するよね
JavaScript中なら問題ないんだけどHTMLの属性として書いていると解釈されるようだ
実体参照って単に表示時に変換されるだけかと思ってたけど、そのままHTMLとして解釈されちゃうとは知らんかった
0246nobodyさん2010/01/20(水) 17:51:49ID:???
test
02472282010/01/20(水) 19:37:26ID:c5k2D9j8
>>229-231
うーん、できません・・・。

$set = select count(*) from tb1 where pet = '犬';
print $set;

と書いたところ、

Parse error: syntax error, unexpected T_STRING in

とエラーが出てしまいます。
大変申し訳ありませんが、もう一度構文を書いていただけないでしょうか。
0248nobodyさん2010/01/20(水) 19:56:44ID:???
当たり前 >>247

SQLはDBに食わせんと。
0249nobodyさん2010/01/20(水) 20:38:56ID:???
>>247
php・mysqlの解説サイトを読んだ上で
どこがわからないのか具体的に書いてもらわないと教える方も厳しいよ
0250nobodyさん2010/01/20(水) 20:43:55ID:???
とりあえずこう書いとけ

$set = "select count(*) from tb1 where pet = '犬'";
02512282010/01/20(水) 20:54:04ID:c5k2D9j8
何度もすいません。取り敢えず、以下のように記述したところ、エラーは出なくなりました。

$sssss = mysql_query("select count * from BBS where YYYY = 2010);

ただ結果が返ってこないのです。

echo $sssss;
print $sssss;

共にだめでした。

>>249
いくつかのサイトを回り、本も読みましたが…ほんとにすいません。
0252nobodyさん2010/01/20(水) 20:59:09ID:???
>>251
そのサイトや本はいきなりmysql_queryを実行してましたか?

まずmysql_connectでMySQLに接続して下さい。
その上でmysql_queryでSQLを実行し
mysql_fetch_array等で結果を取得します。

もう一度、サイトや本を読んだ方が良いと思います。
0253nobodyさん2010/01/20(水) 21:05:12ID:???
>>251
http://php.net/manual/ja/function.mysql-query.php
ここよんで、わからない(理解できない)なら、プログラムを作ることは、ほかの人に頼んだほうがよさそうです。
(あなたを非難しているわけではありません。)
0254nobodyさん2010/01/20(水) 22:11:57ID:???
>>251
define('DB_HOST',"localhost");
define('DB_NAME',"test");
define('DB_USER',"username");
define('DB_PASS',"password");

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_NAME);

$query = "select count * from `BBS` where `YYYY` = 2010";
$result = mysql_query($query);

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$rec[] = $row;
}
echo nl2br(print_r($rec,true));

定数は適宜書き換えてちょ
0255nobodyさん2010/01/20(水) 22:20:32ID:JcfZ2AVN
こんばんは

配列の便利さがいまだにわかりません^^;
どなたか説明してくれませんか
02562282010/01/20(水) 22:55:57ID:c5k2D9j8
>>254
色々やってみましたがエラーが返ってきてしまいますね。

…自分で言うのもなんですが、基礎の部分の知識が全然駄目ですね。出直してまいります。
最後に一つだけ。
皆様がお勧めする参考書とかありますか?私はソフトダンクの「基礎からのMySQL」という本を見ています。
0257nobodyさん2010/01/20(水) 23:27:26ID:???
>>255
文字’列’も配列のひとつ

これでわかるだろ
0258nobodyさん2010/01/21(木) 00:58:35ID:???
>>242
XDebug使用しているのなら、リモートでバッグにすると幸せになれるかもよ。

ブラウザで、
ttp://localhost/test.php?param=1&XDEBUG_SESSION_START=1
(XDEBUG_SESSION_STARTn値は任意の文字列)
と、入力し実行すると、デバッガでブレイクしてくれる。

詳細は、ここ読んで

[Remote Debugging]
ttp://www.xdebug.org/docs/remote

PDTとの連携については、xdebug pdtでググれば、きっとどこかに行き着くはず。

Zend Debuggerなら、使ったことないので知らん。
0259nobodyさん2010/01/21(木) 01:44:46ID:0ZIqvqkU
PHP+MYSQLwebシステム構築かな
0260nobodyさん2010/01/21(木) 12:40:42ID:???
>>256
あなたはSQLの他にPHPの知識も乏しいので
PHPの本を読んだほうがいいです。
そういう本にはSQLのことも書かれているでしょう。
0261nobodyさん2010/01/21(木) 12:53:15ID:PEXDjvL/
PHP初心者です。PHPからCプログラムを実行して実行結果をHTML上に表示する方法が分からなく困っています。
Cプログラムの中身は、
#include <stdio.h>

int main(){
printf("Hello.");
}
です。
phpの中身は、
<HTML>
<HEAD><TITLE>Cプログラム呼び出し</TITLE></HEAD>
<BODY>

<?php
$cmd = "test.exe";
$a = exec($cmd);
echo $a;
?>

</BODY>
</HTML>
としており、調べてみるとexec()関数で外部プログラムを実行すると書いてあったのでこのように作成しました。
他にもexec(),system(),shell_exec(),passthru()を試してみたんですがだめでした・・・
0262nobodyさん2010/01/21(木) 12:58:11ID:???
test.exeは標準出力に吐くわけじゃん
exec()は標準入力を受け取れるのかどうなのかマニュアルで確認してみそ
0263nobodyさん2010/01/21(木) 13:02:18ID:???
>>261
execでやりたいなら
echo exec($cmd);
とするか、第二引数を指定する。

PHP: exec - Manual
http://jp.php.net/manual/ja/function.exec.php
0264nobodyさん2010/01/21(木) 13:06:49ID:???
http://oshiete1.watch.impress.co.jp/qa5610012.html
マルチ乙
0265nobodyさん2010/01/21(木) 13:11:29ID:???
よく探してきたなw
0266nobodyさん2010/01/21(木) 13:21:42ID:???
echo exec($cmd);
にしても「ファイルが開けません」と出てだめでした。
test.exeもphpファイルと同じ場所に保存しているんですが
0267nobodyさん2010/01/21(木) 13:34:13ID:???
フルパス指定するか、./test.exe でどうよ
./ はピリオドスラッシュね
0268nobodyさん2010/01/21(木) 13:37:06ID:???
>>267
マルチのバカに回答してやるなんて優しいな。
0269nobodyさん2010/01/21(木) 13:42:58ID:PEXDjvL/
>>267
どちらも試したところ、文も何も表示されませんでした・・・
0270nobodyさん2010/01/21(木) 13:45:56ID:???
>>269
マルチするクズは消えろ。
0271nobodyさん2010/01/21(木) 13:56:32ID:???
マルチポストについて調べました。
「基本的には同一のシステム(コミュニティ)内での別個のカテゴリへの重複投稿を指すが
人によっては、別のシステム(「OKWave」、「Yahoo知恵袋」、「カカクコム」、「2ちゃんねる」など別個のサイト)への重複投稿もマルチポストと見る場合がある。」
基本的には同一のシステム(コミュニティ)内での別個のカテゴリへの重複投稿を指すので、
人によっては、マルチポストとは見ない場合もあるんじゃないですか?
0272nobodyさん2010/01/21(木) 13:58:31ID:???
>>271
はいはい。271=ID:PEXDjvL/必死だな。
ID非表示にして自己弁護。
0273nobodyさん2010/01/21(木) 13:58:46ID:???
質問する側の論理だな。
自分が回答する立場になったらマルチの不快さはわかるよ。
0274nobodyさん2010/01/21(木) 13:59:29ID:???
>>271
なんでマルチポストが嫌われるのかも調べようぜ。
0275nobodyさん2010/01/21(木) 14:02:17ID:???
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
0276nobodyさん2010/01/21(木) 14:15:50ID:IMaJrSoT
>色々と試したらうまくいきました。回答していただいた方有り難うございました。
逃げたな。


マルチポストまともに反論できないなら最初からやらなければいいのにどうしてこういうバカは
それでもマルチポストをするのだろうか?
バカの考えは凡人にはわからないね。
0277nobodyさん2010/01/21(木) 14:19:39ID:???
都合の良いサポート感覚だな。

どういう問題があって、どのように修正したらうまくいったのかを書いとけば
今後、同じような問題で困った人の助けになるのにな。
0278nobodyさん2010/01/21(木) 14:22:13ID:???
>>277
教えて君ってそういう物だよ。
・ネットマナーなにそれ?それっておいしいの?
・情報共有って必要?俺が満足すればそれでいい。
0279nobodyさん2010/01/21(木) 14:22:49ID:???
未コンパイルのテキストの拡張子を変えただけのもの
が設置してある神展開希望w。
0280nobodyさん2010/01/21(木) 14:24:54ID:???
>>279
それよりサーバにアップしたらサーバ側で動かないと言う定番を希望。
0281nobodyさん2010/01/21(木) 14:32:23ID:???
ID付くようにならんかなぁ。
0282nobodyさん2010/01/21(木) 14:48:42ID:???
IDってなんで非表示なんや
0283nobodyさん2010/01/21(木) 14:56:53ID:???
非表示がいやならID出せやハゲ
0284nobodyさん2010/01/21(木) 14:58:48ID:???
ID:PEXDjvL/逃げてないではやく謝罪しろよ。
0285nobodyさん2010/01/21(木) 15:02:58ID:???
>>283
ばーか^^
いやだよ^^
お前がだせよ^^
0286nobodyさん2010/01/21(木) 15:03:43ID:???
ワロス
0287age2010/01/21(木) 15:47:35ID:rC/oBUeG
<?
echo 'Hello World!';
?>
実行できない。ちなみに
<?php
echo 'Hello World!';
?>
は実行できる。なんで?
0288nobodyさん2010/01/21(木) 15:48:03ID:???
つマニュアル
0289nobodyさん2010/01/21(木) 15:57:06ID:???
>>287
short_open_tag
0290age2010/01/21(木) 16:16:58ID:rC/oBUeG
かいけつしました
0291age2010/01/21(木) 16:18:50ID:rC/oBUeG
289 ありがとうです
0292nobodyさん2010/01/21(木) 22:18:45ID:???
ttp://www.xrex.net/~webs/k-shop/script/heredoc_php.php

echo<<<_HTML_
_HTML_;
の存在を今初めて知った。
0293nobodyさん2010/01/21(木) 22:32:44ID:???
スクリプト言語にはほとんどあるが・・
0294nobodyさん2010/01/21(木) 22:36:58ID:???
マニュアルに思いっきり載ってるのに・・・
0295nobodyさん2010/01/21(木) 22:37:03ID:???
>>292
おまえ普通にバカだろう。
「_HTML_ 」の部分は特別な意味はない。自由に決めることができる。意味があるのは「<<<」の部分。
http://jp.php.net/manual/ja/language.types.string.php#language.types.string.syntax.heredoc
ヒアドキュメントの事くらい知っておけよ。
でヒアドキュメントってPHPに限った機能ではない。Perlなどの言語にもある機能。
常識中の常識的な機能。
0296nobodyさん2010/01/21(木) 22:38:00ID:???
http://oshiete1.goo.ne.jp/qa5611599.html
昼間のキチガイマルチがまた質問しているよ。
0297nobodyさん2010/01/21(木) 22:42:51ID:???
>>292-296
メモ用紙にでも書いとけ、な?
0298nobodyさん2010/01/21(木) 22:45:36ID:???
>>296
誰か知らんがどうでもいいよ
消えろ
0299nobodyさん2010/01/21(木) 22:46:54ID:???
>>298=ID:PEXDjvL/
必死だな。
0300nobodyさん2010/01/21(木) 22:48:26ID:???
もうそういうのやめてスルーしようぜ
マルチもスルーな。
0301nobodyさん2010/01/21(木) 22:49:38ID:???
とマルチをしたID:PEXDjvL/が事態の沈静化に躍起です。
0302nobodyさん2010/01/21(木) 22:51:54ID:???
え?PEXDjvL/じゃねえよあほ
0303nobodyさん2010/01/21(木) 22:53:03ID:???
え?PEXDjvL/だよよあほ
0304nobodyさん2010/01/21(木) 22:55:33ID:???
ID:PEXDjvL/あっちの方退会しているな。
時間的にここ見て退会したようだね。
タイミング的にもこの中の誰かがID:PEXDjvL/だった可能性はあるね。
0305nobodyさん2010/01/21(木) 22:56:32ID:???
だよよってなんだよ
脳外科行ってこい
0306nobodyさん2010/01/21(木) 22:59:20ID:???
>>305
この必死さ、おまえID:PEXDjvL/だろ。
0307nobodyさん2010/01/21(木) 23:00:24ID:???
私のために喧嘩しないで><
0308nobodyさん2010/01/21(木) 23:03:31ID:???
けんかをやめて二人を止めて
私のために争わないで
もうこれ以上
0309nobodyさん2010/01/21(木) 23:35:03ID:???
ワロス
0310アルト2010/01/22(金) 10:45:46ID:lVM55VZv
質問お願いします。
掲示板作成してます。PHPで掲示板を作成しているのですが、どうしてもわからないところがあるので教えてください。
投稿コメントに
---------------------------
[例1]
>a
>>a
>>>a
>>>>a
#a
[例2]
aaa>a
aaa>>a>a
---------------------------
とあったとします。これを掲示板の機能でよくある、色を変える処理をしたいです。
【条件】
�@、行の初めに記号(例1)があるとき色を変える。
�A、行の途中に記号(例2)があるときは色を変えない。
�B、�@の条件から改行まで色を変える。
私が考えた正規表現だとバグがありました・・・
$res_comment = preg_replace('/^>(.+)/','<font color="#">\0</font>',$res_comment);
$res_comment = preg_replace('/^>>(.+)/','<font color="#">\0</font>',$res_comment);
$res_comment = preg_replace('/^>>>(.+)/','<font color="#">\0</font>',$res_comment);
$res_comment = preg_replace('/^>>>>(.+)/','<font color="#">\0</font>',$res_comment);
$res_comment = preg_replace('/^#(.+)/','<font color="'.$sharp.'">\0</font>',$res_comment);
※色コードは今だけ#にしてます。
$res_commentには上記の例だと
$res_comment = "[例1]<br>>a<br>>>a<br>>>>a<br>>>>>a<br>#a<br>[例2]<br>aaa>a<br>aaa>>a>a";
こんな感じの変数になってます。どなたか宜しくお願いします。
0311nobodyさん2010/01/22(金) 10:58:24ID:???
行の始めと行の途中に記号があるときははてどうしたものか・・
0312nobodyさん2010/01/22(金) 11:10:30ID:???
>の連続は正規表現にしないんだw
0313nobodyさん2010/01/22(金) 11:11:32ID:???
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1235641002
はいはいマルチ乙
0314nobodyさん2010/01/22(金) 12:56:41ID:???
誰かがYahooにあったのを貼り付けに来たんだろ

0315nobodyさん2010/01/22(金) 13:02:59ID:???
じゃあスルーだな
0316nobodyさん2010/01/22(金) 13:25:57ID:???
$a = "test1\ntest2";
$b = 'test1\ntest2';

/*ここに文字列化した$bのエスケープシーケンスを解釈する処理*/

($a === $b) ? echo good : echo bad;

一度変数に改行コードではなく純粋に文字列として入ってしまった'\n'などを
解釈させるにはどうしたらいいですか?
0317nobodyさん2010/01/22(金) 13:29:44ID:???
>>316
>>1
03183162010/01/22(金) 13:37:50ID:???
preg_replaceで改行コードに変換することにしました。失礼しました
0319nobodyさん2010/01/22(金) 14:02:09ID:???
まじでか
0320nobodyさん2010/01/22(金) 14:05:40ID:???
ワロタ
0321PEX2010/01/22(金) 14:28:10ID:???
おもろいスレだな
0322サブマリンPHP2010/01/22(金) 14:49:49ID:lrtepsPM
【OS名】レンタルサーバ
【PHPのバージョン】php5
【連携ソフトウェア】特になし
【質問内容】
requireのファイルを読み込んだ場所がカレントディレクトリーになってしまうために
おこる問題についてです。

同じ階層にあるhoge.phpを読み込む。
OK <?php require('hoge.php'); ?>
OK <?php require('/hoge.php'); ?>

他の階層にある(/hoge.phpを /hoge/hogeRead.phpから読み込む)hoge.phpを読み込む。

NG <?php require('/hoge.php'); ?>

相対パスでやればいいことは分かってるのですが、
hoge.phpは変更しない
hogeRead.phpをいろんな階層に配置する
場合、階層ごとにrequireを修正していたのでは大変です。

どの階層からでも同じ構文で読み込ませる方法はないでしょうか?

0323nobodyさん2010/01/22(金) 14:54:23ID:???
define('LIBS', '/path/to/libs/');

しといて

require(LIBS.'hoge.php');

とか?
0324サブマリンPHP2010/01/22(金) 14:58:28ID:lrtepsPM
>>323
それだとdefineを設置するファイルの場所によってパスの内容が変化してしまうんです。
言い方間違えてました。
requireのファイルを読み込んだ場所がカレントディレクトリー
ではなくてphpの場合ファイルを読み込んだ場所がカレントディレクトリーになってしまうです
0325nobodyさん2010/01/22(金) 15:04:34ID:???
>>324
323は絶対パス
0326nobodyさん2010/01/22(金) 15:04:37ID:???
たぶん常套手段と思える手の一つは、

require realpath(dirname(__FILE__)).'/../includeFile.php';
0327nobodyさん2010/01/22(金) 15:09:47ID:???
>>316
function expand_escape($string) {
return preg_replace_callback(
'/\\\([nrtvf]|[0-7]{1,3}|[0-9A-Fa-f]{1,2})?/',
create_function(
'$matches',
'return ($matches[0] == "\\\\") ? "" : eval( sprintf(\'return "%s";\', $matches[0]) );'
),
$string
);
}
0328サブマリンPHP2010/01/22(金) 15:27:13ID:lrtepsPM
>>326
すみません、それでもうまくいかないです・・・・
0329サブマリンPHP2010/01/22(金) 15:32:27ID:lrtepsPM
>>326
realpathやdirnameで取得したファイル自体の位置が変わるためにそれでは
意味がないです。
0330nobodyさん2010/01/22(金) 15:34:03ID:???
絶対パスを自分のところ基準の相対パスに変えればいいんだな。
この板で前にそんな質問があって回答した気がする。
0331nobodyさん2010/01/22(金) 15:37:29ID:???
>>323か>>326でできないならできるように仕様を変更するか相対バスで指定するかしかなくね?
0332nobodyさん2010/01/22(金) 15:43:52ID:???
require $_SERVER['DOCUMENT_ROOT'] . '/../libs/hoge.php';
0333サブマリンPHP2010/01/22(金) 15:56:06ID:lrtepsPM
>>332
あ〜びっくり、ちょっと変えるとそれでうまくいきます!

require $_SERVER['DOCUMENT_ROOT'] . '../hoge.php';

として読み込むファイルはドキュメントルートに配置しました。
これだとOKなんですが
../ が必要な理由が分からない・・・・
0334サブマリンPHP2010/01/22(金) 16:03:22ID:lrtepsPM
>>332
でもとりあえず上手くいきました。有難うございました。
また、ほかの皆様にもたくさんご意見いただきまして有難うございました。
0335サブマリンPHP2010/01/22(金) 16:11:01ID:lrtepsPM
っとローカルで上手くいってたんですがサーバにうぷするとだめでした;;
もうこの迷宮いや;;
0336nobodyさん2010/01/22(金) 16:44:58ID:???
変更が許可されない環境もあったりするかもだけど、
includeパスを設定するとか。

set_include_path(get_include_path().PATH_SEPARATOR.'.'.PATH_SEPARATOR.'..'.PATH_SEPARATOR.'../..');
require('hoge.php');

file_existsとかしながら順に上の階層をみてまわるとか。
■ このスレッドは過去ログ倉庫に格納されています