08/11/25 03:38:24
2chのdatファイルをPHPを使ってダウンロードしたいのですが、
どうしたらよいですか?
ブラウザを使ってアクセスするとできるのですが、PHPだとできません。
40:nobodyさん
08/11/25 04:01:15
レスポンス見ろ
41:nobodyさん
08/11/25 19:28:56
>>39
馬鹿発見
42:nobodyさん
08/11/25 21:18:12 qzrO9YC/
googleみたいに、特定のサイトを自動でインデックス化して検索できるようにするスクリプトってありますか?
phpで書かれたサーバ設置型を探しています。
43:nobodyさん
08/11/25 21:24:20
ありますか?ってなんだよ
そりゃ誰かが作りゃあるだろバカか?
44:nobodyさん
08/11/25 22:14:09
>>42
普通そういう事はPHP単体ではやらないかな…。
Namazuなんかはperl版はあった気がするが。
要望そのものには応えられないが「Namazu PHP」でググるといい。
>>39
具体的にコード載せては?
PHP5でphp.iniでallow_url_fopenがONになっていたら、
取ってくるだけならfile_get_contents()1行で終わりだけどね。
まぁ実際は2chの鯖と行儀よくおしゃべりしないと駄目なので
URLリンク(age.s22.xrea.com)
URLリンク(www.monazilla.org)
辺り読んで理解できないなら、もう少し勉強してからにした方がいい。
既に既存のスクリプトもあるみたいなので「PHP 2ch Viewer」とかでググルといい。
>>37
そもそも、Prepared Statement使ったほうがいいと思う。
PHPならPDO使えば簡単楽ちん。
45:nobodyさん
08/11/25 22:20:24
>>44
thx
46:nobodyさん
08/11/26 17:34:56
更新ボタンを押すとおk、キャンセルの確認画面を表示させる程度のものを作りたいのですが
phpのなかでjavascript使いたいんですが書き方がわからないです・・・
どなたか教えてください
47:nobodyさん
08/11/26 17:37:01
echoで出力する
<?php
echo "<script type=\"text/javascript\" src=\"hoge.js\"></script>\n";
?>
あるいは一回PHPモードから抜ける
<?php
//php script
?>
<script type="text/javascript" src="hoge.js"></script>
<?php
//php script
?>
48:37
08/11/26 18:03:51
>>38
>その人のは他のも動かないのあるね。
む、そうなんですか。
>>44
pdo->prepare 既に使ってたんですが、プリペアードステートメントってこれのことだったんですね。
名前だけ知ってたんですが、何のことかよく分かっていませんでした汗
ありがとうございましたm(_ _)m
49:46
08/11/26 18:41:54
>>47
早いレスありがとうございます。
print("<table border=\"1\">");
print("<tr><td>ISBNコード</td><td>題名</td><td>著者</td><td>出版社</td><td>出版年</td><td>更新</td><td>削除</td></tr>");
while($row=mysql_fetch_array($res)){
print("<tr>");
print("<td>".$row["bisbn"]."</td>");
print("<td>".$row["btitle"]."</td>");
print("<td>".$row["bauth"]."</td>");
print("<td>".$row["bpub"]."</td>");
print("<td>".$row["bpubyear"]."</td>");
print("<td><a href=\"update_form.php?bid=".$row["bid"]."\">更新</a></td>");
print("<td><a href=\"library_delete.php?bid=".$row[bid]."\">削除</a></td>");
print("</tr>");
}
さっきボタンと書きましたが実際ボタンじゃなかったです。すいません。
MySQLに接続した図書検索のページなんですが、更新をクリックしたときに確認画面を出したいです。
出力するのとPHPモードから抜けるの試したのですが、
前者は"更新"が表示されなくなってしまいました。
後者はページ自体表示できなくなってしまいました。。
50:nobodyさん
08/11/26 19:06:12
件数0なんでは?
51:nobodyさん
08/11/26 19:12:23
>>50
いえ、入れてあります。
52:nobodyさん
08/11/26 19:14:40
じゃ出るはず
53:nobodyさん
08/11/26 19:16:47
print("<td><a href=\"update_form.php?bid=".$row["bid"]."\"><script type=\"text/javascript\" src=\"hoge.js\">更新</script></a></td>");
だとまずいんでしょうか。。
54:初心者です
08/11/26 19:52:25 51PdxGfY
PHPのフォームからカタカナを検索すると?????になってしまうんですが
どうしたらいいのでしょうか?
データベースはMySQLで、文字コードはUTF-8に揃えてるはずなんですが^^;
いきずまってます。色々なサイト見てますが、出来ません><
55:nobodyさん
08/11/26 19:53:27
html的におかしいでしょ
更新ボタンをjavascriptで制御したいなら
<input type="button" onclick="javascript:event" value="更新">
onclickあたりでイベント発生させないと
ボタンじゃなくてアンカーだとしても同じこと
<a onclick="javascript:event">更新</a>
56:nobodyさん
08/11/26 20:10:53
>>54
×揃えてるはず
○揃ってない
57:nobodyさん
08/11/26 21:00:48
>>53
49のコードは嘘なん?
58:nobodyさん
08/11/26 21:31:17
>>57
32行しか書き込めないようなのでテーブルのとこだけ抜き出してみました
>53のはこうしてみたけどできませんでした、みたいな感じです
>55の方が指摘してくれてるonclickというのを調べて見ていますが
htmlもjavascriptも全然なもので・・・
59:nobodyさん
08/11/26 21:35:46
まずは、PHPとJSの特性を知ることからじゃないの?
どうちがうかってちゃんと把握できてるの?
60:nobodyさん
08/11/26 22:12:18
<a href="update.php" onClick="return confirm('更新するぞゴルァ!');">更新</a>
PHPまったく関係ないけどこういうことがやりたいとか?
61:nobodyさん
08/11/26 23:53:42
>>60
何・・・だと・・・?
phpもjavascriptもなくできるんですね・・・or2
ありがとうございます、ありがとうございます(´;ω;`)
62:nobodyさん
08/11/27 00:05:14
.jsファイルを読み込むのがJavaScriptだと思ってるのか
63:nobodyさん
08/11/27 00:13:42
>>60
これってjavascriptって書いてないけど、
javascriptで動いてるんだよね?
64:nobodyさん
08/11/27 00:25:36
手抜きせずに基礎からちゃんと学ぼうよ
65:nobodyさん
08/11/27 15:04:23
URLリンク(act.st)のアクセス解析を
URLリンク(www.php-labo.net)のブログにincludeを使った形で組み込みたくて
ブログのindex.phpに書いてみたんですが画面が白くなったり機能しなかったりします。
なんとか正常にinclude出来ないでしょうか。
66:nobodyさん
08/11/27 15:11:21
>>65
スレリンク(php板)
スレリンク(php板)
67:nobodyさん
08/11/27 15:26:09
改造とかそんなたいそうなものじゃなくてなんとか
include_once('lapis/write.php');の一行を正常に稼動させたかっただ・・・
68:nobodyさん
08/11/27 15:32:35
display_errors = On
69:nobodyさん
08/11/27 17:16:11
>>68
iniでやったけどやっぱり真っ白でした
最初の行に入れると真っ白だけどアクセス解析は機能しているようです。
70:初心者です。助けてください
08/11/27 21:17:24 7UVbMsyC
>>56
PHPinfo()でdefault_charsetってとこを見たらnovalueとかなってたんだけど
そこもUTF-8とかにしないといけないのかな?
MySQLの方もUTF-8にしてるんですが…
それとも、SQL文を送信するとこで何か他の方法があるんですか?
文字コードで気をつけないといけないところは他にもあるんですか?
漢字とアルファベットは検索出来ます。
71:nobodyさん
08/11/27 21:22:32
mbstringの設定しろよ
72:nobodyさん
08/11/28 02:13:04 6eZt1xO+
URLリンク(www.s-memo.net)
を参考にしてPEARを導入しようと思ってたのですが
go-pear.batをダブルクリックしても何もでません
よろしくおねがいします
73:nobodyさん
08/11/28 10:03:58
URLリンク(pear.php.net)を保存して実行でおk
74:nobodyさん
08/12/02 21:02:45 ZnEnsvHS
誰かお願いします。
内容
フォームからPOSTのメソッドを利用して「ユーザーID」と「パスワード」送信する。
受信したファイルでは「ユーザーID」と「パスワード」の妥協性を判断して出力する。
条件
データ送信用ファイル:input.html
データ受信用ファイル:check.php
input.htmlには2種類のテキストボックスを配置させる(txtId と txtPass)
check.phpでは以下の4種類のメッセージを出力させること
・ユーザーIDとパスワードの組み合わせが正しい場合
「認証成功!」
・ユーザーIDが存在しない場合
「ユーザーIDが存在しません」
・ユーザーIDは存在するがパスワードが誤っている場合
「パスワードが違います」
・ユーザーID、またはパスワードのいずれかが空白の場合
「ユ-ザーIDまたはパスワードが未入力です」
check.phpにおけるユーザーIDとパスワードの組み合わせ(3ユーザー分)
ユーザーID:guest admin test
パスワード:goma adm test
スクリプト以下の配列に格納し、プログラムによって判断を行う。
ユーザーID:$arrUser $arrUser = array(・・・・);
パスワード:$arrPass &arrPass = array(・・・・);
課題で出たのですが、受信側の処理がわからないです。
誰かお願いします。
75:nobodyさん
08/12/02 21:09:11
ID無し質問スレで書いた者だけど
マルチは最悪だな
76:nobodyさん
08/12/02 21:54:03
マルチとかはどうでもいいが
コピペで我が物顔で提出されるかと思うと、教える気失せるな。
せめて、ここまでやってみましたけどうまくできなせん、とか
努力を見せてほしいね。
講義をちゃんと聴いてない74が悪い
77:nobodyさん
08/12/02 21:55:58 ZnEnsvHS
ユーザーIDとパスワードのとこの配列の使い方が分からないです
78:nobodyさん
08/12/02 22:40:15
「ここから先ぜんぶわからないんだけど~」
79:nobodyさん
08/12/03 06:17:09
>>74
PHP Tutorial #2 - Login form
URLリンク(jp.youtube.com)
80:nobodyさん
08/12/03 20:41:42 SBXcaNw7
fputcsvを使って入力データの保存を行おうと思ったのですが、
こういうのってトランザクションはどうするべきなのでしょうか?
81:nobodyさん
08/12/03 20:43:40
ロックかければ?
82:nobodyさん
08/12/04 01:40:03
ロック
ロック
ここでロック
あなたから
ロック
手を伸ばして
受け取ってよ
83:nobodyさん
08/12/04 02:49:51 6sD/pbke
pecl4winが落ちてるからimagick.dllがダウンロードできないんだけどどっかにないかな?
84:nobodyさん
08/12/04 10:12:39
自分でビルドすれば?
85:nobodyさん
08/12/04 14:10:31
$arr=array(15,34,10)
配列の要素の和を求める関数ありますか?
echo 59 の様な感じです。
86:nobodyさん
08/12/04 14:19:24
>>85
array_sum
87:nobodyさん
08/12/04 14:21:17
>>86
ありがとうございます。
88:nobodyさん
08/12/04 18:07:23
PHPは本当にどんな関数でもあるな
perlだったら、いちいち自分で書かないといけない。
89:nobodyさん
08/12/04 18:20:27
>>88
世の中はPHPとPerlだけではないのだよ?
90:nobodyさん
08/12/04 18:24:46
PHPはウェブありきで設計された言語だからな
つーか関数多過ぎ
91:nobodyさん
08/12/04 18:26:39
いやいや少ないだろ・・・
92:nobodyさん
08/12/04 22:46:59
多いから何なんだろう
学習コストが高い?
優秀な言語?
93:nobodyさん
08/12/04 23:39:39 ge2NtuW2
formタグを使って配列を受け渡したいのですが、そういうのってどうしたら良いのでしょうか?
94:nobodyさん
08/12/05 01:26:39 zoYImp6K
配列で0~99まで格納ってわざわざ全部array(で打ち込んでいくしかないですか!?
95:nobodyさん
08/12/05 01:33:39 jMVHCYUr
>>94
意図がわからんが、rangeとか?
96:nobodyさん
08/12/05 01:37:35
日本語でOK
どういう値を渡したいのだ?
97:nobodyさん
08/12/05 04:44:41
$a=(0-99);
とかでしょ?
98:nobodyさん
08/12/05 09:25:55
rangeだろ
99:nobodyさん
08/12/05 16:28:02 fefynmKZ
csvファイルの15行目から25行目を読み込むみたいな処理をしたいんですが、
こういうファイルの途中から途中までの読み込みって出来ますか?
あるいは、やっぱり一行目から読んでいって、
目的のデータにくるまでは捨てていくしかないでしょうか?
100:nobodyさん
08/12/05 16:31:02
捨てていくっていう表現はおかしいな
例えばfileで配列に読み込んで
[14]~[24]までを取り出せばいい
ファイルの中身が膨大でメモリの負担を考えるなら
また別の方法を考えるべきだが
101:nobodyさん
08/12/05 17:33:46
読み込み位置を変えるseekというものはあるが、
テキストファイルのように1行の長さが不定なものには使えない。
102:nobodyさん
08/12/05 18:34:07
Googleのように、ログインした後はブラウザを一回閉じても
再度開いたらログイン済になっているような機能を実装したいんですが、
参考になるサイトなど教えて貰えませんでしょうか?
クッキーを使うのかと思ったらGoogleはクッキーオフでも上記動作をしているようです。
こういう機能をなんと呼ぶのかも判らないので名前を教えて貰えるだけでも結構です。
よろしくお願いします。
103:nobodyさん
08/12/05 19:22:16
>>102
うそつけw
Cookieオンにしろといわれたぞ
IPやホスト名を鯖側で記録しておいて
変化するまで有効にする手なんてのも考えられるが
一般的じゃないしセキュリティ的にも危険
104:101
08/12/05 19:38:49
>>103
すいません、Firefoxでやったらエラーでました。
IEでクッキーを受信するときにダイアログを表示するように設定して、
僕のサイトで警告が出るのを確認してからGoogleにログオンしたんですけど
何故かオンになってたみたいです。
クッキー使うって事はユーザー名とか暗号化して記録すれば良いんですね。
ありがとうございました。
105:nobodyさん
08/12/05 19:53:32
Cookieを使ったセッションだと思うぞ。
106:nobodyさん
08/12/05 20:20:33
セッションでブラウザ閉じた後情報が保持されるかアフォ
107:nobodyさん
08/12/05 21:13:25
Cookieの中身を見てみりゃいいのに…
108:nobodyさん
08/12/05 21:45:22 jMVHCYUr
>>106
セッションID持たせて有効期限。
109:nobodyさん
08/12/05 22:26:45
実験してみればわかると思うけど、
クッキーを手動で削除すれば
強制ログアウトさせられるよ
110:nobodyさん
08/12/06 09:19:14 figaW1Vu
質問です
携帯サイトのトップページで
URLリンク(hoge.com)
リンク①←(id=1)
リンク②←(id=2)
リンク③←(id=3)
リンク④←(id=4)
リンク⑤←(id=5)
と表示し、URLリンク(hoge.com)とパラメータをつけて飛んで来た場合
リンク②
リンク③
リンク④
リンク⑤
リンク①
と、そのidのリンクを一番下へ自動で並び替えるにはどう書いたら良いでしょうか?
よろしくお願いします。
111:nobodyさん
08/12/06 09:45:43
$url= array("リンク1", "リンク2", ""
$count= count($url);
for ($id=$_GET['id']; $id<$count; $id++){
if ($id >= $count) $id= 1;
$link.= $url[$id];
}
こんなイメージでできそう
112:nobodyさん
08/12/06 10:09:00
$url = array(1 => "リンク1", 2 => "リンク2", ....
uksort($url, "cmp");
print_r($url);
function cmp ($a, $b)
{
switch ($_GET['id']) {
case $a:
return 1;
case $b:
return -1;
default:
return $a - $b;
}
}
113:110
08/12/06 10:23:36
ありがとうございます!!
今から出勤なので帰ってからやってみます。楽しみです
マジ感謝です。
114:nobodyさん
08/12/06 19:41:46 uHkDvuuY
onclickのようなイベントハンドラに対してphpのコードを実行させたいのですが、
こういうのってphpではできない感じでしょうか?
具体的にやりたいことは、
ボタンが押される
→Javascriptの関数を呼び出し入力項目をチェック
→良ければ、次のページに渡すphpの変数をセット
→次のページに遷移
って感じです。
115:nobodyさん
08/12/06 19:44:30 yGRUMO6W
できる。
116:nobodyさん
08/12/06 19:48:48
>>115
あれ?
サーバサイドのphpではクライアントサイドのJavascriptみたいにonclickでの
関数呼び出しは出来ないってのは良いですよね?
Javascriptの関数の中でphpを記述するってことですか??
117:nobodyさん
08/12/06 20:44:44
うん。
ちなみに
>具体的にやりたいことは、
>ボタンが押される
→Javascriptの関数を呼び出し入力項目をチェック
>→良ければ、次のページに渡すphpの変数をセット
>→次のページに遷移
これ読む限りではphpいらないと思うが?
118:nobodyさん
08/12/06 21:05:23
>>117
なんか自分でもそうやったら出来ないだろうかとやってみたんですが、
エラーコンソールに invalid flag after regular expressionと出てうまくいかないんです。
具体的には以下のように書いていて、
チェックフラグがtrueならそのページで使ったデータを二次元配列から取り除いて、
残りを次のページに渡すデータとするみたいな感じです。
<script type="text/javascript">
function isAllChecked(){
//省略
if(!flag)return false;
<?
global $num,$data;
for($i=0;$i<$num;$i++)array_shift($data);
?>
return true;
}
</script>
//省略
<input type="submit" value="次へ" onclick="return isAllChecked()" />
119:nobodyさん
08/12/06 21:06:41
javascriptの中にphpコード書いてどうすんの?
120:nobodyさん
08/12/06 21:08:28
>>114
書かれてるのは、onclickで変数をエンコードしてページを呼び出すだけだよな
もし、onclickでphpのコードを実行した結果をページに反映させたいなら
ajaxの仕組みを利用する。
xajaxってライブラリが実現してるのがその仕組みに近い。
シームレスに関数を呼び出す感じになるよ
121:110
08/12/06 22:06:53
何度もすみません
>>111 >>112試してみたのですがうまくできませんでした。
$url = array(
1 => "<a href=\"test1\">test1</a>",
2 => "<a href=\"test2\">test2</a>",
3 => "<a href=\"test3\">test3</a>",
4 => "<a href=\"test4\">test4</a>",
5 => "<a href=\"test5\">test5</a>",
);
if ($_GET['id'] == test1) {
$url1=$url[2];
$url2=$url[3];
$url3=$url[4];
$url4=$url[5];
$url5=$url[1];
} elseif ($_GET['id'] == test2) {
$url1=$url[1];
$url2=$url[3];
$url3=$url[4];
$url4=$url[5];
$url5=$url[2];
~~
以下elseifが数個ってな感じでやったのですがもうちょっとシンプルと言うか効率の良いやり方無いでしょうか?
122:nobodyさん
08/12/06 22:28:18
>>118
それじゃPHPの実行結果がjavascriptの一部と解釈されるだけだ・・・
123:nobodyさん
08/12/06 22:38:00
>>121
なんというO(n^2)
124:nobodyさん
08/12/06 23:31:00
>>121
おいおい、意味わかってれば、>>112は動くぜ?
a href= test1ならそれなりに工夫しろよw
125:110
08/12/07 02:06:11
>>112が何でこんな動きになるのか理解できませんが思い通りにいけました!
ありがとうございます
お世話になりました~!!
126:nobodyさん
08/12/07 22:04:39
PHPの関数の数って全部でいくつあるの?
127:nobodyさん
08/12/08 00:43:56
約142,000くらい
128:nobodyさん
08/12/08 01:06:08
マニュアルの関数一覧は5900個
日々拡張されたり廃止されてるから増減するし
マニュアルにのってないのもあるのでなんともいえないな
PEARは各種FWのを含めるとさらに増える
ユーザー定義関数も含めると天文学的な数値になる
(9割型コードがかぶってたりコードは違うが動作が同じのも含む)
実際によく使うのは100個もないので数なんてどうでもいいやね
129:nobodyさん
08/12/08 01:10:38
6,000もあるのか
全部おぼえようとしていたが、
やる前に質問してよかった。
130:nobodyさん
08/12/08 01:11:12
それで、
「よく使う100個」の
リストは、どこかにある?
それから優先的に学習していきたい。
131:nobodyさん
08/12/08 01:13:49
アマゾンでPHPで一番売れている本を買おうと思ったんだけど、
なんでPHPってカテゴリはないの?
132:nobodyさん
08/12/08 01:14:33
確かに関数多過ぎてうんざりするからよく使うものとうんこ臭いのに分けてほしい
133:nobodyさん
08/12/08 02:58:26
ソース見りゃいいじゃん
134:nobodyさん
08/12/08 03:07:52
>>130
やっているうちに覚えていくから心配しなくていいよ
とにかく本でもマニュアルでもいいから順序通りにやっていってみ
135:nobodyさん
08/12/08 03:13:30
>>134
その作業が死ぬほどつまらんから
聞いているのです
「試験に出る英単語」って本知ってる?
あれは出現頻度順に並べたものなんです
136:nobodyさん
08/12/08 03:29:01
お前にゃ向いてないから諦めれ
137:nobodyさん
08/12/08 04:24:39
口よりも手が動かないと・・・
138:nobodyさん
08/12/08 04:41:01
>>135
似たようなリスト(別スレで見かけたのでコピペ)
URLリンク(www.1x1.jp)
しかし、英単語だって実用的に使って覚える方が楽だぞ
実用を伴わないで関数を勉強する方が余程ストイックな作業だと思うが
139:nobodyさん
08/12/08 08:32:40
>>138
>>135じゃないけど
俺は暗記得意だから先に仕様書とかリファレンスに一通り目を通してから実戦のほうが合ってる
結局人それぞれじゃね?
140:nobodyさん
08/12/08 09:49:20
>「試験に出る英単語」って本知ってる?
あれは出現頻度順に並べたものなんです
試験対策ってことは、当然一通り順序どおりに英文法をマスターしたうえで読む本だよな。
英単語だけ覚えても文章の1つも作れないだろ。
プログラミングだって順序立てて学習するのを避けて関数を覚えようとしても意味がない。
141:nobodyさん
08/12/08 20:33:26
死ぬほどつまらんならやらなければいいのにね
142:nobodyさん
08/12/08 20:43:10
しかし、ある程度勉強しないと
何も作れないじゃん
143:nobodyさん
08/12/08 20:50:23
じゃ勉強すればいいじゃん
144:nobodyさん
08/12/08 21:11:07
だがプログラミングの勉強はつまらんのだよ。
こういう風に教えてくれよ
URLリンク(jp.youtube.com)
145:nobodyさん
08/12/08 21:14:57
じゃやらなきゃいいじゃん
146:nobodyさん
08/12/08 21:18:11
相手にするだけ時間の無駄だぞ
放置してやれ
147:nobodyさん
08/12/09 02:09:02
どもども。
<タグ>あうあう</タグ><タグ>あうあう</タグ>ゲロゲロ<タグ>あうあう</タグ>
みたいな文字列からタグの中身をタグも含めて配列に格納していきたいのですが、どうやったらいいのでしょうか。
148:nobodyさん
08/12/09 02:16:12
XML DOMをつかいましょう!
149:nobodyさん
08/12/09 02:20:39
>>147
正規表現で抜き出す
URLリンク(jp.php.net)
150:nobodyさん
08/12/09 02:42:47
xmlに正規表現てw
151:nobodyさん
08/12/09 02:50:19
なんでxmlって決め付けてるんだよ
152:nobodyさん
08/12/09 03:19:03
>>149
できました!
>>148
こんど勉強してみます。
153:nobodyさん
08/12/09 04:53:11
トップページに検索フォームを用意しておいて
トップページと検索結果ページのレイアウトを全くの別物にしたい場合
GETに中身がなかったらトップページへ
中身があったら検索結果ページへとか言う風にif文でhtmlを丸ごと括って分岐させる感じでいいの?
なんかスマートじゃない気がするんだけど
154:nobodyさん
08/12/09 05:12:49
検索アクションがあったら中身が空であっても検索結果を出すべきだろ
検索単語を入れるように検索結果のページで促したり
単純にヒットしなかったと検索結果を出すのが普通
155:nobodyさん
08/12/09 13:03:23
いいことを教えてやろう。
<form action="search.php">
156:nobodyさん
08/12/09 14:41:55
入力エラーだからlocationヘッダでトップページに返せばいいんじゃない?
できればエラーメッセージつけてかえすと親切だな。
157:nobodyさん
08/12/09 20:34:24
トップページと同一のファイルで検索結果を表示しようとしてるの?
普通に検索用のスクリプト作ればいいじゃない。
158:nobodyさん
08/12/09 22:03:51
symfonyで作ったスクリプトって、単体じゃー動かないの?
symfony本体無いと動かない?
上の質問が正解だとすると、レンタルサーバではほぼ使えないですよね?
symfony使えるサーバじゃないと。
159:nobodyさん
08/12/09 22:10:06
>>158
フレームワークなんだからそれ通さないと動かないに決まってるだろ
PHPのフレームワークなんだからPHPで書かれてるだろ
PHPさえ使えればどの鯖でもつかえるんじゃね?
160:nobodyさん
08/12/09 22:56:48
よろしければご質問いたします
データベースに内に用事のある日付と人のIDを入れておくテーブルが有ったとします
(DATE, ID)
(11/29, K)
(12/5, F)
(12/7, F …みたいな感じ)
そこからSQL文で月を指定してまとめてデータを抜き出しておいて
画面テーブルのトップに日付と曜日の一覧を表示させておいて
人別に用事のある日付に×を書き込みたいのですけど
(5日と7日に用事があればF, , , , ,×, ,×, …みたいな感じ)
SQL文で範囲選択して取得したデータを保持しておいて
その中に条件にあったデータが有るかをチェックする事って出来ますか?
for文で画面テーブルを作成しながら$iの値を日付に合わせて増やしていき
SQL文で一度取得したデータの中に$i(日付)と同じものが有れば
×を記入さていこうかなと考えています
お分かりになるかた、もっといい方法を思いつく方
ご教授を願えたら有り難く思います
161:nobodyさん
08/12/09 23:00:33
> ご教授を願えたら有り難く思います
「ご教授願えますか」なら兎も角、不思議な日本語。
162:160
08/12/09 23:09:26
>>161
早速ご指摘を頂き有り難う御座います
追加ですが配列を使用せずに記述をしたいと考えております
お分かりになる方、もっといい方法を思いつく方
ご教授願えますか
163:nobodyさん
08/12/09 23:15:35
このスレを教授が見てる確率は限りなく低いので
無理でないかと思います
大学で聞くのが一番早いと思うのでそちらをお勧めします
164:160
08/12/09 23:21:52
>>163
度々のご指摘ありがとう御座います
正しくは教示の様ですね
>>160>>162に関しまして
お分かりになる方、もっといい方法を思いつく方
ご教示願えますか
165:nobodyさん
08/12/10 00:15:00
>>164
SQLのクイズ出してるつもりならスレチだよ。
MySQLならgroup_concat(DATE) と group by IDを使って行を取得というのが楽
標準SQLで組もうとすると、ちょっとパズルチックになるからね。
他人が書いた答えは知ってるけど、オリジナルじゃないからググってみることをお勧めする。
個人的にはfor文で処理するより、rangeと配列、array_mapでサクッとテーブル書く方が好きだな。
ループはダサい。
でもあえて配列を使わないんなら、ORDER BY ID, DATEでクエリの結果セットを
ループしながらifとswitchでテーブル組めば普通にできる。
166:160
08/12/10 07:53:28
>>165
ご返答有り難う御座います
現在インターン中なのですが
そこで課題として従業員のシフト表を作成しています
従業員テーブルから情報を引き出して
それを元に休日テーブルから情報を引き出して表を作成しようと考えています
当初は一度配列に入れてから配列一つひとつをfor文とif文で参照しようと考えていましたが
担当の方にそのアイデアを話してみた所
配列に入れなくても出来ると一蹴されて困っていました。
一度>>165様に頂いたワードを調べて参考にしたいと思います
また別の方法が有りましたら教えていただけると
有り難く思います
167:nobodyさん
08/12/10 07:54:29
2chでアルゴリズム聞いて実装するとか嫌なインターンだなw
168:nobodyさん
08/12/10 08:13:18
いや、話を聞いてみるとよくある話。
ちゃんと説明しない嫌な担当だな。
ところで、面白い方法(拡張しないなら冗長だけど)あるよ。
配列もforループも使わない。たぶんifも最小限になる。
RecursiveIteratorIteratorっていうのがあるから、
個人イテレーターを親に日付イテレーターを子に持つようなイテレーターを
定義して、PDOをマップする。日付イテレーターのnext()は次にSQLデータの
有無にかかわらず日付をインクリメントする。
フィルターイテレーターも同時に実装して月別フィルターとか年別フィルター
とか週別フィルターとかも実装する。
テーブルソースの作成部分はデコレーターでデータをラップして文字列化
するようなものにする。
すると、
$obj = new shiftTable(array('scope'=>'month', 'target' => 12));
echo $obj;
で表が自動出力されるようなものが作れる。
169:160
08/12/10 08:34:45
>>167
グループ課題の担当している部分なのでグループ全体に
影響が出ないよう早く見当を付けたいと思い質問させていただきました
>>168
私の知識では拡張という言葉がどれ程の物をあらわしているのか分かりませんが
>>160は若干端折って記入しており、実際には×では無く
休日テーブルを書き換える為のチェックボタンが付いており
従業員が現在休みになっている日は初期画面で黒くチェックが入って表示され
画面テーブルの外部にsubmitボタンが付いています
担当の人の話では
休日テーブルから5と7という値を取得すれば配列に入れなくても
画面テーブルの5番目に表示させてから7まで空のセルをつくり
7番目でまた表示させることが出来ると言われました
それを解決しようと思い>>160の質問に至ったわけです
>>168様の方法も調べて参考にさせて頂きたいと思います
ご返答ありがとうございました
170:nobodyさん
08/12/10 08:48:49
> 休日テーブルから5と7という値を取得すれば配列に入れなくても
> 画面テーブルの5番目に表示させてから7まで空のセルをつくり
> 7番目でまた表示させることが出来ると言われました
なんというトーニャハーディング、できりゃいいんかい!って感じの考えだな。
SELECTで前回表示のレコードを取得しとくのか、forループで前回データを保存するのか
いずれにしても、表示ロジックをデータ処理に放りこむのか・・・すごいな。
そういうところでは、はいはいって言うこと聞いて逆らわない方がよさそうw
もし、フォーム要素なんかが絡むんなら>>168の方法で基本ロジックを作成して
デコレーターでラップするといいんだけど、習得には多少なりとも時間が
かかるかもしれないのでお勧めはしない。
171:nobodyさん
08/12/10 10:52:26
fromのポストでsubmitのnameの値を取得する方法を教えてください。
<input type=”submit” name="取得する値” value=”送信” />
172:nobodyさん
08/12/10 11:00:06
$_POST['取得する値']
173:nobodyさん
08/12/10 11:01:37
もしくは"送信"が限定されてるなら、array_search("送信", $_POST);
174:nobodyさん
08/12/10 11:07:56
>>173
誤解していました。
ありがとうございます。
array_search覚えました。
175:nobodyさん
08/12/10 11:29:34
少しおしえてください。
PDOでInsertをプリペアドステートメントで行うとき、値が空っぽの時、
NULLを挿入したいのですが、NULLじゃなく、''の空が挿入されます。
これってPDOのオプションで自動で''の時は、NULLを挿入することは出来ないのですか?
176:nobodyさん
08/12/10 11:34:32
どんなソースで実装したの?
177:nobodyさん
08/12/10 12:04:52
>>176
例えばこんな感じ
$id = 1;
$name = 'abc';
$tel = '03-3333-3333';
$email = '';
$sth = $dbm->prepare("INSERT INTO `test` (id, name, tel, email) VALUES (?, ?, ?, ?);");
$sth->execute(array($id, $name, $tel, $email));
この場合、$email が空になってるので、''でInsertされたと同じになって、
NULLが入りませんので、これをPDOのオプションでNULLに出来たらなと・・
178:nobodyさん
08/12/10 12:13:26
$emailをNULLにすればよろしい
179:nobodyさん
08/12/10 12:33:55
$sth->execute(array($id, $name, $tel, null));
にすれば、NULLが入るのは分かってるのですが、、それはめんどくさいですよね。。
180:nobodyさん
08/12/10 12:47:47
空文字入れたいのか、null入れたいのかの区別がつかないじゃないか。
もし空文字のときは必ずnullでいいならば、間に関数1つかませばいいべ。
181:nobodyさん
08/12/10 12:57:22
>>179
バインドメソッドで明示的に指定すれば?
182:nobodyさん
08/12/10 12:57:33
そうですよね。
かますことにします。
ありがとうございます。
183:nobodyさん
08/12/10 13:03:54
もう一つ聞いてもいいですか?
PDOとMySQL5です。
PDOを使ってSELECTをした場合、クエリーキャッシュは使われてるのでしょうか?
(PDO::MYSQL_ATTR_USE_BUFFERED_QUERYは無効にしてあります)
184:nobodyさん
08/12/10 13:13:49
MySQLのクエリーキャッシュのことを言ってるなら、MySQLの設定次第
185:nobodyさん
08/12/10 13:18:14
書き忘れましたが、PHP5.2.0です。
>>184
PHPのネイティブ関数であれば、クエリーキャッシュは効いてるですが、PDOを使うとだめぽっい。。
PHP5.2.1にアップするしかないのかなぁ・・。
186:nobodyさん
08/12/10 14:41:30
動画データFLVの1コマ目だけをjpegにして、サムネイル化して表示
をしたいのですが、どうすれば出来るでしょうか?
PHP5.2を使ってます。詳しい方いらっしゃったらおしえてください。
187:nobodyさん
08/12/10 14:48:09
>>185
PHP5.2.0ってだめなの?5.1.17ぐらいから使えるはずだけど。
まぁ、書いてるんだしそうなのかな・・・
188:nobodyさん
08/12/10 15:00:33
>>187
PHP5.2.0のPDOだとクエリキャッシュが効いてないみたいですね。
PDO::MYSQL_ATTR_USE_BUFFERED_QUERYを有効にすると効きますが、副作用があって。。
189:nobodyさん
08/12/10 18:06:24
どんな?
190:nobodyさん
08/12/10 18:38:54
LIMIT ?,? とかやるとエラーになります。
なので、LIMIT 0,10 とか LIMIT {$offset}, {$limit}とやれば良いんですけど・・。
191:nobodyさん
08/12/10 19:00:30
まだ勉強中なんですが、phpで実現可能かどうか質問させて下さい
メールを受信した後、それをHTMLとして表示させたいんです。
エンコード状態のマルチパートなメール(ソース?)があるとして、
それをHTMLとして出力するライブラリみたいなのとかありますか?
問題は画像の部分だと思っています。(どう実現するかイメージも沸きません)
具体的な使い方は調べますので、あるかどうかと、
名前とかヒント教えてもらえるとありがたいです。
ちなみに、レンタルサーバ借りて(Web/Mail/php/DB)
iPhoneから使えるWEBメールシステムを自分の為に作ってます
192:nobodyさん
08/12/10 19:05:12
PEAR Mailに受信したメールを読ませれば添付ファイルまで抽出できる。
メールサーバが立ってるなら、.forward等でphpプログラムに渡すと簡単。
他所のメールサーバーでも、POPやIMAP用の関数でアクセスすることも可能。
解釈部分はPEARが実績があると思う。
193:nobodyさん
08/12/11 01:53:18
>>191 レンタルサーバだと難しいと思うよ
194:nobodyさん
08/12/11 12:19:57
>>191
iPhoneならGmail使えば良いのに・・・
195:nobodyさん
08/12/11 12:31:14
191です
ありがとうございます
>>192
PEAR MailのPOP3でメールとってますが
画像部分を一旦保存しなきゃダメですかね~
極端な話、メールのテキストと埋め込み画像をまとめて
1つの画像に落としてくれる関数があればいいんですけど都合よすぎですね><
>>193
ネックは画像を抽出する部分とかでしょうか?
>>194
Gmailはメール入力が難ありで・・・
Yahoo!JメールはiPhone用のメール作成画面ないし・・
それと、
あるAさん宛てのメールとAさんから来たメールを抽出して
一覧で見せるようなのをイメージしてます
196:nobodyさん
08/12/11 15:16:35
>>195 画像抽出は簡単だけど、
送信されてきたメールをプログラムに渡すにはサーバの設定が必要で、
POPから取得するとCRONの設定が必要。
メール送信して、スクリプトにアクセスするならいいけど。
197:nobodyさん
08/12/11 15:47:11
特定URLに定期的にアクセスしてくれる、CRONサービスがあるから、
それを利用すればOK
198:nobodyさん
08/12/11 15:48:27
WebMailに使うならアクセス時に全部取りに行けばいいので、
cronはいらないんじゃね?
199:196
08/12/11 17:30:03
ごめん勘違いしてた。じやあIMAP関数使えば楽勝。
200:nobodyさん
08/12/11 22:26:19 nahQekTa
//↑DB接続からSELECT文実行まで↑
$perPage=10;
$index=0;
for($i = $index; $i < $index + $perPage ; $i++){
$row = $res->fetchRow(DB_FETCHMODE_OBJECT,$i);
echo $row->id;
//↓$row->***を使用した処理
}
クエリ結果$resから順次行を取り出し$row->***で取得されるデータを使って処理をしたいのですが、echo $row->idを実行してもなにも表示されません(ソース上も)。
$row = $res->fetchRow(DB_FETCHMODE_OBJECT,$i);
↑この部分がおかしいんだとは思うんですが・・・
201:nobodyさん
08/12/11 22:51:56
fetchRowで$iやめてみたら?
そのままだと$rowでbreakする必要があるかもしれないけど。
202:nobodyさん
08/12/11 22:54:53 nahQekTa
>>201
レスありがとう
本当は$indexに現在のページ数が入って$indexの時は1~10行目まで、$index=2のときは11~20行目までという風に処理をさせたいのでfetchrowに$iを使わずwhileなどで処理できないんですorz
203:nobodyさん
08/12/11 23:04:10
>>202
それ、結果セット時点でseekしといた方がいいんじゃないの?
全結果セットから、毎回行指定じゃ重いでしょ。
とはいえ、やりたいことができない理由は他にあるだろうね。
クエリが間違ってるとかない?
204:nobodyさん
08/12/11 23:12:27
>>203
レスどうもです。
まだ勉強中なのでseekっていうのが・・・・
結果セットから配列なりに格納して結果セットを開放しておくということでしょうか?
クエリのコードは
sql = "select * from table ORDER BY id DESC ";
$res =& $db->query($sql);
if (PEAR::isError($res)) {
die($res->getMessage());
}
で、他のwhileで全行取り出しした場合には上手くうごいてくれているのでクエリは大丈夫かと思うのですが・・・
205:nobodyさん
08/12/11 23:46:54
あぁ、ごめん、seekって勢いでミスったw
ところで、クエリにLIMITを含めておくわけにいかないの?
あと、fetchRowの行指定は1回だけ発動して、あとはループでいいと
思うんだけど。
あと、単にフィールド名が違うとかじゃないよね?
var_dumpとかしてます?
206:nobodyさん
08/12/12 01:30:02
普通limitだわな
207:nobodyさん
08/12/12 11:46:01 MaDVXqed
if (!is_dir($dir)) {
$rc = mkdir($dir, 0755);
でディレクトリーを作ったら所有者がwwwになります
これをuserにして作ることはできないのでしょうか?
よろしくお願いします
208:nobodyさん
08/12/12 12:32:00
そんなことができたらセキュリティホールになるでしょう。
しかし、対応としては
Webサーバーの実行ユーザーを変えるか
root権限wで実行してchownもしくは、mkdirのオプションを買うか
CGIモード+suexecで起動するか、
setuidした別のラッパーをかますか、
ま、そんなとこだろう。
209:nobodyさん
08/12/12 12:51:31
パーミッション777にしとけば困ることないお^^
210:nobodyさん
08/12/13 14:37:33
そんなことをしたらセキュリティホールになるでしょう。
211:nobodyさん
08/12/13 15:33:14
>>210
使い方次第でしょ
212:nobodyさん
08/12/13 22:52:57 6AnKxTPA
move_uploaded_fileでアップロードされたファイル保存するときに別ドライブを指定するパスの書き方がわからんorz
213:nobodyさん
08/12/13 23:02:04
そうか
214:nobodyさん
08/12/14 00:20:22
現在、Windows(XP)で自宅サーバを構築し簡単なphpを使ったサイト(システム)を運営しています。
ところが諸事情の為にレンタルサーバを借りて、自宅サーバで運営していいる物とは異なる
別のphpサイトを構築しようと思っているのですが、現在は自宅サーバで運営しているサイトは、
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
の直下に配置されたphpのみが起動する作りになっておりますが、
ASP.netの様にプロジェクトごとにディレクトリを分ける事は、出来ないでしょうか?
例)
①C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\自宅サーバ\index.html
②C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\レンタルサーバ\index.html
要するに開発しているサイトによってディレクトリを分けたいです。
215:nobodyさん
08/12/14 00:21:45
rewrite使えば?
216:214
08/12/14 00:38:16
ぐぐってみたところ
動的ページを静的ページにする (mod_rewrite)
というページがトップに表示されたのですが、いまいち私のやりたい事は実現出来なさそうです。
私の認識が誤っているだけかもしれませんが、その「rewrite」というのは
一体何なのでしょうか?
もし参考になうサイトをご存知でしたらお教え願います。
217:214
08/12/14 00:52:09
自己解決しました。
mod_rwrite
という方法を使わなくてもディレクトリをもう一つ用意するだけで事足りました。
218:212
08/12/14 01:50:36
>>213
もし知ってたら教えてくだされorz
219:nobodyさん
08/12/14 01:51:30
いいよorz
220:212
08/12/14 03:24:13
>>219
かたじけないorz
221:212
08/12/14 12:58:16 vrT8sAoj
(´・ω・`)
222:nobodyさん
08/12/14 13:21:34
教えてあげようか?
223:212
08/12/14 13:23:01
>>222
(*´д`;)はいっ
224:nobodyさん
08/12/14 15:06:54
D:/
とかじゃだめなん?Windowsでやった事ないから勘だけど
225:nobodyさん
08/12/14 15:11:30
で、でぃーどらいう゛っ?
226:nobodyさん
08/12/14 16:29:22
>>224
ちょと試してみます
227:nobodyさん
08/12/14 16:32:11
>>224
これでいけました!!
盲点だったorz
228:nobodyさん
08/12/14 17:42:47
ほうほう,それで?
229:nobodyさん
08/12/15 06:26:47
file_put_contents -- 文字列をファイルに書き込む
連続して fopen() , fwrite() , fclose() をコールすることと等価です。
この関数ってどうなの?
230:nobodyさん
08/12/15 06:49:26
は?
231:nobodyさん
08/12/15 06:52:34
短く書けるから便利といえば便利だがPHP4では使えない
PHP5なら好きなほう使えばいい
232:nobodyさん
08/12/15 12:09:28
PHP5つかってます。
youtubeみたいな動画共有サイトを作りたいのですが、動画のアップロードは出来るのですが、
アップロードされた動画をサムネイルで表示する方法がわかりません。どなたか詳しい方いらっしゃったら
教えてください。
233:nobodyさん
08/12/15 12:27:15
>>232
それよりも作るのはかまわないけど公開するならインフラ周りのこと考えろよ?
まわりに迷惑かけるのだけはやめてくれな
234:nobodyさん
08/12/15 22:35:55
>>233
インフラを考えずに作ったって糞遅くなるのは目に見えてるよw
しかも維持費にどれだけ金が掛かると思ってるんだろうね。
一流のエンジニアが集まって作られているYouTubeですらあれだけ
重いのに。
235:nobodyさん
08/12/15 22:42:38
>>234
> インフラを考えずに作ったって
それを言うなら、考えて、では。
236:nobodyさん
08/12/15 23:16:47
インフラはAmazon EC2、S3とかがオススメだな
回線速度の面で微妙かもしれんが
237:SF4マニア
08/12/16 01:03:15
本職ではクラサバをメインに開発しているPGですが、
趣味で2年程前からphpでWEBシステムを作っています。
私は、実務でphpを使ったWEBシステムの構築は行った事がないのですが、
実務ではどういった開発環境でphpを使ったWEBシステムの構築を行っているのでしょうか?
因みに、自分はsakuraエディタだけです。
正直、画面のレイアウト等プログラミング以外の部分で時間を取られており、
ASP.net(VS)での開発と比べて無駄に工数が掛かってしまう感が否めません。
皆さんは、どういった環境でphpWEBシステム(サイト)を構築しているのでしょうか?
開発工数を大幅に削減出来るお勧めソフトがあればぜひお教え願います。
238:nobodyさん
08/12/16 01:10:54
>>237
普通はデザイナーを使うと思うが・・・
239:nobodyさん
08/12/16 01:19:53
テキストエディタからレベルアップしてけ
240:nobodyさん
08/12/16 01:22:14
>>238
という事は、画面の作成はデザイナに任せてシステム部分だけをphp(マ)が開発していいるのですか?
>>239
オススメのソフトはありますか?
VSのデザイナ画面は個人的に非常に使い易いです。
241:nobodyさん
08/12/16 01:22:54
All-in-OneのPDTいれたらhtmlもデザイナでいじれるから楽チンや
242:nobodyさん
08/12/16 01:23:38
>>240
EmEditorいいよ
243:nobodyさん
08/12/16 01:41:30
>>241 >>242
参考にさせて頂きます。
244:nobodyさん
08/12/16 01:51:06
デザイナーというのは、人のこと?
それとも、デザイナーという、ソフトのこと?
245:nobodyさん
08/12/16 02:13:10
人名
246:nobodyさん
08/12/16 02:20:37
>>244の意訳
ボタン配置とかして直感的にデザインしたものをコード変換する機能のことか、
職業としてのデザイナーのことかどっちなの?
247:nobodyさん
08/12/16 03:06:22
>>244
238は職、241は機能
248:nobodyさん
08/12/16 20:12:46 XMobQjfA
>>110で質問した者ですが
>>112さんの教えてくださった
$url = array(1 => "リンク1", 2 => "リンク2", ....
uksort($url, "cmp");
print_r($url);
のとこを、
$url = array(apple => "リンク1", banana => "リンク2", ....
uksort($url, "cmp");
print_r($url);
みたいにidを数字ではなく文字にしたい場合どう書けば同じように動作するか教えてほしいです
宜しくお願いします。
249:nobodyさん
08/12/16 20:19:24
応用能力皆無なのな
250:nobodyさん
08/12/16 20:46:30
>>248
function中の$a - $bのところ、strcmp($a, $b)に変える
251:nobodyさん
08/12/16 21:20:01
>>250
ありがとうございます
説明不足ですみません。やってみましたがこれはアルファベット順で並ぶのでしょうか?
キー順でソートしたいのです。
一応自分なりに調べてはいるのですが
foreach ($url as $key => $value)
なんて文をどこかへ追加って感じで方向は合っているでしょうか?
252:nobodyさん
08/12/16 21:22:18
応用能力皆無なのな
253:nobodyさん
08/12/16 21:25:19
>>251
ちなみに並ぶけどさ、やってみたんなら並ぶかどうか確認できるでしょ?
配列の並べ替えが終わったら、foreachでもeachでも好きなループ組めば?
254:nobadyさん
08/12/17 17:32:12
質問があります。PHP5でflvファイルの最初のコマを取得して、画像としてサムネイル化
する事って出来るのでしょうか?レベルが高いかも知れませんが、詳しい方がいらっしゃったら
教えてください。
255:nobodyさん
08/12/17 17:42:39
なんかこないだからその質問を何回も見るんだけど。
256:nobodyさん
08/12/17 17:52:54
とりあえず環境書いてないから適当に答えるけど
ffmpegインストールしてphpから呼び出して使えば出来ると思う。
257:nobodyさん
08/12/17 18:01:15
ググれば簡単に出てくるのに
258:nobodyさん
08/12/18 05:46:38
教えてください。
PDOでPostgreSQLにアクセスしています。
ところが、全部PDOメソッドだけで実現できないことがあり、
PDOとpg_*関数を混在使用するハメになりました。
そこで質問ですが、
PDOオブジェクトで、pg_*を使うためのデータベースハンドル
を得ることはできるのでしょうか?
できないのなら、PDOでのDB接続とは別に、pg_connectで
DB接続する必要があるということでしょうか?
259:nobodyさん
08/12/18 07:10:30
実現できないことって何?
260:nobodyさん
08/12/18 09:11:27
>>259
PDOで、PostgreSQLのbytea型に格納してあるバイナリデータを
読み出そうとすると、不具合があるようなのです。
(公式情報ではないので自分の勘違いかもしれませんけど)
そこでほとんどの処理はPDOで行い、bytea型のR/Wのみ
pg_*関数を使いたいと思っています。
(pg_escape_bytea()とか)
261:nobodyさん
08/12/18 09:45:27
「PDO」つったら、普通はPECL::PDOの意味?
262:nobodyさん
08/12/18 13:15:36
標準クラスのだろ
263:nobodyさん
08/12/18 17:34:01
URLの最後が文字列にするにはどうしたらいいですか?
具体的には
URLリンク(test)
のようなものを作るにはどうしたらよいですか?
264:nobodyさん
08/12/18 18:26:00
>>263
mod_rewrite
265:nobodyさん
08/12/18 19:28:42
>>264
ありがとうございました。
266:nobodyさん
08/12/20 19:15:51
テキストボックスでセッションに入れた後、確認画面で表示させてみると
「ソ」と「\」を入力した場合には「\」がどんどん追加増加されるのですが
原因がわかりません。
以上の問題の解決の仕方や、検索でSQL文やPHP言語やHTMLを入力された場合の
表示にバグを発生させない方法をご存知の方、どうか教えて頂けないでしょうか
267:nobodyさん
08/12/20 19:18:52
>>266
magic_quote_gpc
268:nobodyさん
08/12/20 22:06:37 maii3k3G
pagerで
1 2 3 4 5
ではなく
0 1 2 3 4
とゼロから始めるにはどうすれば良いでしょうか?
269:nobodyさん
08/12/20 22:21:47
>>267
ありがとうございました
270:nobodyさん
08/12/20 23:15:27
>>268
何のpagerだよ
質問の仕方にも程があるぞw
271:nobodyさん
08/12/20 23:16:59
PEARじゃね
俺なら迷ってる時間があったら丸ごと全部再実装する
272:nobodyさん
08/12/20 23:18:25
全部再実装とか、よっぽど暇なのか。
273:nobodyさん
08/12/20 23:18:35
結果を-1するかソースで-1すればいいじゃん
274:269
08/12/21 01:06:19
すみませんでした PEARのPagerです。
>>273さんのやり方で例えば
URLリンク(www.phpbook.jp)
このページではどこで-1すれば良いでしょうか?
275:nobodyさん
08/12/21 01:23:54
$naviの中かgetLinksメソッドの中
276:269
08/12/21 01:37:38
>>275
ありがとうございます。やってみます!
277:nobodyさん
08/12/21 12:44:01
PEAR::Pagerの出力はHTMLタグだからいじりづらいんだよ。
入力はこっちでいじればいいが、出力はgetLinks()の結果を正規表現とかで置換するしかない。
どっちかっつーといじりたいのは変数の方じゃなくて画面表示の方だろうしな。
インターフェイスはおおむね決まってる(パクる)から、残りの作業は実装だけだしな。
278:nobodyさん
08/12/21 12:51:30
別にソースいじればいいじゃん
279:nobodyさん
08/12/21 18:50:29
HTMLからURLで変数をもらいその変数でrequireするtxtファイルを変え
ページの管理を楽にしようと思っているのですが
馴れていない人がやると、まずいことはありますでしょうか
280:nobodyさん
08/12/21 18:58:59
ぐぐれ
281:nobodyさん
08/12/21 19:06:00
>279
txtをrequireする、の意味がまったく分からん。
ファイル名に「../../../」とか指定されると、ヤバいファイルを開かれる危険がある(ディレクトリ・トラバーサル脆弱性)。
総じて、予期しないファイルを開かれないような対策が必要になる。
数種類しかないなら、決まった文字列以外は許可しないようにする。
たくさんあってそうするのが面倒なら、「/」を入力されたらエラーにする。
hoge.txtを開きたいなら「hoge」の部分だけ入力させる、などの対策が必要。
ファイル名は自分で決められるんだし、[0-9a-Z-_]あたり以外の文字列が来たら問答無用でエラーになるようにするのが無難だな。
282:nobodyさん
08/12/21 19:34:34
>>281
ありがとうございます
HTMLで記述したファイルの拡張子をPHPに変え、
任意の部分にrequireでtxtファイルを読み込むと
メニューなどの管理が楽になると某サイトで読みました
それをメニューではなく内容に変えれば、
外観や増えていくページの管理が楽になるのかなってことで
初心者ながら、勉強もかねて質問をさせていただきました
自分の決めた文字列だけを対象にするということで
switch ((string)$page):
case 'log1':
case 'log2':
略
break;
default:
echo "ファイルが見つかりません";
endswitch;
こういった記述でよろしいのでしょうか
283:nobodyさん
08/12/21 19:45:19
勉強なら自分で調べろやボケ
284:nobodyさん
08/12/21 20:02:13
>>283
勉強は兼ねてるだけだろ?よく読めよ
285:nobodyさん
08/12/21 20:04:15
>>283
頼むからコテつけてくれ
286:nobodyさん
08/12/21 20:04:16
caseを使えば、たぶん安全。
コードがないとなんとも言えんわな。
やってみて、動くコードができてから来たほうがいい。
何もやらずにいきなり聞く姿勢は歓迎されんし。
287:nobodyさん
08/12/21 20:09:44
これでいいんでしょうか
どう書けばいいんでしょうか
じゃ勉強の糞の足しにもなりゃしねぇよカス
288:nobodyさん
08/12/21 20:12:29
>>287
おまえなんでこのスレにいんの?
いやむしろ何のために生きてんの?w
289:nobodyさん
08/12/21 20:27:01
>>287
スレの趣旨すら分からないなら口出すな
290:nobodyさん
08/12/21 20:38:48
>>283
努力します
>>286
中途半端でした、すみません
一応、問題なく動いたので評価をお願いしたいです
log001.txt
<b>表示されました</b>
index.html
<A Href="pagelog.php?log=log001">log1へ</A>
pagelog.php(head略)
<body>
<?php
$_GET['log'];
switch ((string)$log):
case 'log001':
case 'log002':
require($log.".txt");
break;
default:
echo "ファイルが見つかりません";
endswitch;
?>
</body>
291:286
08/12/21 21:01:57
>290
それが動く事に少なからず衝撃を受けた。
requireやincludeは、基本的にPHPプログラムを読み込むためのもの。
それだとたぶん、txtの中にPHPプログラムとして解釈可能な文字列があると、実行されてしまう。
単純にテキストファイルの中身を読み込む場合、file_get_contents()を使ったほうがいい。
動くなら問題ないっちゃあないんだが…
292:nobodyさん
08/12/21 21:07:15
って、ああそうか、よく考えたら動いて当たり前か。
「評価されると危ないので避けたほうがいい」という意見は変わんないけどな。
txtは自分が編集するから、安全といえば安全なのだが、無駄な危険の芽は摘んだほうがいい。
いつの日かうっかりtxtにexit();とか書き込んだらエラーになるし。
293:nobodyさん
08/12/21 21:39:17
>>292
うっかりが起きないとも限らないので
file_get_contents()について調べてみます。
勉強になりました。
ありがとうございました。
294:nobodyさん
08/12/21 21:45:08
>>290
まぁ、動いているので問題ないけど、
コーディングのマナーとしてはよろしくないかもね
・require等の中に変数は入れない方がいい
・比較するときにキャストして使う時にキャストしないというのは問題になることがある。
前者は設定によってはリモートでのコード実行につながるから
後者は比較が通っても、問題のある変数で実行する可能性があるから
295:nobodyさん
08/12/21 21:53:40
>>292
なんねーよ
echoと同じだ
296:nobodyさん
08/12/21 22:28:16
>>294
参考になります
まだまだ馴れてない部分が多いので基礎から覚えるために
やはり、書籍を一つ買おうと思います
297:nobodyさん
08/12/21 22:58:47
うむもう二度と来ないでくれ
298:nobodyさん
08/12/21 23:00:10
>>297
来なければ、いいだけじゃね。
299:nobodyさん
08/12/22 18:00:09
プログラミング初心者だけどPHP難しすぎて投げそう(';ω;`)
2週間位で基礎を学ぶには何したら良いんですか(';ω;`)ウォウォ…
300:nobodyさん
08/12/22 18:02:13
教えてくれそうな男に体でも売ればいいんじゃね
301:nobodyさん
08/12/22 18:06:33
もうウンコして寝込むしかねぇ・・・
302:nobodyさん
08/12/22 18:21:33
マニュアル嫁
303:nobodyさん
08/12/22 18:26:34
どっかから小さめなスクリプト落してきて、
「なんで?なんで?なんでこうなるの?」と思いながら丁寧に読んだり、
チョっとした機能を追加してみたりして、
いろいろもがくといいんじゃないだろうか。
304:nobodyさん
08/12/22 20:08:10
初心者が読めるようなちょっとしたスクリプトは大抵がPHP4時代の糞CGIで変な癖がついたりする罠。
グローバル空間にexplodeしてたりするスクリプトが多すぎる。
305:nobodyさん
08/12/22 20:09:08
explode→extract
306:nobodyさん
08/12/22 20:09:52
>>304
それがどうしたの。
307:nobodyさん
08/12/22 20:18:07
んなの読まなきゃいいだろ
308:nobodyさん
08/12/22 22:15:31
>>299
初めてのプログラミングがPHPで、配列/連想配列でこけたけど、しばらくしてからやってみたらすぐ理解できた。
あんまり根詰めないで気楽にまったりやるといいよ。
読むだけじゃなくて手も動かすといい。
サンプル丸写しして、いろいろ自分で弄ってみるんだ。
エラー出ればメッセージ出て何が原因かすぐわかるしね。
309:299
08/12/22 22:16:58 W3OrxKsT
>>303
どっかから?
どっかから?そのどっかから?はどっかから?
つまり僕が言いたいのはどっかから?なんです。お願いします。
310:299
08/12/22 22:39:19 W3OrxKsT
>>308
( ´_ゝ`)フーン
「どうもありがとう」って言っといてだってお兄ちゃんが
妹より
311:nobodyさん
08/12/22 22:51:01
で、どう書いたら>>304さんに変な癖がついてると言われない書き方なのよん
正しい書き方教えてくりっ
312:nobodyさん
08/12/22 22:59:57
PHPの公式マニュアルで「非推奨です」「危険です」と書かれている書き方を全て避ける。
313:nobodyさん
08/12/22 23:00:21
変な癖が付いてると言われなければいいのか
314:nobodyさん
08/12/22 23:04:23
>>304 みたいな奴には何を見せても重箱の隅つつかれるよね。
スルーでいいとおもう。
315:nobodyさん
08/12/22 23:15:14 zcPu3Ss9
PHP4用の開発ノウハウってのがあって、これは今となってはバッドノウハウ。
PHP5のみサポートの有名なFWで開発してみて、動いたらソースを読むのが吉
316:nobodyさん
08/12/23 00:46:09
ノウハウ以前のレベルだろうに
317:nobodyさん
08/12/23 02:41:59
いまだに共用鯖じゃPHP4主流だもんなあ。
318:nobodyさん
08/12/23 03:56:34 207JnJAg
JavaScriptの"for~in"構文をPHPで書くとどうなるのでしょうか
PHPはあまり分らないもので
319:nobodyさん
08/12/23 04:00:08
>>299
漏れは先にperlを2ヶ月やってから
PHPに移動した。
320:nobodyさん
08/12/23 04:13:36
>>318
マニュアル
321:nobodyさん
08/12/23 13:04:10
>>318
$array=array('name'=>'aki','age'=>23,'karesi'=>'futsu');
foreach($array in $key=>$item) {
echo "$key $item\n";
}
322:nobodyさん
08/12/23 13:54:23
単にforeach文て言えば済むじゃねぇかw
323:299
08/12/23 17:39:32
>>319
何でですの?教えてごらんなさい
324:nobodyさん
08/12/23 17:43:37
ご先祖様だから
325:nobodyさん
08/12/23 18:14:25
ご先祖様はCだろw
326:nobodyさん
08/12/23 18:37:45
そこまで戻る必要は無い
ってか、Cは却って難しい
327:nobodyさん
08/12/23 20:41:02
SQLite3ってPDOってやつを使ってアクセスするんですよね
マニュアルにあるSQLite3ってやつとは何が違うんでしょうか
328:nobodyさん
08/12/23 20:45:19
別にPDOじゃなくてもアクセスできるけど
329:nobodyさん
08/12/23 21:06:01
なるほど
ググってもPDOのことしか見当たらずそこからマニュアルに流れ着いて
SQLite3文?って物があるのを知ったのでどういった違いがあるのかなと思ったのですが
どっちを使っても構わないってことでしょうか
330:nobodyさん
08/12/23 21:06:50
うん
331:nobodyさん
08/12/23 21:19:15
わかりました
どちらがいいのかはわかりませんが、せっかくなのでSQLite3も使ってみます
332:nobodyさん
08/12/23 21:44:59
DBっていうのは、MySQLとかSQLiteとかPostgreSQLとかOracleとか、似たようなのがたくさんある。
元々はそのそれぞれに対して、よく似てるけどちょっとずつ形の違う関数がいっぱいあった。
で、それが不便だからって事で、「同じ書き方でどれにでもアクセスできるような仕組みを作ろう!」となった。
それがPDO。
PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、PDOクラスをnewしてるところだけ書き換えれば普通に動く。
また、PDOひとう覚えれば、どのDBでも使えるようになる、というメリットもある。
333:nobodyさん
08/12/23 21:50:29
普通DSNを書き換えるんだろ
334:nobodyさん
08/12/23 21:50:51
じゃあ自由度は下がるってことでFA?
335:nobodyさん
08/12/23 21:57:29
ひとう → ひとつ
これだけだとバランス取れないので、一応デメリットも。
全DBでなるべく共通の操作を提供する、という仕組みのため、一部のDBに固有の機能が使えなかったりする事がある。
よくある話だと、MySQLの持続的接続が使えなかったりな。あと、パフォーマンスでもPDOは若干劣る。
個人で使う最大のメリットは、プリペアドステートメントのサポートだと個人的に思う。
SQLインジェクションの危険性をほぼゼロにできる上に、プログラムの可読性も上がる。
336:nobodyさん
08/12/23 21:58:54
> よくある話だと、MySQLの持続的接続が使えなかったりな。
それってパフォーマンスに影響するんだっけ?ベンチとった?
337:nobodyさん
08/12/23 22:14:41
PDOは文字コード変更用の関数がないからなー……。
SET NAMES 危ないって聞くし。
338:335
08/12/23 22:49:27
>334
んな事いったら、sqlite関数やmysql関数を使ってしまえば、将来のDB変更の自由度が失われるわけだが。
俺は自由度や性能云々以前に、DB依存のコードがそこら中にあるのを気持ち悪いと感じる。そんなものはどっかで隠蔽されるべきだ。
(実際問題、DBを置き換えるなんて事態は普通ないだろうけどな)
339:nobodyさん
08/12/23 22:58:50
>>338
あたまでっかちおっさんどっかいけよ
340:nobodyさん
08/12/25 05:23:16
>>339
335, 338の発言を理解できないなら発言するな。
339的な発言は、このスレの害虫。
341:nobodyさん
08/12/25 05:57:49
>>PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、
>>PDOクラスをnewしてるところだけ書き換えれば普通に動く
SQL文自体がDB固有になるだろうから、現実的にそれはあり得ないんじゃないか?
(標準SQLだけで書かないでしょふつう)
俺的なPDOのメリットは、DB関連関数をどのDBにも共通で使えるため開発の学習量を
減らせること。これはソースコードの可読性の向上、メンテ性の向上にもなる。
342:nobodyさん
08/12/25 18:01:58
標準SQLだけで書かないのが普通という前提なら、共通で使える部分の学習量なんてほとんど0じゃないか?
343:nobodyさん
08/12/25 20:20:04
DBを変更する予定があるとき、
単純にPDOだけで実現できるわけじゃぁないが、
PDOで標準SQLだけを使うか、
PDOよりも抽象化したFWを使うわけで、
素の関数を使うよりは汎用性が高い。
どっちの言うことも大きく間違っちゃいないわな
344:nobodyさん
08/12/29 23:28:23 hqhRjo69
オブジェクトのメソッド名とプロパティ名の一覧ってどうやって取得したらいいんでしょうか?
345:nobodyさん
08/12/29 23:37:49
リフレクション
346:344
08/12/30 12:21:58
>>345
有り難うございます
おかげで3週間越しの問題が解決しました
本当に有り難うございます
347:nobodyさん
08/12/31 11:35:34
phpの質問かJavaScriptの質問か迷ったのですが、ボタン(button)がクリックされた時に
確認用のダイアログを出すにはどうすれば良いでしょうか?
実行しますか?
【OK】 【キャンセル】
※ダイアログを表示し【OK】が押された場合のみ
submit処理を行ういたいです。
348:nobodyさん
08/12/31 11:47:59
>>347
超JavaScript
ググれば死ぬ程出てくる
一番最初に引っかかったページ URLリンク(promptbox.jp)
お年玉くれw
349:nobodyさん
08/12/31 12:38:49
>>348
ありがとうございます。
でもお金ないです。。。
350:nobodyさん
08/12/31 12:39:59
つ⑩
351:nobodyさん
08/12/31 13:25:47
つ⑤ 御縁がありますように。
352:nobodyさん
08/12/31 13:30:12
っ⑨
353:nobodyさん
08/12/31 16:42:47
htmlかphpかわからないのでこちらで質問です。
formのプルダウンメニューの値を送信ボタンで渡すのはわかるのですが
プルダウンで選択しておいてリンクをクリックしたときにその値を一緒に
送るような使い方はできるのでしょうか。
ようはメニューでレイアウトの種類を選択して、リンク先をそのレイアウトで
表示させるといったことをしたいのですが。
354:nobodyさん
08/12/31 17:24:24
php関係無し
355:nobodyさん
08/12/31 18:25:42
そうですか、phpで操作できたらよかったんですが。
その後ググってるとJavaScriptでメニューの値が取得できるようですので
これとonClickだかでどうにかできるのかなってことでJSはわからないんですが
少し勉強してみようとおもいます
スレ違い失礼しました。
356:nobodyさん
08/12/31 18:29:31
JavaScriptのほうが最適ではあるだろうけど
工数増えるけどPHPでできないこともない
まぁガンガレ
357:nobodyさん
08/12/31 18:57:38
素直にやるならJavaScriptだろうな。
プルダウンを変更した時点でリンク先を書き換えるか、クリック時にフォームのsubmitイベントを呼び出すか。
358:nobodyさん
08/12/31 18:59:09
>>353
リンクにonclickといれてsubmitさせてやればいい
359:nobodyさん
08/12/31 19:01:23
俺ならselectが変更された時点でJavaScript経由でcookieに表示設定を放り込む。
一度選択したら2回目以降は覚えていて欲しいだろうからな。
360:nobodyさん
08/12/31 19:49:56
URLに数字等を入れる事により1つのphpページ画面をそのパラメータによりページの内容を
変えたいと思います。
どうすれば同一phpページをパラメータURLを指定する事により表示内容を変更する事が出来ますか?
URLリンク(www.test.php=1234)<)
361:nobodyさん
08/12/31 19:52:15
httpのクエリストリングから調べろ
362:nobodyさん
08/12/31 20:01:42
>>360
URLリンク(www.example.com)
こういう形なら$_GET['page']で1234が取得できるから
これを使って切り替えれば良い
ただしpage=1234の1234は誰でも値を入れる事ができるから
チェック等は必ずするように
363:360
08/12/31 20:14:49
>>361
ヒントをありがとうございます。
>>362
詳しくご解説頂きありがとうございました。
早速「ガキ使い」を見ながらプログラミングしてみようと思います。
364:nobodyさん
09/01/03 12:58:05
phpでシステム開発をする場合には通常次の階層の直下に*.phpファイルを置いて
動作確認を行いますよね?
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
しかし、1つのPCで複数サイトの開発を行う場合には、次の用にフォルダを切った上で
開発を行っているのですが、この方法は正しいですか?
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site1
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\site2
※要するに動作確認をする場合には次の用にしなくてはならないので。(まっ、これしか方法は無いかな?)
URLリンク(localhost)
URLリンク(localhost)
365:nobodyさん
09/01/03 13:04:40
hosts にサイト名追加して、VirtualHost つかうとかもあるな。
366:nobodyさん
09/01/03 13:12:49
俺はZF使ってるからmod_rewrite
367:nobodyさん
09/01/03 13:20:37
使ってれば偉くなった気になるんですね。わかります。
368:nobodyさん
09/01/03 13:31:35
お前は何を言ってるんだ
369:nobodyさん
09/01/03 13:31:42
俺も毎日ちんこ使ってるので偉くなった気になっています。
370:nobodyさん
09/01/03 13:45:12
>>365
LinuxじゃないとVirtualHostは使えないのではないですか?
それともWindows環境でも出来るのですか?
>>366
取り敢えず、
URLリンク(tech.bayashi.net)
のサイトで勉強してみようと思います。
実務でphpを使ったWEBサイトの開発とかした事が無いのですが、
実務でphpで開発を行う場合にテキストエディタだけを使っているプロジェクトは少ないですか?
あと、複数サイトの開発を1台のPCで行う場合に、>>364みたいな感じで行うのは
能率が悪いでしょうか?
371:nobodyさん
09/01/03 13:53:14
>>370
べつにWindows環境だってIPベースでも名前ベースでもできるさ
372:nobodyさん
09/01/03 13:54:52
Apacheの話題はスレ違い
373:nobodyさん
09/01/03 13:57:42
>>370
人の話を疑うぐらいなら聞くな >>364の形で運用するわけじゃないんならダメだろ。 >>365がFA
374:nobodyさん
09/01/03 14:00:48
おれは常にテキストエディタ(Vim)と過去の開発資源(ライブラリ)だけで事足りてる
375:nobodyさん
09/01/03 14:19:04
んんんだこのgdgdはw
複数サイトをプロジェクト(複数人数)でやるんだから、ファイルのアップロード方式の方が重要。複数の人間がftpでアップするのなら、それを管理しやすい方法で
あと、htdocs/aaa/bbb/ とかでやった場合、mod_rewrite の RewriteBase が後でアレな時あり
プロジェクトを管理できれば良いので、エディタは何でもいい
376:nobodyさん
09/01/03 14:38:30
複数の人間が更新するならCVSとか使うかなあ
サイト側もcheckoutするのだ
377:nobodyさん
09/01/03 14:55:16
checkoutじゃなくて、exportな
378:nobodyさん
09/01/03 14:59:27
>>371 ~ >>375 あざーす。
ぐぐって勉強してみます。
379:nobodyさん
09/01/03 15:57:48
Subversionを使っているのに何故かデプロイがftp経由ファイル単位なうちのプロジェクトは滅ぼしていいと思う。
>370
同時にいじるなら、何も考えずにやってるとアクセスログが同じファイルになってしまうので、やりづらいと思う。
そのままでもできるけど、バーチャルホストの方がエラーログの切り分けが簡単。
あとは両プロジェクトで同名のクッキーを使った場合衝突が発生する点かな。セッション周りが特に危険。
あと、本番環境に持っていく際に、相対リンク/絶対リンクとか周りで絶対いくつかリンク切れが発生すると思う。
以上のような点を気にしなくて良いのならば、そのままでもいいんじゃない?
380:379
09/01/03 16:44:44
ああ、そもそもセッション変数が共有されてしまう点の方が問題か。
クッキーは発行パスを適切に指定すれば混ざらないが、本番環境への移行の際に適切な修正をする必要がある。
381:nobodyさん
09/01/12 12:35:49
パール互換の正規表現についてなのですが、
preg_matchなど公式マニュアルに出ている内容については理解したのですが、
Perlとは微妙に違うリテラルやトークンの使い方について詳しく説明してある
ドキュメント等はないでしょうか?
382:nobodyさん
09/01/12 13:43:52
PHPって確か鬼車使っているんだっけ
だとしたら
URLリンク(www.geocities.jp)
補記 3. Perl 5.8.0と比較して存在しない機能
+ \N{name}
+ \l,\u,\L,\U, \X, \C
+ (?{code})
+ (??{code})
+ (?(condition)yes-pat|no-pat)
* \Q...\E
但しONIG_SYNTAX_PERLとONIG_SYNTAX_JAVAでは有効
383:nobodyさん
09/01/12 15:24:30
ありがとうございます!
参考にメモさせていただきました
384:nobodyさん
09/01/13 02:11:38
くだらない事なんですが、一つ気になっている事があります。
PEAR::Logでログでログ管理をしようと思っているのですが、
手元の参考書やWebで調べると、解説のサンプルプログラムが
<?php
require_once 'Log.php';
$file = &Log::factory('file', 'out.log', 'TEST');
$file->log('ログ内容');
?>
みたいな場合が多いのですが、この場合Log::factoryで作成した
インスタンス(?)の$fileは明示的にcloseか何かしなくて言いのでしょうか?
例えば、普通のファイル操作ならfopenしたら最後はfcloseをするので、
Log::factoryもそれに該当する操作が必要ないのか?と気になりましたので・・・・
385:nobodyさん
09/01/13 03:08:48
マニュアル嫁
386:nobodyさん
09/01/15 22:20:46
テキストファイルを読み込んで一行ごとに配列に入れ
配列を検索して特定の文字が含まれていた場合そのインデックスを返す
っていうのをやりたいのですが、わかりません。よろしくお願いします。
インデックス1を返して欲しいんですが、何も返ってきません。
***テキストファイルの中身*******
群馬県
栃木県
茨城県
埼玉県
東京都
****************************
<?php
//ファイルを開く
$filename="test.txt";
//配列に代入する
$f1=file($filename);
//特定の文字が含まれる要素を探す
$word="栃木県";
$key=array_search($word,$f1);
print($key);
?>
387:nobodyさん
09/01/15 22:27:13
返り値
ファイルを配列に入れて返します。 配列の各要素はファイルの各行に対応します。改行記号はついたままとなります。 失敗すると file() は FALSE を返します
388:nobodyさん
09/01/15 22:28:50
$word="栃木県\n";
389:nobodyさん
09/01/15 23:00:30
>>387
>>388
レスありがとうございます。
この検索の場合は完全に一致するものしか検索できないんですね。
例えば
$word="玉";
とした場合に
埼玉県のインデックスの3を返すというのは無理なんでしょうか?
390:nobodyさん
09/01/16 00:17:00
>>389
データーベースに入れて
「like」検索をすればできる。
391:nobodyさん
09/01/16 07:02:26
>>389
DBなんて使わなくてもstrposでできる
392:nobodyさん
09/01/16 15:17:30
>>391
strposって、最初に出てきた位置を返す関数じゃない?
「あるかどうか」を調べる関数のほうがいいんだけど。
393:nobodyさん
09/01/16 15:19:44
最初に出てくる=ある
394:nobodyさん
09/01/16 16:25:58
strposで位置取得
そこまでに\nがいくつあるか
ウマー
395:nobodyさん
09/01/16 23:23:04
俺なら何も考えず配列に格納→foreachでループ→中でstrpos
>392
strposは文字列検索としては最速の部類。
他の選択肢はpreg_match位しかないが、preg関数とstr関数じゃお話にならんほど速度が違う。
396:nobodyさん
09/01/16 23:24:33
説得力を持たせるためにベンチマークを載せてはどうかね?
397:nobodyさん
09/01/16 23:28:16
自分でやれ
398:nobodyさん
09/01/17 11:25:45
>>396
395ではないが暇なので作ってみた
$imakara_ikude = microtime(TRUE);
$dokowo_sawatte_hosiinya = '検索対象にしたい任意の文字列';
$kokoga_eenka = '検索したい任意の文字列';
$kokoga_eenka_pattern = '/' . preg_quote($kokoga_eenka, '/') . '/';
$itte_itte_ikimakuru = 100000;
for ($i = 1; $i <= $itte_itte_ikimakuru; $i++) {
if (strpos($dokowo_sawatte_hosiinya, $kokoga_eenka) !== FALSE) {}
// if (strstr($dokowo_sawatte_hosiinya, $kokoga_eenka)) {}
// if (preg_match($kokoga_eenka_pattern, $dokowo_sawatte_hosiinya)) {}
}
$doya_yokattaka = microtime(TRUE) - $imakara_ikude;
echo $doya_yokattaka;
■結果 - Windows XP(ペン4 3.2GHz)+XAMPP(PHP5.2.2)
strpos():0.060ぐらい
strstr():0.052ぐらい
preg_match():0.28ぐらい
strstr()の方が微妙に早いが、公式マニュアルでstrstr()の説明見ると
strpos()使えカスと書いてるので俺は素直にstrpos()使う。
399:nobodyさん
09/01/17 11:38:45
>>392
というわけで、
if (strpos($str, 'search') !== FALSE)
を使え。必ず「!== FALSE」にするように。理由は説明ダルいからマニュアル見れ。
>>389
$index = FALSE;
$word = '玉';
if ($ary = file('test.txt')) {
foreach ($ary as $key => $val) {
if (mb_stripos($val, $word) !== FALSE) {
$index = $key;
break;
}
}
}
var_dump($index);
strpos()はマルチバイト対応してないので、mb_系使うように。
400:nobodyさん
09/01/17 11:43:51
>>399で書き忘れたが、大規模検索なら素直にDB使う。
>>384
気持ち悪いなら明示すりゃいい。というか、色んな意味で明示したほうが良いと俺は思う。
phpは、リソースのオープンは明示しなくても自動的に閉じてくれる。(ファイルであれDBであれ)
>>382
PHP5から鬼車。mb_ereg()系で。
preg_match()では使われてないのでは?
401:nobodyさん
09/01/17 11:53:04
お前らJavaとPHPのスキルを比率で示してくれ。
俺の場合
Java : PHP = 5 : 5
ただ、レンタルサーバ代がJavaだと高いから力配分を
1:9程度に持って行こうかと思ってる。
402:nobodyさん
09/01/17 12:00:27
>>399
最初にifしてるのはなんで?
403:nobodyさん
09/01/17 12:05:09
>>402
$a = array('a', 'b', 'c');
foreach ($b as $k => $) {}
実行すれば分かる
404:nobodyさん
09/01/17 12:06:47
>>398
変数ワロタwww
405:400
09/01/17 12:11:35
>>384
あ、ひょっとしたらデストラクタで閉じてるのかもね。と一応>>400に付けたし。
連レスウザいだろうからこの辺で。
406:nobodyさん
09/01/17 12:23:28
>>403
だったら普通初期化するかキャストするもんだよ
407:nobodyさん
09/01/17 12:25:11
>>406
開こうとしているファイルが必ず開けるとは限らないわな。
408:nobodyさん
09/01/17 12:26:13
>>407
foreach((array)file('~') as ...)
409:nobodyさん
09/01/17 12:29:37
phpごときで何細かいことウダウダやってんだかww
410:nobodyさん
09/01/17 12:30:34
>>406
エラー処理がしやすいとかじゃね?
411:nobodyさん
09/01/17 12:34:40
あと
$ary = file('test.txt') or array();
$ary = file('test.txt') or exit;
とか。もしくは例外使う。
何か関数からの出力を得る度にifで1ブロック使うなんてナンセンスすぎ。
412:nobodyさん
09/01/17 12:38:43
399は最近学び始めてphpが分かってきたから答えたくてたまらないお子ちゃまか
413:399
09/01/17 12:39:51
>>411が糞ウザくなってきたから一言。
あのな。
言っておくが、>>399みたいな処理は普通はクラスのメソッド通すなりするわ。
めんどくさいからはしょってるだけだろーが。分かるか?あ??
なんか>>411見てると、俺の会社の全然使えないカスPGにそっくりで殴り倒したくなるわw
414:nobodyさん
09/01/17 12:40:56
いやお前のコードが使えないんじゃん
415:nobodyさん
09/01/17 12:41:35
お前ら、質問があっても誰も答えないくせに
誰かが答えるとそれには文句つけないと気がすまないんだな。
どうしようも無いカスだなw
416:nobodyさん
09/01/17 12:42:27
たかがPHPでしょ
動けばいいじゃん
ばか?
417:nobodyさん
09/01/17 12:43:17
能力ないのに見栄を張るとは恥ずかしい奴だなw
418:nobodyさん
09/01/17 12:46:56
さすがPHPスレ。お前ら目糞鼻糞。
419:nobodyさん
09/01/17 12:50:26
____ ) 『 実行すれば分かる 』っと、
/⌒ ⌒\ ) 『 開こうとしているファイルが必ず開けるとは限らないわな』っと。
/( ●) (●) \ )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y丶
/ ::::::⌒(__人__)⌒::::: \
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ カ
| l l||l 从人 l||l l||l 从人 l||l カ タ
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐
,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄ ̄
____
/::::::─三三─\ foreach((array)file('~') as ...)
/:::::::: ( ○)三(○)\
|::::::::::::::::::::(__人__):::: | _____
\::::::::: |r┬-| ,/ .| |
ノ:::::::: `ー'´ \ |
420:nobodyさん
09/01/17 12:52:06
やぱりphpしか使えない奴ってバカっ事でOK?
Java使いが一番
421:nobodyさん
09/01/17 12:52:28
>>419
ウケルwwwww
422:nobodyさん
09/01/17 12:53:47
アホな奴もいるもんだなw
423:nobodyさん
09/01/17 13:03:06
自演煽りのクオリティが低すぎて吹いた
424:nobodyさん
09/01/17 13:46:03
書き込み時間と日頃のレスの伸びからして2名が暴れていただけらしいな
PHPやってると頭だけではなく性格まで悪くなるらしいから気をつけようww
融通利かないやつやコミュニケーション能力無いやつは
PGだろうが何だろうが使えん
うちにも1名いて給料の査定も下がったはずだが、はやくその理由に気付いて辞めてくれ
425:nobodyさん
09/01/17 17:45:47
一週間を表示する関数を作ってみたんですが、
どういうわけか土曜日だけ文字化けしてしまいます。
解決策はないでしょうか?
<?php
write_day();
//一週間を表示する関数
function write_day(){
while($i<7){
print($f1[$i]);
$ts=getDay($i);
print(date("m/d".getYoubi(date("w",$ts)),$ts));
$i++;
}
}
//曜日を漢字に変換
function getYoubi($wday) {
$arr = array("(日)","(月)","(火)","(水)","(木)","(金)","土");
return $arr[$wday];
}
//日にちを取得する関数
function getDay($day){
$now = time();
return mktime(date("H",$now),date("i",$now),date("s",$now),date("m",$now),date("d",$now)+$day,date("Y",$now));
}
?>
426:nobodyさん
09/01/17 18:23:30
>425
コードをShift_JISで書かないでUTF-8にするだけで解決。
427:nobodyさん
09/01/17 18:52:25
>>426
一発で解決しました。ありがとうございます。
本当文字コードって難しい。
スクレイピングでサイト作る人とか超尊敬。
428:nobodyさん
09/01/17 23:41:37
>>425
まったく関係ないんだけど
土曜日だけ()が付かないのはなんでなんだろうと思った。
429:nobodyさん
09/01/18 07:29:09
>>428
土曜日だけどうしても文字化けで表示できず
いろいろと試行錯誤した結果わからなかったので
質問しました。
()除いたりといった試行錯誤の名残をそのまま
書いてしまいました。ごめんなさい。
430:nobodyさん
09/01/18 11:24:28
>>424
自己紹介乙
431:nobodyさん
09/01/18 20:28:36
プログラム経験無しで、今からPHPを勉強しようと思っています。
そんな俺に、一冊買うならコレ!っていうPHPの参考書を教えてください。
432:nobodyさん
09/01/18 20:32:39
>>431
URLリンク(www.php.net)
433:nobodyさん
09/01/18 21:03:22
>>432
本をonegaisimasu
434:nobodyさん
09/01/18 22:30:36
まずマニュアル嫁
435:nobodyさん
09/01/18 23:59:27 542zz2rd
アンケートプログラムなんかでよくある、全部の項目が入力されているかを
submitボタンが押されたときに調べて、それが通ればsessionに入力項目を追加して次のページへ
ってことをやりたいんですが、
全部の項目が入力されているかを調べるのはonclickにJavascriptでチェック出来ますが、
そのあと動的に選んだ値をphpのsession変数に追加するのってどうしたら良いのでしょうか?
436:nobodyさん
09/01/19 00:03:08
$_SESSION['hoge'] = $hoge;
437:nobodyさん
09/01/19 00:11:48 jnDZLn2z
>>436
すいません、えっとどう言ったら良いのか;
質問のニュアンスを伝えるためにわざと無茶苦茶に書くと、
<input type="submit" onclicke="check()" />
<script type="text/javascript">
function check(){
//checkコード
if(allchecked){
$SESSION['age']=document.getElementsById("age");
}
}
</script>
こんな風な意味合いのことをする方法を聞きたかったのです。
438:nobodyさん
09/01/19 00:16:55
PHPとJavascriptの違い分かってないの?
439:nobodyさん
09/01/19 00:21:05 jnDZLn2z
>>438
あくまでニュアンスを伝えるために上記のような書き方をしているだけで、
サーバサイドphpとユーザサイドJavascriptの違いは分かってます。
ただphpではこういうチェックが出来ないのでどうしたものかと迷ったので。
440:nobodyさん
09/01/19 00:21:42
よく分からんがGETで取れば?
441:nobodyさん
09/01/19 00:22:12
いやPOSTでもいいけど
442:nobodyさん
09/01/19 04:21:49
>>437
よく意味がわからんが・・・
<form name="form1" method="post" action="hoge.php">
<input type="submit" onclick="return check();" />
名前:<input type="text" name="name" />
</form>
<script type="text/javascript">
function check(){
//checkコード
if (document.form1.name=='') {
alert('名前が入力されていません');
return(false);
}
return(true);
}
</script>
あとはhoge.phpでnameを受けとってセッション変数に放り込むなり好きにするヨロシ。
443:nobodyさん
09/01/19 04:44:39
ただのjavascriptの話になってるw
444:nobodyさん
09/01/19 17:58:38
うわわわわ。。。
issetでもisSetでも書けるくさいなぁ(´・ω・`)
445:nobodyさん
09/01/19 20:15:28
str_replaceよりpreg_replaceが速いのか
446:nobodyさん
09/01/20 00:26:44
>>445
それはありえない
preg_replaceは正規表現の処理が入る分遅くなる
ついでにいうと、単純な置換ならstrstrよりstr_replaceの方が速い
447:445
09/01/20 00:28:42
>>446
じゃあここのはウソってことか。。。
URLリンク(phpspot.org)
448:nobodyさん
09/01/20 00:37:17
うん
449:nobodyさん
09/01/20 00:58:56
>>447
そのサイトは検証もせずコピペしてるだけだからあまり鵜呑みにしない方がいい
450:nobodyさん
09/01/20 01:55:00
原文はこう書いてある。
str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4
PHPの勉強の前に、まず英語勉強しようぜ
451:nobodyさん
09/01/20 06:28:50
>>450
その原文の出典ってどこ?
452:nobodyさん
09/01/20 07:38:55
>>447のリンク先
453:nobodyさん
09/01/20 12:58:32
>>447
記事がうそじゃないとしても、2年も前だとあまり当てにならないな。
5.1.x時代だっけ
454:nobodyさん
09/01/20 14:17:46 auDP4Xko
sql文の中に多数の変数を入れるにはどうしたらよいのでしょうか?
455:nobodyさん
09/01/20 14:24:08
普通に文字列連結じゃだめなの?
意図がいまいちわからない。
あ、エスケープはしっかりしろよな。
456:454
09/01/20 20:16:30
>>455
はい普通に . でした
6時間前の自分にゲンコツしときました
457:nobodyさん
09/01/20 23:14:20 FkFXLWeK
URLリンク(php5.seesaa.net)
ここを見ながら勉強中で、ひとつ前の
Step9・入力された値をPHPでチェックする
まではうまくいったんですが、
Step10・入力された値をJavaScriptでチェックする
が、うまくいきません。イントラネットとかいうのが関係してるんでしょうか。。
何度も確認したんですけど、警告ウインドウが出てきません
458:nobodyさん
09/01/20 23:21:44
問題の切り分けすべし
459:nobodyさん
09/01/21 03:11:36
まずなにも入れないで計算してみて。
あとjavascript有効になっている?
460:nobodyさん
09/01/21 09:46:52 VkT7uFdT
>>459さん
javascriptは、セキュリティのところでいじればいいんですよね。
それでしたら有効になってます。
なにも入れないで計算すると
-------------------
+=0
前の画面へ戻る
-------------------
って出ます。IEから見るソースは
-------------------
<html>
<head>
<title>calc.php</title>
</head>
<body>
+=0
<br/>
<br/>
<a href="#"onclick="history.back();return false;">前の画面へ戻る</a>
</body>
</html>
------------------------------
です。
書いてるソースのほうは
URLリンク(php5.seesaa.net)
にあるとおりだと思います。
461:nobodyさん
09/01/21 10:44:16
calc.htmlはどうなっているの?
最初に実行するプログラムはなに?
calc.htmlだよね?
そこからcalc.phpで処理してってことだけど、
form action とか大丈夫これどうり記述しているよね?
jsも読み込んでいるよね。
パスもあっているよね?
462:nobodyさん
09/01/21 13:51:32 ruw5pBd2
<input type="text" name="名前" size="20" />
<?
$line = "==名前==";
$line = ereg_replace("==(.*)==", $_REQUEST["\\1"], $line);
?>
上記スクリプトで $line を name="名前" のフォーム値に置換したい
のですができません。どうすれば置換できるでしょうか?
463:nobodyさん
09/01/21 14:09:33
マニュアル見れ
あとeregよりpreg
464:nobodyさん
09/01/21 14:58:58 VkT7uFdT
>>461さん
calc.htmlのソースは
---------------------------
<html>
<head>
<script type="text/javascript"src="calc.js"></script>
<title>calc.html</title>
</head>
<body>
<form name="form1"action="calc.php"method="post">
<input type="text"name="txtA"id="txtA">
<select name="selOpe"size=1>
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text"name="txtB"id="txtB">=?
<br>
<input type="submit"value="計算">
<input type="reset"value="クリア">
</form>
</body>
</html>
-------------------------------------
です。パスがあっているかどうかは、どこを見るとわかりますか?
465:nobodyさん
09/01/21 15:12:50
>>464のソースの中を見ればわかりますよ!( ^∀^)b
466:nobodyさん
09/01/21 15:27:54
sample012
の中にはなにが入っている?
sample011までPHPは動いていたんだよね?
わからん。
ほんと。URLリンク(php5.seesaa.net)
と同じことしているんでしょう?
calc.jsもsample012のフォルダの中にはいっているんでしょう?
ソースはコピペしてやっているんでしょう?
467:nobodyさん
09/01/21 16:23:54 VkT7uFdT
>>465さん
>>466さん
コピペしなおしたらできるようになりました。
でもどこが悪かったのかわからに・・
468:nobodyさん
09/01/21 19:35:45
考えられるのは、どっかに空白がはいってしまったこと。
なんか変な文字がどこかにはいってしまったか。
おれもコピペでそういうことになったことは
よくある。
見たとこミスはないので、あのソースをきちんと理解
して次進んでいいと思うよ
469:nobodyさん
09/01/21 21:43:57 VkT7uFdT
空白もいけないんですか
先生ありがとう
470:nobodyさん
09/01/21 22:33:22
いやあくまでも想像だけど、でも間違っているところがないから。
以後もし動かったら再度コピペすることを望みます。
471:462
09/01/22 10:25:52 PnoeEoeZ
>>463
すみません、マニュアル見直しました。
ところで、
$line = "==名前==";
//$line = preg_replace("/==(.*)==/e", "$_REQUEST['$1']", $line);
$line = preg_replace("/==(.*)==/e", "rep('$1')", $line);
function rep ($text) { return $_REQUEST["$text"]; }
コメント行の置換が動作せずに下記エラーが発生するのですが、
いちいちrepのようなfunctionを用意しなきゃいけないのでしょうか?
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING'
in /************/index.php on line 340