【PHP】下らねぇ質問はここに書き込みやがれ 66
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/16(日) 17:23:27ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/
◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくはトリップをつける事。
◆質問後の注意
・偽者防止に必ずIDを表示(メール欄に何も記述しない)、若しくは質問時のトリップをつける事。
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0011nobodyさん
2008/03/17(月) 04:09:43ID:???かえた方がいいところがあれば教えて下さい
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding =UTF-8
mbstring.http_input = auto
mbstring.http_output =UTF-8
mbstring.encoding_translation = Off
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_encoding = Off
0012nobodyさん
2008/03/17(月) 05:17:29ID:???0013nobodyさん
2008/03/17(月) 05:52:26ID:l3H5wOjF<a href〜>でリンクさせた文字列に変換して返す関数があるのですが、
XSS対策にエスケープするのは、関数内でやるか、echoしたときにやるか、
どちら側でやったほうがいいのでしょうか?
function hoge($str) {
return "<a href=\"$str\">$str</a>\n";
}
echo hoge($_POST['hoge']);
上記がXSSなので、
function hoge($str) {
$escape = htmlspecialchars($str);
return "<a href=\"$escape\">$escape</a>\n";
}
と関数内でエスケープ済みのを返すか、
echo htmlspecialchars(hoge($_POST['hoge']);
とechoの時点でエスケープするか。
どっちがいいのでしょう?よろしくお願いします。
001413
2008/03/17(月) 05:55:25ID:???関数内で処理してそれを普通にechoするしかなさそうですね。
自己解決しました。どうもスレ汚しすみません・・・
0015nobodyさん
2008/03/17(月) 06:03:38ID:???[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding =UTF-8
mbstring.http_input = pass
mbstring.http_output =pass
mbstring.encoding_translation = Off
mbstring.substitute_character = long
mbstring.func_overload = 0
mbstring.strict_encoding = On
0016nobodyさん
2008/03/17(月) 07:26:35ID:???ありがとうございました
mbstring.strict_encodingとは何ですか?
ググってもそれが何かがはっきり書いているページが見つかりません
0017nobodyさん
2008/03/17(月) 07:46:48ID:Qd55gHoh本を買うお金もないのでネットで勉強しようかと思います。
俺はここを参考にしてた!とかお勧めのPHP講座サイトはあるでしょうか。
当方プログラミングの経験は無く、0からはじめることになりまず
0018nobodyさん
2008/03/17(月) 07:47:01ID:???; enable strict encoding detection.
;mbstring.strict_encoding = Off
一方、phpinfoは以下のようになっています
mbstring.script_encoding no value no value
mbstring.strict_detection Off Off
なんか、php.ini-recommendedの記述って
script_encodingとstrict_detectionがごっちゃになってないですか?
つまり、mbstring.strict_encodingという属性は、実際にはないのでは
ないでしょうか?
0019nobodyさん
2008/03/17(月) 08:10:14ID:???php.ini-recommendedの中だけに記述されてある
幻の属性のようですね
ジャップにしか関係ないことなので手抜きされているのでしょうか。
mbstring.internal_encodingとmbstring.script_encodingって
どういう違いがあるのでしょうか?
0021nobodyさん
2008/03/17(月) 13:27:38ID:???その手の質問きたら俺は毎回ここをオススメしてる
宣伝と思われそうだがw
http://www.phppro.jp/school/phpschool/
初心者には普通にオススメ
あと何か作ってみたいものを見つけるのが良いんじゃないかな?
0022nobodyさん
2008/03/17(月) 13:46:19ID:Qd55gHohすいません。
テンプレのものは少し敷居が高かったみたいでした。
>>21
ありがとうございます!
参考にします!
0023nobodyさん
2008/03/17(月) 15:05:48ID:???002422
2008/03/17(月) 16:28:07ID:Qd55gHohhttp://www.phppro.jp/school/phpschool/vol1/4
でhttp://localhost/hello.phpにブラウザで見てみると
Object not found! と表示されてしまいます。
htdocsに入れたので間違いないと思います。
ちなみにXAMPPコントロールパネルは
Apacheがチェックなしで起動になっている状態
MySqlがチェックありで起動になっている状態です。
どういった原因が考えられるでしょうか
002622
2008/03/17(月) 16:43:35ID:Qd55gHohありがとうございました。
ご指摘の通りでした。
こんな単純なミスをして申し訳ないです。
0027nobodyさん
2008/03/17(月) 20:09:06ID:???くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/
こっちのスレのがオススメ
同じぐらいの人がちらほら居る
0028nobodyさん
2008/03/17(月) 23:57:52ID:d6AL+8ckforeach($data as $record) {
$last_record = array_diff($record,array());
print_r($record, true);
print_r($last_record, true);
}
上記、1つめのprint_rには配列が表示されますが、
2つめの出力は空の配列になってしまいます。
通常の代入で上手くいかなかったため
array_diff をかましてみましたがそれでも現象は変わりません。
配列と参照渡しに関する挙動を疑って調べてみましたが、
関係ありそうな文献は見つかりませんでした。
原因が分かるようでしたら助言お願いいたします。
0029nobodyさん
2008/03/18(火) 00:22:25ID:???これはどこにアップすればいいのでしょうか?
public_html 外のディレクトリにアップしたらいいのでしょうか?
セキュリティが心配です><
0030nobodyさん
2008/03/18(火) 00:27:46ID:???003129
2008/03/18(火) 00:48:08ID:XUFQaeko0032nobodyさん
2008/03/18(火) 01:09:45ID:???0033nobodyさん
2008/03/18(火) 01:10:52ID:???print_rは配列ポインタが終端まで行くのでresetしましょう
つーかdebugで表示させるならprint_rじゃなくvar_dump使え
あと通常の代入で上手くいかなかったって
どう上手くいかないの?
本来やりたい事は$last_recordに何か追加でを代入したいって事だよね?
0034nobodyさん
2008/03/18(火) 01:13:47ID:???/public_html/
index.php
/lib/
db.inc.php
こんな感じで
index.phpからdb.inc.php呼ぶとかで良いんでない?
本当ならlibと同階層アプリケーションディレクトリ作って
そこにあるindex.phpのシンボルをpublic_htmlに貼るのが良いけど
0035nobodyさん
2008/03/18(火) 01:18:56ID:???前々からphpとperlとcでどれだけのパフォーマンスが違うのか、
よく分からなかったので、メジャーな処理20パターンで試してみた。
が、絶句した。なんで、ファイル処理がこんな実装になっているのかと・・・
前スレのこの乞食は反省しろ
0036nobodyさん
2008/03/18(火) 01:43:20ID:???phpはcで作られてるんだからcより遅くて当たり前
0037nobodyさん
2008/03/18(火) 02:07:53ID:???0038nobodyさん
2008/03/18(火) 02:08:01ID:Hp4TM78s「データを削除→登録→削除→登録」してるとSQLiteのrowidがぐちゃぐちゃになるので整理
したいのですがいい方法はありませんでしょうか?
もしくは上から〜行から〜行までというように指定する方法はありませんでしょうか?
なにとぞよろしくお願いします
0039nobodyさん
2008/03/18(火) 02:10:29ID:???0040nobodyさん
2008/03/18(火) 02:18:07ID:???レスありがとうございます。
>print_rは配列ポインタが終端まで行くのでresetしましょう
>つーかdebugで表示させるならprint_rじゃなくvar_dump使え
了解です。実際はlogファイルに吐いてます。
>あと通常の代入で上手くいかなかったって
>どう上手くいかないの?
現状と同様に [ array() ] だけの出力になってしまいます。
>本来やりたい事は$last_recordに何か追加でを代入したいって事だよね?
やりたいことは、配列 $record の値を $last_record に保持しておき、
ループの次周でその値の中のいくつかを使用することです。
004229
2008/03/18(火) 02:38:54ID:XUFQaekoなるほど
ありがとうございます
0043nobodyさん
2008/03/18(火) 03:16:50ID:???最後のを使いたいだけであれば
array_sliceかarray_pop(こっちは元の配列から削除する)を使えば良い
$last = array_slice($data,-1);
var_export($last,true);
$last = array_pop($data);
var_export($last,true);
var_exportはprint_rと使い方は一緒、ただ配列ポインタのresetを勝手にしてくれる
んで、>>28のコードは実際使ってるコードじゃないよね?
間に何らかの処理が入ったコードだと思うんだけど
そこらへんでなんか$recordとか弄ってないの?
0044nobodyさん
2008/03/18(火) 03:23:43ID:???やりたいのはこういう事だよね?
$data = array(
array(1,22,345345),
array(2,222,34532245),
array(3,223,34534125),
array(4,225,34532345),
array(5,226,31245345),
);
$lastRec = array();
foreach ($data as $rec) {
if (empty($lastRec)) {
$lastRec = $rec;
continue;
}
echo "前のキー:".$lastRec[0]."<br>\n";
$lastRec = $rec;
}
まぁやっぱり実際書いてる部分のコードを見ないと何ともいえないな
28の
$last_record = array_diff($record,array());
この部分の$last_recordと=の間が全角なのはおいといて・・・
0045nobodyさん
2008/03/18(火) 03:35:37ID:???自分で最小コード書いて検証しろ
で駄目だったら人に聞け
で、駄目だった最小コードをここに張れ
004628
2008/03/18(火) 04:41:34ID:???>$last_record = array_diff($record,array());
>この部分の$last_recordと=の間が全角なのはおいといて・・・
!!!
お恥ずかしい限りです。
まさにそこが代入できない原因でした。
こんなくだらないことに時間をとらせてしまいすいませんでした。
そして大いに助かりました。どうもありがとうございます。
0047nobodyさん
2008/03/18(火) 08:23:48ID:jD2oSeYGZendStudioでは出来たのですが、
PDTでは「PHP実行可能ファイル」という部分で、
ローカルのファイルしか指定できないようなので、
出来るのかどうかわかりません(><)
004822
2008/03/18(火) 09:52:16ID:npoe+Lzf誘導ありあがとうございます
これからそちらを利用させていただきます
0049nobodyさん
2008/03/18(火) 11:52:57ID:oLNpLuBrsqlite使おうとしているんだができない。
sqlを作成するプログラムを作ると
Fatal error: Call to undefined function sqlite_open()
というエラーがでる。
やったことは
php.iniに
extension=php_sqlite.dll
extension=php_pdo_sqlite.dll
extension=php_pdo.dll
という行を追加
dllファイルまでのパスも
extension_dir = "c:/php/ext"と指定し
それらのdllは全てフォルダの中に入っているのに
なぜか動作しない
もうググりまくって色々調べたけどわからない。誰かsqliteに詳しい人教えてください
0050nobodyさん
2008/03/18(火) 11:57:55ID:???Call to undefined function sqlite_open()
でググってみ
ググったほうが早いケースはググったほうがいいぞ
0051nobodyさん
2008/03/18(火) 11:58:41ID:???多分ロードの順序性
php_pdo.dll が php_sqlite.dll より前に必要だった気がする。
php_pdo_sqlite.dll は使ってないから知らない。
0052nobodyさん
2008/03/18(火) 12:03:14ID:???ロード出来てるかどうかは、phpinfoで見たほうが確実かと。
0053nobodyさん
2008/03/18(火) 12:18:50ID:oLNpLuBrありがとうございます。
php.iniの順序を変えたんですが、不可能でした。
なーんでできねえかなあ
0054nobodyさん
2008/03/18(火) 12:37:17ID:???0055nobodyさん
2008/03/18(火) 12:38:54ID:???phpinfo で Configuration File (php.ini) Path を確認。
http://jp.php.net/manual/ja/function.phpinfo.php
0056nobodyさん
2008/03/18(火) 13:56:46ID:???0057nobodyさん
2008/03/18(火) 14:41:35ID:nN03NNVP枠で囲むことってできるでしょうか?
セルを枠で囲むことは border でできますが、
<tr> に border を付けてもうまくいかなかった。。。
0058nobodyさん
2008/03/18(火) 15:10:26ID:???0060nobodyさん
2008/03/18(火) 15:38:13ID:???Web製作板で聞くといいよ。
0061nobodyさん
2008/03/18(火) 15:42:53ID:???喧嘩売ってんの?それとも馬鹿?
どっか逝けよ
0062nobodyさん
2008/03/18(火) 19:17:04ID:czwwJPYuphpを仕事にしたいのですが、
28歳からでも業界に入ることは可能ですか?
ちなみに、英検と簿記検定で1級は持っています。
例えば、海外のシステムをphpで作るとか、
会計系のシステムをphpで作るなどのお仕事の需要はありますか?
有識者の方教えて下さい。
0066nobodyさん
2008/03/18(火) 20:37:01ID:???実際にはTOEFLとらないとだめだけど余裕で海外の4年生大学へ留学できるぐらいのレベルなはず
0067nobodyさん
2008/03/18(火) 21:52:44ID:???IT業界は頭脳土方、頭よりも体力勝負
プログラムのプの字もわからない上司や経営者からは、品質よりもコストダウンだけを強いられる
ろくにテストもできずにバグが出たら開発部が上司や営業部からフルボッコ
成果報酬、実力主義、みなし労働で残業代ゼロの素敵な世界
0068nobodyさん
2008/03/18(火) 22:12:19ID:uQDfWjhjマニュアルに書いていたのですが下記の記述も複数呼び出しになりますか?
ちなみにバージョン5.22では動作しましたが今使いたい5.25で動作しません。
if($imgsize[2] == 1){
$image = imagecreatefromgif("${save_dir}$savefile");
$newimage = imagecreatetruecolor($newwidth, $newheight);
imagecopyresized($newimage,$image, 0, 0, 0, 0, $newwidth, $newheight,$imgwidth,$imgheight);
header("Content-type: image/gif");
imagegif($newimage,null,100);
} else if ($imgsize[2] == 2) {
$image = imagecreatefromjpeg("${save_dir}$savefile");
$newimage = imagecreatetruecolor($newwidth, $newheight);
imagecopyresized($newimage,$image, 0, 0, 0, 0, $newwidth, $newheight,$imgwidth,$imgheight);
header("Content-type: image/jpeg");
imagejpeg($newimage,null,100);
} else if ($imgsize[2] == 3){
$image = imagecreatefrompng("${save_dir}$savefile");
$newimage = imagecreatetruecolor($newwidth, $newheight);
imagecopyresized($newimage,$image, 0, 0, 0, 0, $newwidth, $newheight,$imgwidth,$imgheight);
imagepng($newimage,null,100);
}
0070nobodyさん
2008/03/18(火) 22:27:20ID:A85b11Lfローカルサーバ上では出来ているのですが、
なぜかレンタルサーバ(CORESERVER)上では出来ません。
renameが利かない原因ってあるのでしょうか?
007168
2008/03/18(火) 22:31:32ID:uQDfWjhj何のエラーも出ません…
ただ、わかるのは動作するサーバーとしないサーバーがある
くらいなのです…
0074nobodyさん
2008/03/18(火) 22:47:42ID:???実行してみるとDB Error: syntax errorと表示され困ってます。。
どこも悪くないと思うんですが・・・ よろしくお願いします。
<?php
require_once("DB.php");
略
$dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName";
$conn = DB::connect($dsn);
if(DB::isError($conn)){
die($conn->getMessage());
}
$last_name =addslashes($_POST['last_name']);
$first_name =addslashes($_POST['first_name']);
$age =addslashes($_POST['age']);
略
if(preg_match("/windows/",$_ENV["OS"])){
$sql=mb_convert_encoding($sql,"SJIS","EUC-JP");
}
$result = $conn->query($sql);
if(DB::isError($result)) {
die($result->getMessage());
}
略
007670
2008/03/18(火) 22:51:44ID:A85b11Lf777にしているのですが、全く変わりません。
調べてみると、利用しているCORESERVERはセーフモードが有効だから
それでrenameに制限がかかっているみたいです。
対処法も全く分からないし、こんなことなら借りるんじゃなかった・・・
0077nobodyさん
2008/03/18(火) 22:54:51ID:???$first_name =addslashes($_POST['first_name']);
$age =addslashes($_POST['age']);
から
$sql = <<<EOS
INSERT INTO member
(
last_name,
first_name,
age
)
VALUES
(
'$last_name',
'$first_name',
$age
)
EOS;
です。
0078nobodyさん
2008/03/18(火) 22:56:00ID:???ああ、そうだった、そう言えば。ごめん。
でも共有でsafemodeじゃ無いところって殆ど無いし、あってもヤバそうなとこばっかじゃない?
0079nobodyさん
2008/03/18(火) 23:11:35ID:???ヒアドキュメントは使わないから分からんが、'が怪しくないか?
\入れないとダメな気が・・。
途中でechoしたらどうなる?
008068
2008/03/18(火) 23:11:39ID:uQDfWjhjWarningも出ません。
GDの問題も考えられますか?
GDはインストールされてますが基本的にサムネを作るなどの別箇所は
問題なく稼動しております。
0082nobodyさん
2008/03/18(火) 23:22:17ID:???それ、gifもjpegもpngも、いずれの場合もダメなの?
pngでheader吐いてないのも気になるんだけど・・。
008368
2008/03/18(火) 23:45:40ID:uQDfWjhjありがとうございますGDのバージョンはこうです。
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.5
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XPM Support enabled
XBM Support enabled
JIS-mapped Japanese Font Support enabled
後、jpgでテストは行っております。
0084nobodyさん
2008/03/19(水) 00:19:58ID:???ファイルに出せるかどうか。
008568
2008/03/19(水) 00:42:40ID:2SyStzeCとりあえずheader以外の出力方法を探して書いて見ますが
知ってたら教えて下さい。
一応自分でも探してみてます。
008768
2008/03/19(水) 00:58:59ID:2SyStzeCあ、それならやり方わかります。
今からやってみます。
008868
2008/03/19(水) 01:23:58ID:2SyStzeC0089nobodyさん
2008/03/19(水) 02:10:58ID:aPCtWHEb調べるにはどうしたらいいですか?
0090nobodyさん
2008/03/19(水) 02:13:45ID:???0091nobodyさん
2008/03/19(水) 02:22:01ID:???009274
2008/03/19(水) 02:37:23ID:hGKuSH/Dちょこちょこ弄ってみましたがよけい酷くなって(笑)
難しい。。
0094nobodyさん
2008/03/19(水) 05:45:59ID:???このスレの中にも、実装系で飯食っている奴がいるんだよな。
こんなのばっかりだから、あっちこっちでシステムトラブルが発生するだよ。
0095nobodyさん
2008/03/19(水) 10:01:56ID:???0096nobodyさん
2008/03/19(水) 10:10:31ID:???派遣会社(ヤクザ)が経歴にゲタを履かせるのが常習化してるから。
3重派遣なんかになると、3回下駄がついて、初心者が中級者ぐらいの経歴になってしまう。
とうぜん、求められたものなんてこなせない。
解決したいなら、派遣なんて使うな。
0097nobodyさん
2008/03/19(水) 10:35:46ID:Git3E2u1CRYPT_MD5を有効(=1)にするにはどうしたらいいの?
再コンパイルすればいいのか?と思ったが、configureのオプションにそれらしきものは見当たらない・・
ちなみにPHP4.4.8 on Linuxです
0098nobodyさん
2008/03/19(水) 11:54:02ID:???ただの勘だけど、configureに LDFLAGS='-lcrypt' を渡したらよろしくやってくれるかも。
0099nobodyさん
2008/03/19(水) 12:10:02ID:Git3E2u1ありがとう.その後格闘の結果、なんとかなりました.
PHPを使わず、crypt()システムコールを直接呼ぶCのプログラム作ってみたらちゃんとMD5暗号化できたたので
そのプログラムをexec()でPHPから呼ぶことにします.
せっかく-lcryptを追加してみたら?とヒントをくれたので報告しておくと
Makefileの中ですでに定義されていました.
でもなぜCRYPT_MD5が有効になっていなかったのかは不明・・
0100nobodyさん
2008/03/19(水) 12:38:05ID:0Yuq8Q66あるhtml文字列が正しいhtmlかどうかをチェックしてくれる
スクリプトやモジュールはありませんか?
例えば
<div class="hoge">
ほげほげ
だったら<div>が閉じられていないのでおかしいという事を
返してくれるような機能が欲しいのですが。
知っている方いましたら教えてください。お願いします。
0101nobodyさん
2008/03/19(水) 12:38:37ID:???___
/ノ^, ^ヽ\
/ (○) (○) ヽ
/ ⌒(__人__)⌒::: l
⊂ ̄ヽ_| |
<_ノ_ \ /
ヽ ⌒,
/____,、ノ /
/ (__/
( ( (
ヽ__,\_,ヽ
(_/(_/
0102nobodyさん
2008/03/19(水) 12:46:39ID:???モジュールのconfig.m4を実行する順番の問題じゃない?
Makefileに書いてあってもext/standard/config.m4(多分)を実行する時点で
LDFLAGSに'-lcrypt'がないと意味ないよ。まぁ勘なんだけど。
あと、crypt()はシステムコールじゃないよね?。man 2 cryptしちゃったよ。
>>100
Tidyは?
0103nobodyさん
2008/03/19(水) 13:41:51ID:???この場合preg_match_allの第二引数には何をいれればいいんでしょうか・・・
0105nobodyさん
2008/03/19(水) 14:00:47ID:???すいませんorz
PEARを初めて使ったのですが、ほとんど理解できないままやっているもので・・・
HTTP_Requestで取得した文字列を第二引数に入れたいのですが、それをどうやるのかがわかりません。PEARで定義された変数でもあるんでしょうか?
0106php学習中 ◆CyaS/rIHbo
2008/03/19(水) 14:05:06ID:???PHPからMySQLにアクセスする際にID,パスワード,ユーザーネームが漏れてしまいます。
他のファイルから読み込むとしても、サーバー側の管理者に見られたりするように思えるのですが、
一般的にパスワードの管理はどうやってやるのでしょうか?
0107nobodyさん
2008/03/19(水) 14:06:37ID:???http_requestでぐぐればすぐでてきたよ・・・
pearで良く使われたりす物の使い方等は検索した方が早い
0109nobodyさん
2008/03/19(水) 14:09:44ID:???何のid,pass,ユーザ名?
何かサービス等を作ろうとしてて
DBに保存してるIDとかパスが見られるっていうなら
DBにハッシュを登録しておけばいい
ただそのハッシュ化の方法が解れば
サーバ管理者が勝手に登録しようと思えばできる
0110php学習中 ◆CyaS/rIHbo
2008/03/19(水) 14:17:07ID:???MySQLのid,pass,ユーザ名です。
MYSQLに接続する際や、SQLクエリを実行する際に使うのですが、参考書ではソースに直接書いていたものでして。
■ このスレッドは過去ログ倉庫に格納されています