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

【PHP】下らねぇ質問はここに書き込みやがれ 64

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/02/09(土) 14:51:11ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 61
http://pc11.2ch.net/test/read.cgi/php/1201425479/

◆質問する時の注意
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を必ず明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0052nobodyさん2008/02/11(月) 17:55:09ID:???
DLL Hellって聞いたことあるよね
0053nobodyさん2008/02/11(月) 19:14:29ID:???
>>52
デリヘル?
0054nobodyさん2008/02/11(月) 19:15:16ID:???
質問です。windows版のPHPにAPCをインストールして
動作させるにはどうすればいいのでしょうか。
OS:windows xp、PHPのバージョン:5.2.5
目的:ファイルのアップロードの進捗を表示できるようにしたい

extensionディレクトリにphp_apc.dllが既にあったのでラッキー、
後はphp.iniだけと思ってextension=php_apc.dllのコメントアウトをはずして
apc.rfc1867 = Onを書き込み、apacheを再起動してサンプルを動かすと
なぜかエラーでapacheが終了。サンプル自体は問題なさそうなので
APCがうまくインストールできてないのが原因だと思うのですが・・・
0055nobodyさん2008/02/11(月) 20:21:17ID:???
おいおいカーネルぶっ壊れたじゃねーか。
0056nobodyさん2008/02/11(月) 20:39:51ID:???
>>50
使うのだけ入れることはあるけど、PHPのはえらい数あるからバージョン管理ややこしくなるし
extに入ったままにしといたほうが更新したときに勝手に最新バージョンになるんじゃないかい。
0057nobodyさん2008/02/11(月) 22:12:41ID:bpntg1wU
PHP5.2って$_GETの$Keyword取得できないんですか?
0058nobodyさん2008/02/11(月) 22:47:39ID:bpntg1wU
できたのですが、
$_GET['Keyword']
て、入力されたキーワードは
$Keywordで表示できるんじゃないんですか?
$Keyword= $_GET['Keyword'];
とすれば表示されたからいいのですが
5時間悩みました
php5.2です
0059nobodyさん2008/02/11(月) 23:04:58ID:???
>>58
前はできたけど今はiniいじらないとできないようになった。
セキュリティ上の都合かな。
0060nobodyさん2008/02/11(月) 23:43:18ID:???
ID:???ってどうやるの?
0061nobodyさん2008/02/12(火) 00:07:29ID:wvmjAnme
$lockfp = fopen(ロックファイル名,'w');
while(!flock($lockfp, LOCK_EX)){
usleep(250000);
}
$result = mysql_query("SELECT COUNT(no) as count FROM テーブル名");
if (!$result) {
die(mysql_error());
}
$row = mysql_fetch_assoc($result);
$i = $row['count'];
$i++;
$sql = "INSERT INTO $tselect (no, 内容) VALUES ('$i', '内容')";
$result_flag = mysql_query($sql);
if (!$result_flag) {
die(mysql_error());
}
flock($lockfp, LOCK_UN);
fclose($lockfp);

これで$iが重複することは無いのか教えてください
0062nobodyさん2008/02/12(火) 00:13:38ID:???
ダメすぐるwww
0063nobodyさん2008/02/12(火) 00:18:43ID:wvmjAnme
まったく分からないのでどうかご教授お願いします
0064nobodyさん2008/02/12(火) 00:27:13ID:???
>>63
insertする$iが存在しないか確認しないと重複するかどうかわかるわけないし

ダメっていうのはすべてが問題外ってことやろ
質問する前にオナニーしておちつけ
0065nobodyさん2008/02/12(火) 00:30:37ID:wvmjAnme
ああ、すまない
説明不足だった

iは1から連番でつけていてcountで取得した番号=最終行という形になってる
データの削除はしたくないからテーブルにフラグをつけてデータが有効か無効か判断してるから番号の欠落とかはなしと考えてる
0066nobodyさん2008/02/12(火) 00:32:14ID:???
ごめん、”iは”じゃなくてテーブルの番号項目ということで
0067nobodyさん2008/02/12(火) 00:38:36ID:???
>>61
あまりPHPに詳しいわけじゃないんだが、$tselectって何?
PHPでは何か意味のある変数?
0068nobodyさん2008/02/12(火) 00:41:37ID:wvmjAnme
置き換え忘れただけの変数だ
テーブル名ということでお願いします
0069nobodyさん2008/02/12(火) 00:44:54ID:???
そんなコードを晒すなよ…。
0070nobodyさん2008/02/12(火) 01:02:47ID:???
なぜDBでファイルロック・・・
0071nobodyさん2008/02/12(火) 01:05:47ID:???
あらあら、うふふ
0072nobodyさん2008/02/12(火) 01:07:30ID:wvmjAnme
データベースに追加処理してるんだが

データの行数取得
↓
データの追加

という形でやってるのだが
同時にアクセスがあった場合取得と追加のタイミングで
iが10とすると
1が10という数値を取得して��11を追加する
そのときに2も10という数字を読んで同じく��11を追加することになるんじゃないのか?
そこでファイルで排他ロックをして終わったらロック解除で自分がロックできない場合は処理を中断というのを想像してたんだが
0073nobodyさん2008/02/12(火) 01:18:43ID:???
テーブルのcountにプライマリキーかユニーク属性つければ重複はないよ
0074nobodyさん2008/02/12(火) 01:19:51ID:???
あぁすまん設定する所は
$tselectテーブルのnoにたいしてな
0075nobodyさん2008/02/12(火) 01:21:35ID:???
てか、そういうのはトリガとかストアドでやると思うけどなぁ
0076nobodyさん2008/02/12(火) 01:24:11ID:???
mysqlのバージョン書いてないからトリガー等に関しては何ともいえないな
0077nobodyさん2008/02/12(火) 01:25:09ID:???
普通serial型使うだろ。
0078nobodyさん2008/02/12(火) 01:26:25ID:???
ALTER TABLE `テーブル` ADD PRIMARY KEY ( `no` )でSQLのほうでの重複は大丈夫になったとは思うんだけど
PHP側でINSERTでリトライさせるには普通に行数取得からINSERTをwhileループでいいのかな?
0079nobodyさん2008/02/12(火) 01:28:44ID:???
というかデータベースの基本的な使い方がわかっていない気がする
0080nobodyさん2008/02/12(火) 01:29:00ID:???
しかし条件によっては無限ループになりそうなwhileとかよく使うねw
0081nobodyさん2008/02/12(火) 01:30:06ID:???
insertをwhile・・・あらあら
0082nobodyさん2008/02/12(火) 01:31:59ID:wvmjAnme
すまない最近触り始めたの最近だからまだまだ分からないことばかりなんだ…
もう一度調べなおしてから書き直してみる

いろいろアドバイスどうもです
0083nobodyさん2008/02/12(火) 01:33:46ID:???
>>82
がんばってください。というかIDがなんか惜しい
0084nobodyさん2008/02/12(火) 02:09:52ID:fBU5wm/g
質問します
file_exists()を使ってるんですけど、絶対に存在してるファイルを対象に
してもfalseが返ってきます
マニュアル見たらセーフモードが関連してるというのでそこも確認したら
OFFになっていて、問題なさそうです
何が原因でしょうか? 
0085nobodyさん2008/02/12(火) 02:19:27ID:???
>>84
ぐだぐだ言わずに(ry
0086nobodyさん2008/02/12(火) 02:59:11ID:???
具体的にどういうコード書いたのさ
それ出したほうが下手に説明するより早い。
0087nobodyさん2008/02/12(火) 03:21:03ID:???
>>84
絶対に間違っていないなら、PHPが動くはず
つまりなにかおかしいか間違っているんだよ

試しにソースと同じところにあるファイルとかで試してみたら?
あとはOSとか環境書くとさらによし。
0088842008/02/12(火) 03:22:15ID:fBU5wm/g
>>85-86 ありがとうございます
$theFile="../../../sample.jpg";
if(file_exists($theFile)){
echo "ファイルあったよ";
}else{
echo "ファイルなかった";
}
これだけです。 指定したファイルが存在してるのは確認済みです。
0089nobodyさん2008/02/12(火) 03:24:06ID:???
>>88
ソースと同じ場所にsample.jpgを置いて。
$theFile="sample.jpg";
で試して味噌
0090nobodyさん2008/02/12(火) 04:29:19ID:???
mb_strcutってバグってね?
echo mb_strcut("あいう",0,2,"UTF-8");
→何も表示されない
mb_substrだったら正常に動作した
php5.2.4だけど
0091nobodyさん2008/02/12(火) 05:18:27ID:???
>>8
0092nobodyさん2008/02/12(火) 08:11:27ID:S5CbnauF
array_uniqueの重複していた値の配列を取得したいのですが
どうするのがいいですか?
0093nobodyさん2008/02/12(火) 08:28:24ID:???
array_diff
0094nobodyさん2008/02/12(火) 08:46:22ID:???
ごめん。こっちかもしれん
array_intersect
0095nobodyさん2008/02/12(火) 08:59:36ID:uKoPznXF
Windowsでの絶対パス
�@ file:///c:/xampp/htdocs/Project/require.php
�A c:/xampp/htdocs/Project/require.php
�B c://xampp/htdocs/Project/require.php

どれが一番正しいのでしょうか。
�BだとSmartyのテンプレートディレクトリまでのパスでエラーが生じたので、
�Aに直すとうまくいきました
0096nobodyさん2008/02/12(火) 09:05:17ID:???
>>95
dirname(__FILE__);
で表示されるものにあわせればOK
0097nobodyさん2008/02/12(火) 10:42:23ID:???
このスレは優しい人ばかりでだいすきです
0098nobodyさん2008/02/12(火) 10:43:56ID:uKoPznXF
>>96
有賀と御座います。
確認してみたところ、
C:\xampp\htdocs\Project
でした。
0099982008/02/12(火) 10:59:27ID:uKoPznXF
「有難う」の誤変換すみませんorz

ところで、英数字の先頭のみを大文字にするような関数ってありませんでしたっけ・・・?
0100nobodyさん2008/02/12(火) 11:00:52ID:r62/Kn46
原因が分からないため、どこに投稿すれば分からなかったのですが、
何か手掛かりがつかめればと思い投稿しました。

phpでサイトを構築しているのですが、
アクセスログを見ると、不審なログが不定期に記録されています。

たとえば、/foo/index.phpにアクセスがあると、その直後に
数秒間隔で、/index.phpへのアクセスログが数件残ります。

全てのユーザーではなく、全体の数パーセントの人です。
裏でアクセスするようなajaxのような仕組みはありません。
プログラムのミスなのかどうかよく分からないのですが、
どこ当たりがおかしいと思われますでしょうか?
宜しくお願いします。
0101nobodyさん2008/02/12(火) 11:11:54ID:???
>>99
ucfirst
0102nobodyさん2008/02/12(火) 11:14:50ID:uKoPznXF
>>101
有難う御座います。
それでできました〜。
0103nobodyさん2008/02/12(火) 12:10:44ID:nhL1XBd5
レンタルサーバーを借りています。(さくらサーバー:スタンダード)
現在、PHP5が入ってます。

Tidy関数を使いたいと思っているのですが、PHP5の場合、
--With-tidy でコンパイルしたらOKとネットで情報を得たのですが、
いまいちやり方が分かりません。

telnetやSSH経由でサーバにログインして、コマンドを入力する訳ですが、
具体的にどのようなコマンド入力をすれば宜しいでしょうか?
0104nobodyさん2008/02/12(火) 12:13:59ID:???
>>103
共有サーバっしょ?
インストールはむりぽ
0105nobodyさん2008/02/12(火) 12:15:43ID:???
↑根本的に勘違いしてるなw
0106nobodyさん2008/02/12(火) 12:16:07ID:???
リロードすればよかった…
>>104 ごめんw
0107nobodyさん2008/02/12(火) 12:17:47ID:???
流れにワロタ

>>105は>>103宛ということだよな
0108nobodyさん2008/02/12(火) 12:49:15ID:???
>>88
絶対パスで書けば動くよ
0109nobodyさん2008/02/12(火) 15:41:59ID:???
>>88 はうちで試したらローカルでもサイトでも動いたから鯖の設定かな。
>>89か>>108でいいはず。
0110nobodyさん2008/02/12(火) 16:17:18ID:4oFdYGhc
質問です
<?php

header("Content-Type: text/plain; charset=Shift_JIS");
print"<a href="http://www......jp">サイトへ戻る</a>\r\n";
print"END\r\n";

?>

<a href=></a>がリンクにならないでそのまま
<a href="http://www......jp">サイトへ戻る</a>がページにでてきてしまします。
リンクできるようにするにはどうしたらいいですか?
0111nobodyさん2008/02/12(火) 16:21:10ID:???
>>110
コンテンツタイプがおかしい
0112nobodyさん2008/02/12(火) 16:27:35ID:4oFdYGhc
Content-Type: text/html; charset=Shift_JIS
に、するとエラーになります
0113nobodyさん2008/02/12(火) 16:28:39ID:???
print"<a href='http://www......jp'>;サイトへ戻る</a>\r\n";
てことで
0114nobodyさん2008/02/12(火) 16:29:53ID:???
はなく?
すまん。途中で押してしもた
0115nobodyさん2008/02/12(火) 16:30:31ID:???
違うみたいね。スマネ。
0116nobodyさん2008/02/12(火) 16:32:07ID:???
>>112
「エラーになります」
どのようなエラーが出るか書きましょうね
質問するときの常識です
0117nobodyさん2008/02/12(火) 16:33:41ID:rr+doGz+
>>110
ダブルコーテーションの中にダブルコーテーションがあるからじゃ?

PEARのAuthについて質問です。

document見てやったんだけれどもこれってHTTPの内容見られたら
結局パスワード奪われてダメなんじゃないかと思ったんだが
俺なんか見落としてるんでしょうか?

SSLこれって必要だよね?
0118nobodyさん2008/02/12(火) 16:35:16ID:???
>>117
よくわからんが、大事なデータはURL直下に置かないものなんだぜ
0119nobodyさん2008/02/12(火) 16:36:38ID:rr+doGz+
>>118
スマソ、HTTPヘッダなんだ。
0120nobodyさん2008/02/12(火) 16:38:21ID:???
>>199
SSL使ってやったことないからわかんないけど、
Sessionでの認証を簡略化したものだと思ってるんだけど違うのかな
0121nobodyさん2008/02/12(火) 16:39:10ID:4oFdYGhc
<a href=\"http://www......jp\">でもリンクになりません。
AUの携帯でアクセスしてます。
リクエストされたページは表示できません
と、エラーになります
0122nobodyさん2008/02/12(火) 16:39:51ID:???
>>121
じゃあPCで見てみろ
auでは正規なHTMLでないとページが表示されない
0123nobodyさん2008/02/12(火) 16:41:04ID:???
>>121
つうかheaderで出す意味が分からん
0124nobodyさん2008/02/12(火) 16:45:38ID:4oFdYGhc
携帯サイトなのでAUでみれなきゃ意味ないので。
headerのほかにどんな関数がありますか?
phpが無知識なのでわかりません
0125nobodyさん2008/02/12(火) 16:45:59ID:???
>>110
これでいいと思うが?ヒアドキュメントとか覚えた方がいいよ

<?php
header("Content-Type: text/plain; charset=Shift_JIS");
?>
<html><body><a href="http://www......jp">サイトへ戻る</a>
END</body></html>
0126nobodyさん2008/02/12(火) 16:46:57ID:???
>>124
> 携帯サイトなのでAUでみれなきゃ意味ないので。

意味理解しろ厨房
PHPのデバッグは基本PCブラウザでするんだよ
それすらできないならPHPなんか触るな
0127nobodyさん2008/02/12(火) 16:47:02ID:???
あ”?よく見たら、ヘッダーオカシイじゃんw

header("Content-Type: text/html; charset=Shift_JIS");

だな
0128nobodyさん2008/02/12(火) 16:48:53ID:???
>>127
ちょっと遅れてるから俺が説明しておく

Content-Typeをtext/htmlにしたところauで表示できない
     ↓
しかたなくtext/plainにするともちろんテキストなのでリンクが表示されない
     ↓
text/htmlにしてPCでエラー表示を確認しないといけないがそれをしない


こんな感じ
0129nobodyさん2008/02/12(火) 16:50:39ID:4oFdYGhc
なるほど
試してPCでみてみます
0130nobodyさん2008/02/12(火) 16:51:56ID:???
>>124
headerなんかで出さないでも、自分で書けばよくない?

<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<head>
<body>
<?php
print "<a href=\"http://www......jp\">サイトへ戻る</a>\r\n";
print "END\r\n";
?>
</body></html>
0131nobodyさん2008/02/12(火) 16:55:41ID:???
>>130
中途半端にリンクだけPHPでワロタ
0132nobodyさん2008/02/12(火) 16:59:49ID:4oFdYGhc
PCはリンクつきました。AUはそのまんまを出力してしまいました。
130さんのをやってみます。
0133nobodyさん2008/02/12(火) 17:01:16ID:???
メンドクサイから全部HTMLで書いちゃえ
0134nobodyさん2008/02/12(火) 17:02:06ID:???
おそらく原因はauブラウザでサポートされていないHTMLの記述方法だと思うわ
PHPだけでなくWebも初心者と見た

まぁ、わかるんですがね
0135nobodyさん2008/02/12(火) 17:05:48ID:???
HDML端末でした、ってオチだったりして
01361302008/02/12(火) 17:07:12ID:???
>>130
</head>だった。

というか、そもそも本当にsjisで出力してる?
スクリプトの文字コードと併せて、要確認。
0137nobodyさん2008/02/12(火) 17:08:50ID:???
もしかして、headerで文字コード指定すると文字のエンコードも勝手に変わると思い込んでたりして
0138nobodyさん2008/02/12(火) 17:14:47ID:rr+doGz+
>>120
俺もSSL使ったことなくてイマイチ理解してないんだ。

PEARのAuth使ってやったことある人はどのように
認証画面を作成してるんでしょうか?

md5とかで暗号化しても結局その暗号化したデータ送られたらダメな気がするんですが。
0139nobodyさん2008/02/12(火) 17:14:50ID:4oFdYGhc
そのファイルがphpファイルだから <?php で始まって ?> で終わらなきゃ
いけないですよね?
いろいろやってもPCは○だけどdocomo、AUでもエラーでした。
そもそもphpがわからないのでどうにもなりそうもないかな。
ありがとうございますた
0140nobodyさん2008/02/12(火) 17:20:17ID:???
>>138
PEAR::Authは本当にテスト程度にしか使ったことないけど、
全画面にログイン認証を設置して、ログインできていなかったらログインページに飛ばすというシンプルなもの。
0141nobodyさん2008/02/12(火) 17:20:27ID:4oFdYGhc
記述がまちがってました。
130さんの方法でうまくいきました!まじありがとうです!
考えてくれた方々素人しつもんに混乱させてすんません。
0142nobodyさん2008/02/12(火) 17:21:02ID:???
>>138
sslはパケットが暗号化して流れるだけだよ。
使う際に特に意識する必要は無いけど、画像へのリンクをhttpsにしないと怒られるけど。
0143nobodyさん2008/02/12(火) 17:25:35ID:???
ID:4oFdYGhc は何歳だろう。
0144nobodyさん2008/02/12(火) 17:27:33ID:Eov8TJU+
数字が「03」のものを、abs($i)とすると「3」と表示させることが出来ます。

逆に「3」のデータを「03」と表示させる事って出来ないでしょうか?
for($i=0;$i<20;$i++)の時に、10以下は0を付けて表示したいのです。
0145nobodyさん2008/02/12(火) 17:29:15ID:???
SSL使ったことがないって、どんなレベルのやつらが答えてるんだか・・・

PEAR::AuthだろうがSSL使ってないと認証時のHTTP通信覗かれると
パスワード奪われるのは当たり前。
ちゃんとしたければ証明書ぐらい買え。
0146nobodyさん2008/02/12(火) 17:30:06ID:???
>>144
str_pad
0147nobodyさん2008/02/12(火) 17:30:46ID:???
>>145
日曜プログラマに証明書買えとな
01481442008/02/12(火) 17:33:50ID:Eov8TJU+
>>147
str_pad($i,2,0,STR_PAD_LEFT)

で、上手くできました。ありがとうございました。
0149nobodyさん2008/02/12(火) 17:35:38ID:???
>>148
printfもお忘れなく
0150nobodyさん2008/02/12(火) 17:38:20ID:???
証明書ぐらい自前で用意すれば良いやん
日曜プログラマには自前で用意したやつで十分
0151nobodyさん2008/02/12(火) 17:44:12ID:KacNwW2G
あるディレクトリで使っていたクッキーを、ドメイン以下全てで活用したいのですが
if( isset($HTTP_COOKIE_VARS["aaaaaa"]) )
{
setcookie ("bbbb", $HTTP_COOKIE_VARS["aaaaaa"], mktime(0,0,0,12,31,2020), './'); 
//または.aaaa.comと入れてみたり
}
で、移行する事が出来ませんでした
何か気になるところはありますでしょうか?
0152nobodyさん2008/02/12(火) 17:57:38ID:rr+doGz+
>>145
ですよね、やっぱり。
何でPEAR入門とか見ると結構Authが出てくるのか疑問。
これ不完全なセキュリティじゃん。

ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています