くだすれPHP(超初心者用)5
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2008/11/22(土) 06:36:02ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
くだすれPHP(超初心者用)4
http://pc11.2ch.net/test/read.cgi/php/1213356756/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
0002nobodyさん
2008/11/22(土) 08:10:59ID:NVQ67oh42GET
0003nobodyさん
2008/11/22(土) 12:53:51ID:???0004nobodyさん
2008/11/22(土) 12:55:45ID:???0005nobodyさん
2008/11/22(土) 16:02:02ID:???0006nobodyさん
2008/11/23(日) 02:46:28ID:KQeB2dd8『500年ROMってろ!!』
と言われた者です。
あれから500年、ひたすらROMに徹してきました。
来る日も、来る日も。
そして今、
やっと2をget出来るだなんて………
感動で……胸が一杯です。
人間、辛抱すれば良いことって有るんですね!
こんな私ですが、
僭越ながらとらせて貰います…!
念願の2ゲットはもちろんこの書き込みです。
では・・
「6get!!!!」
0007nobodyさん
2008/11/23(日) 02:49:23ID:/R5EIGzeお礼書く前にスレ落ちてしまったので。とても参考になりました。ありがとうございましたm(_ _)m
0008nobodyさん
2008/11/23(日) 08:57:21ID:???日付が変わる前に毎日ログをとりたいんですが どのようにすればいいでしょうか
0010nobodyさん
2008/11/23(日) 12:15:51ID:???0012nobodyさん
2008/11/23(日) 14:46:21ID:???1行目は意味不明。2行目についてはログ取るなら
fopen($path, 'a');
あたりか。
$pathとしてファイル名に日付でユニークな名前付ければ良い。(例:yyyy_mm_dd.csv)
$pathのあるディレクトリのパーミッションにさえ気をつけておけば、
あとは日付が変わるたびに新しいファイルが出来てそこに追記処理が行われる。
0013nobodyさん
2008/11/23(日) 16:19:53ID:/R5EIGze0015nobodyさん
2008/11/23(日) 19:17:52ID:???俺も1行目の意味がよくわからないけど、
たぶんヒントとして「cron」で検索したら思ってる情報が出るんじゃないかな?
0016nobodyさん
2008/11/24(月) 00:29:44ID:???0017nobodyさん
2008/11/24(月) 11:38:04ID:???それ以外はエラー、という条件を作りたいのですが、どうすればいいでしょうか、教えてください。
0018nobodyさん
2008/11/24(月) 11:50:36ID:???Aとはなんぞ?意味分からんがこういう事かな?
$A = 0;
$fuge = 'xyz12345';
if ($A === 0 && preg_match('/[0-9a-zA-Z]{8}/D', $fuge)) {
// 実行処理
} else {
// エラー処理
}
001918
2008/11/24(月) 11:51:43ID:???×preg_match('/[0-9a-zA-Z]{8}/D', $fuge)
○preg_match('/^[0-9a-zA-Z]{8}$/D', $fuge)
0020nobodyさん
2008/11/24(月) 14:21:44ID:???$A = 0;
$fuge = 'xyz12345';
if ($A !== 0) {
// エラー処理
}
if (!preg_match('/^[0-9a-zA-Z]{8}$/D', $fuge)) {
// エラー処理
}
//処理続行
にする。
じゃないと条件が増えたり実行処理の中でインデントがたくさん出てきたら読みにくくなる。
どっちの条件にマッチしなかったのかも判定しやすいし。
0021nobodyさん
2008/11/24(月) 14:38:36ID:???0022nobodyさん
2008/11/24(月) 14:42:35ID:???0023nobodyさん
2008/11/24(月) 14:44:07ID:???0024nobodyさん
2008/11/24(月) 14:49:07ID:iKPzd1uP$this->xxx
のように参照しなければいけませんよね。
しかし、関数内で変数を参照したりいじったりする機会が多いせいで
this->の部分が非常に邪魔なのですが、
この部分を略して記述する方法ってありませんか?
0025nobodyさん
2008/11/24(月) 14:52:52ID:???0026nobodyさん
2008/11/24(月) 14:58:21ID:???$fuge =& $this->var;
0027nobodyさん
2008/11/24(月) 15:07:27ID:iKPzd1uPありがとうございます。
0029nobodyさん
2008/11/24(月) 15:54:29ID:???0031nobodyさん
2008/11/24(月) 16:22:57ID:???$this->users[] = new User(ほげほげ)
とかやらね?
見通しについては、いちいちローカル変数に代入するほうが悪くなると思うが
003213
2008/11/24(月) 16:42:34ID:E3B5gNBMありがとうございます。
すいませんもうちょっと分かりやすく教えて頂けると・・
とりあえずインライン関数っていう概念はないってことででしょうか?
0034nobodyさん
2008/11/24(月) 17:45:35ID:???インライン関数がどういう概念なのかを教えてくれれば答える
PHPを知らないあなたと、C++を知らない僕とで対等ではないか。
0035nobodyさん
2008/11/24(月) 17:54:32ID:???コンパイラがないPHPには関係ない話じゃないの?
0037nobodyさん
2008/11/24(月) 22:52:12ID:???このページに
$threat "'OR '='";
$threat = mysql_real_escape_string($treat);
SELECT account_number, name, address FROM account_data WHERE account_number = $threat
は、mysql_real_escape_string で、$threatが
''or''=''
とエスケープされるので、SQLインジェクションになるというように書いてあるのですが、
自分の環境
Windows XP
PHP 5.2.0
MySQL 5.0.27
では、mysql_real_escape_string($treat) は
\'OR \'=\'
とエスケープされ、SQLインジェクションになりませんでした。
この記事は合っているのでしょうか??
どなたか教えてくださいm(_ _)m
0038nobodyさん
2008/11/24(月) 23:27:44ID:???その上、○○の本のインジェクションが動かないとか
攻撃して書いちゃってるのがかなり痛い人だな。
0039nobodyさん
2008/11/25(火) 03:38:24ID:???どうしたらよいですか?
ブラウザを使ってアクセスするとできるのですが、PHPだとできません。
0040nobodyさん
2008/11/25(火) 04:01:15ID:???0042nobodyさん
2008/11/25(火) 21:18:12ID:qzrO9YC/phpで書かれたサーバ設置型を探しています。
0043nobodyさん
2008/11/25(火) 21:24:20ID:???そりゃ誰かが作りゃあるだろバカか?
0044nobodyさん
2008/11/25(火) 22:14:09ID:???普通そういう事はPHP単体ではやらないかな…。
Namazuなんかはperl版はあった気がするが。
要望そのものには応えられないが「Namazu PHP」でググるといい。
>>39
具体的にコード載せては?
PHP5でphp.iniでallow_url_fopenがONになっていたら、
取ってくるだけならfile_get_contents()1行で終わりだけどね。
まぁ実際は2chの鯖と行儀よくおしゃべりしないと駄目なので
ttp://age.s22.xrea.com/talk2ch/
ttp://www.monazilla.org/
辺り読んで理解できないなら、もう少し勉強してからにした方がいい。
既に既存のスクリプトもあるみたいなので「PHP 2ch Viewer」とかでググルといい。
>>37
そもそも、Prepared Statement使ったほうがいいと思う。
PHPならPDO使えば簡単楽ちん。
0046nobodyさん
2008/11/26(水) 17:34:56ID:???phpのなかでjavascript使いたいんですが書き方がわからないです・・・
どなたか教えてください
0047nobodyさん
2008/11/26(水) 17:37:01ID:???<?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
?>
004837
2008/11/26(水) 18:03:51ID:???>その人のは他のも動かないのあるね。
む、そうなんですか。
>>44
pdo->prepare 既に使ってたんですが、プリペアードステートメントってこれのことだったんですね。
名前だけ知ってたんですが、何のことかよく分かっていませんでした汗
ありがとうございましたm(_ _)m
004946
2008/11/26(水) 18:41:54ID:???早いレスありがとうございます。
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モードから抜けるの試したのですが、
前者は"更新"が表示されなくなってしまいました。
後者はページ自体表示できなくなってしまいました。。
0050nobodyさん
2008/11/26(水) 19:06:12ID:???0052nobodyさん
2008/11/26(水) 19:14:40ID:???0053nobodyさん
2008/11/26(水) 19:16:47ID:???だとまずいんでしょうか。。
0054初心者です
2008/11/26(水) 19:52:25ID:51PdxGfYどうしたらいいのでしょうか?
データベースはMySQLで、文字コードはUTF−8に揃えてるはずなんですが^^;
いきずまってます。色々なサイト見てますが、出来ません><
0055nobodyさん
2008/11/26(水) 19:53:27ID:???更新ボタンをjavascriptで制御したいなら
<input type="button" onclick="javascript:event" value="更新">
onclickあたりでイベント発生させないと
ボタンじゃなくてアンカーだとしても同じこと
<a onclick="javascript:event">更新</a>
0058nobodyさん
2008/11/26(水) 21:31:17ID:???32行しか書き込めないようなのでテーブルのとこだけ抜き出してみました
>53のはこうしてみたけどできませんでした、みたいな感じです
>55の方が指摘してくれてるonclickというのを調べて見ていますが
htmlもjavascriptも全然なもので・・・
0059nobodyさん
2008/11/26(水) 21:35:46ID:???どうちがうかってちゃんと把握できてるの?
0060nobodyさん
2008/11/26(水) 22:12:18ID:???PHPまったく関係ないけどこういうことがやりたいとか?
0061nobodyさん
2008/11/26(水) 23:53:42ID:???何・・・だと・・・?
phpもjavascriptもなくできるんですね・・・or2
ありがとうございます、ありがとうございます(´;ω;`)
0062nobodyさん
2008/11/27(木) 00:05:14ID:???0064nobodyさん
2008/11/27(木) 00:25:36ID:???0065nobodyさん
2008/11/27(木) 15:04:23ID:???ttp://www.php-labo.net/download/blog/のブログにincludeを使った形で組み込みたくて
ブログのindex.phpに書いてみたんですが画面が白くなったり機能しなかったりします。
なんとか正常にinclude出来ないでしょうか。
0066nobodyさん
2008/11/27(木) 15:11:21ID:???http://pc11.2ch.net/test/read.cgi/php/1222645553/
http://pc11.2ch.net/test/read.cgi/php/1143834740/
0067nobodyさん
2008/11/27(木) 15:26:09ID:???include_once('lapis/write.php');の一行を正常に稼動させたかっただ・・・
0068nobodyさん
2008/11/27(木) 15:32:35ID:???0070初心者です。助けてください
2008/11/27(木) 21:17:24ID:7UVbMsyCPHPinfo()でdefault_charsetってとこを見たらnovalueとかなってたんだけど
そこもUTF-8とかにしないといけないのかな?
MySQLの方もUTF-8にしてるんですが…
それとも、SQL文を送信するとこで何か他の方法があるんですか?
文字コードで気をつけないといけないところは他にもあるんですか?
漢字とアルファベットは検索出来ます。
0071nobodyさん
2008/11/27(木) 21:22:32ID:???0072nobodyさん
2008/11/28(金) 02:13:04ID:6eZt1xO+を参考にしてPEARを導入しようと思ってたのですが
go-pear.batをダブルクリックしても何もでません
よろしくおねがいします
0073nobodyさん
2008/11/28(金) 10:03:58ID:???0074nobodyさん
2008/12/02(火) 21:02:45ID: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(・・・・);
課題で出たのですが、受信側の処理がわからないです。
誰かお願いします。
0075nobodyさん
2008/12/02(火) 21:09:11ID:???マルチは最悪だな
0076nobodyさん
2008/12/02(火) 21:54:03ID:???コピペで我が物顔で提出されるかと思うと、教える気失せるな。
せめて、ここまでやってみましたけどうまくできなせん、とか
努力を見せてほしいね。
講義をちゃんと聴いてない74が悪い
0077nobodyさん
2008/12/02(火) 21:55:58ID:ZnEnsvHS0078nobodyさん
2008/12/02(火) 22:40:15ID:???0079nobodyさん
2008/12/03(水) 06:17:09ID:???PHP Tutorial #2 - Login form
http://jp.youtube.com/watch?v=7JmSf9JfQjY
0080nobodyさん
2008/12/03(水) 20:41:42ID:SBXcaNw7こういうのってトランザクションはどうするべきなのでしょうか?
0081nobodyさん
2008/12/03(水) 20:43:40ID:???0082nobodyさん
2008/12/04(木) 01:40:03ID:???ロック
ここでロック
あなたから
ロック
手を伸ばして
受け取ってよ
0083nobodyさん
2008/12/04(木) 02:49:51ID:6sD/pbke0084nobodyさん
2008/12/04(木) 10:12:39ID:???0085nobodyさん
2008/12/04(木) 14:10:31ID:???配列の要素の和を求める関数ありますか?
echo 59 の様な感じです。
0088nobodyさん
2008/12/04(木) 18:07:23ID:???perlだったら、いちいち自分で書かないといけない。
0090nobodyさん
2008/12/04(木) 18:24:46ID:???つーか関数多過ぎ
0091nobodyさん
2008/12/04(木) 18:26:39ID:???0092nobodyさん
2008/12/04(木) 22:46:59ID:???学習コストが高い?
優秀な言語?
0093nobodyさん
2008/12/04(木) 23:39:39ID:ge2NtuW20094nobodyさん
2008/12/05(金) 01:26:39ID:zoYImp6K0095nobodyさん
2008/12/05(金) 01:33:39ID:jMVHCYUr意図がわからんが、rangeとか?
0096nobodyさん
2008/12/05(金) 01:37:35ID:???どういう値を渡したいのだ?
0097nobodyさん
2008/12/05(金) 04:44:41ID:???とかでしょ?
0098nobodyさん
2008/12/05(金) 09:25:55ID:???0099nobodyさん
2008/12/05(金) 16:28:02ID:fefynmKZこういうファイルの途中から途中までの読み込みって出来ますか?
あるいは、やっぱり一行目から読んでいって、
目的のデータにくるまでは捨てていくしかないでしょうか?
0100nobodyさん
2008/12/05(金) 16:31:02ID:???例えばfileで配列に読み込んで
[14]〜[24]までを取り出せばいい
ファイルの中身が膨大でメモリの負担を考えるなら
また別の方法を考えるべきだが
0101nobodyさん
2008/12/05(金) 17:33:46ID:???テキストファイルのように1行の長さが不定なものには使えない。
0102nobodyさん
2008/12/05(金) 18:34:07ID:???再度開いたらログイン済になっているような機能を実装したいんですが、
参考になるサイトなど教えて貰えませんでしょうか?
クッキーを使うのかと思ったらGoogleはクッキーオフでも上記動作をしているようです。
こういう機能をなんと呼ぶのかも判らないので名前を教えて貰えるだけでも結構です。
よろしくお願いします。
0103nobodyさん
2008/12/05(金) 19:22:16ID:???うそつけw
Cookieオンにしろといわれたぞ
IPやホスト名を鯖側で記録しておいて
変化するまで有効にする手なんてのも考えられるが
一般的じゃないしセキュリティ的にも危険
0104101
2008/12/05(金) 19:38:49ID:???すいません、Firefoxでやったらエラーでました。
IEでクッキーを受信するときにダイアログを表示するように設定して、
僕のサイトで警告が出るのを確認してからGoogleにログオンしたんですけど
何故かオンになってたみたいです。
クッキー使うって事はユーザー名とか暗号化して記録すれば良いんですね。
ありがとうございました。
0105nobodyさん
2008/12/05(金) 19:53:32ID:???0106nobodyさん
2008/12/05(金) 20:20:33ID:???0107nobodyさん
2008/12/05(金) 21:13:25ID:???0108nobodyさん
2008/12/05(金) 21:45:22ID:jMVHCYUrセッションID持たせて有効期限。
0109nobodyさん
2008/12/05(金) 22:26:45ID:???クッキーを手動で削除すれば
強制ログアウトさせられるよ
0110nobodyさん
2008/12/06(土) 09:19:14ID:figaW1Vu携帯サイトのトップページで
ttp://hoge.com/
リンク@←(id=1)
リンクA←(id=2)
リンクB←(id=3)
リンクC←(id=4)
リンクD←(id=5)
と表示し、ttp://hoge.com/?id=1とパラメータをつけて飛んで来た場合
リンクA
リンクB
リンクC
リンクD
リンク@
と、そのidのリンクを一番下へ自動で並び替えるにはどう書いたら良いでしょうか?
よろしくお願いします。
0111nobodyさん
2008/12/06(土) 09:45:43ID:???$count= count($url);
for ($id=$_GET['id']; $id<$count; $id++){
if ($id >= $count) $id= 1;
$link.= $url[$id];
}
こんなイメージでできそう
0112nobodyさん
2008/12/06(土) 10:09:00ID:???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;
}
}
0113110
2008/12/06(土) 10:23:36ID:???今から出勤なので帰ってからやってみます。楽しみです
マジ感謝です。
0114nobodyさん
2008/12/06(土) 19:41:46ID:uHkDvuuYこういうのってphpではできない感じでしょうか?
具体的にやりたいことは、
ボタンが押される
→Javascriptの関数を呼び出し入力項目をチェック
→良ければ、次のページに渡すphpの変数をセット
→次のページに遷移
って感じです。
0115nobodyさん
2008/12/06(土) 19:44:30ID:yGRUMO6W0116nobodyさん
2008/12/06(土) 19:48:48ID:???あれ?
サーバサイドのphpではクライアントサイドのJavascriptみたいにonclickでの
関数呼び出しは出来ないってのは良いですよね?
Javascriptの関数の中でphpを記述するってことですか??
0117nobodyさん
2008/12/06(土) 20:44:44ID:???ちなみに
>具体的にやりたいことは、
>ボタンが押される
→Javascriptの関数を呼び出し入力項目をチェック
>→良ければ、次のページに渡すphpの変数をセット
>→次のページに遷移
これ読む限りではphpいらないと思うが?
0118nobodyさん
2008/12/06(土) 21:05:23ID:???なんか自分でもそうやったら出来ないだろうかとやってみたんですが、
エラーコンソールに 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()" />
0119nobodyさん
2008/12/06(土) 21:06:41ID:???0120nobodyさん
2008/12/06(土) 21:08:28ID:???書かれてるのは、onclickで変数をエンコードしてページを呼び出すだけだよな
もし、onclickでphpのコードを実行した結果をページに反映させたいなら
ajaxの仕組みを利用する。
xajaxってライブラリが実現してるのがその仕組みに近い。
シームレスに関数を呼び出す感じになるよ
0121110
2008/12/06(土) 22:06:53ID:???>>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が数個ってな感じでやったのですがもうちょっとシンプルと言うか効率の良いやり方無いでしょうか?
0126nobodyさん
2008/12/07(日) 22:04:39ID:???0127nobodyさん
2008/12/08(月) 00:43:56ID:???0128nobodyさん
2008/12/08(月) 01:06:08ID:???日々拡張されたり廃止されてるから増減するし
マニュアルにのってないのもあるのでなんともいえないな
PEARは各種FWのを含めるとさらに増える
ユーザー定義関数も含めると天文学的な数値になる
(9割型コードがかぶってたりコードは違うが動作が同じのも含む)
実際によく使うのは100個もないので数なんてどうでもいいやね
0129nobodyさん
2008/12/08(月) 01:10:38ID:???全部おぼえようとしていたが、
やる前に質問してよかった。
0130nobodyさん
2008/12/08(月) 01:11:12ID:???「よく使う100個」の
リストは、どこかにある?
それから優先的に学習していきたい。
0131nobodyさん
2008/12/08(月) 01:13:49ID:???なんでPHPってカテゴリはないの?
0132nobodyさん
2008/12/08(月) 01:14:33ID:???0133nobodyさん
2008/12/08(月) 02:58:26ID:???0134nobodyさん
2008/12/08(月) 03:07:52ID:???やっているうちに覚えていくから心配しなくていいよ
とにかく本でもマニュアルでもいいから順序通りにやっていってみ
0135nobodyさん
2008/12/08(月) 03:13:30ID:???その作業が死ぬほどつまらんから
聞いているのです
「試験に出る英単語」って本知ってる?
あれは出現頻度順に並べたものなんです
0136nobodyさん
2008/12/08(月) 03:29:01ID:???0137nobodyさん
2008/12/08(月) 04:24:39ID:???0138nobodyさん
2008/12/08(月) 04:41:01ID:???似たようなリスト(別スレで見かけたのでコピペ)
ttp://www.1x1.jp/blog/2008/06/php_framework_function_count.html
しかし、英単語だって実用的に使って覚える方が楽だぞ
実用を伴わないで関数を勉強する方が余程ストイックな作業だと思うが
0139nobodyさん
2008/12/08(月) 08:32:40ID:???>>135じゃないけど
俺は暗記得意だから先に仕様書とかリファレンスに一通り目を通してから実戦のほうが合ってる
結局人それぞれじゃね?
0140nobodyさん
2008/12/08(月) 09:49:20ID:???あれは出現頻度順に並べたものなんです
試験対策ってことは、当然一通り順序どおりに英文法をマスターしたうえで読む本だよな。
英単語だけ覚えても文章の1つも作れないだろ。
プログラミングだって順序立てて学習するのを避けて関数を覚えようとしても意味がない。
0141nobodyさん
2008/12/08(月) 20:33:26ID:???0142nobodyさん
2008/12/08(月) 20:43:10ID:???何も作れないじゃん
0143nobodyさん
2008/12/08(月) 20:50:23ID:???0144nobodyさん
2008/12/08(月) 21:11:07ID:???こういう風に教えてくれよ
http://jp.youtube.com/watch?v=kzmHmYHy-P8
0145nobodyさん
2008/12/08(月) 21:14:57ID:???0146nobodyさん
2008/12/08(月) 21:18:11ID:???放置してやれ
0147nobodyさん
2008/12/09(火) 02:09:02ID:???<タグ>あうあう</タグ><タグ>あうあう</タグ>ゲロゲロ<タグ>あうあう</タグ>
みたいな文字列からタグの中身をタグも含めて配列に格納していきたいのですが、どうやったらいいのでしょうか。
0148nobodyさん
2008/12/09(火) 02:16:12ID:???0149nobodyさん
2008/12/09(火) 02:20:39ID:???正規表現で抜き出す
http://jp.php.net/manual/ja/function.preg-match-all.php
0150nobodyさん
2008/12/09(火) 02:42:47ID:???0151nobodyさん
2008/12/09(火) 02:50:19ID:???0153nobodyさん
2008/12/09(火) 04:53:11ID:???トップページと検索結果ページのレイアウトを全くの別物にしたい場合
GETに中身がなかったらトップページへ
中身があったら検索結果ページへとか言う風にif文でhtmlを丸ごと括って分岐させる感じでいいの?
なんかスマートじゃない気がするんだけど
0154nobodyさん
2008/12/09(火) 05:12:49ID:???検索単語を入れるように検索結果のページで促したり
単純にヒットしなかったと検索結果を出すのが普通
0155nobodyさん
2008/12/09(火) 13:03:23ID:???<form action="search.php">
0156nobodyさん
2008/12/09(火) 14:41:55ID:???できればエラーメッセージつけてかえすと親切だな。
0157nobodyさん
2008/12/09(火) 20:34:24ID:???普通に検索用のスクリプト作ればいいじゃない。
0158nobodyさん
2008/12/09(火) 22:03:51ID:???symfony本体無いと動かない?
上の質問が正解だとすると、レンタルサーバではほぼ使えないですよね?
symfony使えるサーバじゃないと。
0159nobodyさん
2008/12/09(火) 22:10:06ID:???フレームワークなんだからそれ通さないと動かないに決まってるだろ
PHPのフレームワークなんだからPHPで書かれてるだろ
PHPさえ使えればどの鯖でもつかえるんじゃね?
0160nobodyさん
2008/12/09(火) 22:56:48ID:???データベースに内に用事のある日付と人のIDを入れておくテーブルが有ったとします
(DATE, ID)
(11/29, K)
(12/5, F)
(12/7, F …みたいな感じ)
そこからSQL文で月を指定してまとめてデータを抜き出しておいて
画面テーブルのトップに日付と曜日の一覧を表示させておいて
人別に用事のある日付に×を書き込みたいのですけど
(5日と7日に用事があればF, , , , ,×, ,×, …みたいな感じ)
SQL文で範囲選択して取得したデータを保持しておいて
その中に条件にあったデータが有るかをチェックする事って出来ますか?
for文で画面テーブルを作成しながら$iの値を日付に合わせて増やしていき
SQL文で一度取得したデータの中に$i(日付)と同じものが有れば
×を記入さていこうかなと考えています
お分かりになるかた、もっといい方法を思いつく方
ご教授を願えたら有り難く思います
0161nobodyさん
2008/12/09(火) 23:00:33ID:???「ご教授願えますか」なら兎も角、不思議な日本語。
0162160
2008/12/09(火) 23:09:26ID:???早速ご指摘を頂き有り難う御座います
追加ですが配列を使用せずに記述をしたいと考えております
お分かりになる方、もっといい方法を思いつく方
ご教授願えますか
0163nobodyさん
2008/12/09(火) 23:15:35ID:???無理でないかと思います
大学で聞くのが一番早いと思うのでそちらをお勧めします
0164160
2008/12/09(火) 23:21:52ID:???度々のご指摘ありがとう御座います
正しくは教示の様ですね
>>160>>162に関しまして
お分かりになる方、もっといい方法を思いつく方
ご教示願えますか
0165nobodyさん
2008/12/10(水) 00:15:00ID:???SQLのクイズ出してるつもりならスレチだよ。
MySQLならgroup_concat(DATE) と group by IDを使って行を取得というのが楽
標準SQLで組もうとすると、ちょっとパズルチックになるからね。
他人が書いた答えは知ってるけど、オリジナルじゃないからググってみることをお勧めする。
個人的にはfor文で処理するより、rangeと配列、array_mapでサクッとテーブル書く方が好きだな。
ループはダサい。
でもあえて配列を使わないんなら、ORDER BY ID, DATEでクエリの結果セットを
ループしながらifとswitchでテーブル組めば普通にできる。
0166160
2008/12/10(水) 07:53:28ID:???ご返答有り難う御座います
現在インターン中なのですが
そこで課題として従業員のシフト表を作成しています
従業員テーブルから情報を引き出して
それを元に休日テーブルから情報を引き出して表を作成しようと考えています
当初は一度配列に入れてから配列一つひとつをfor文とif文で参照しようと考えていましたが
担当の方にそのアイデアを話してみた所
配列に入れなくても出来ると一蹴されて困っていました。
一度>>165様に頂いたワードを調べて参考にしたいと思います
また別の方法が有りましたら教えていただけると
有り難く思います
0167nobodyさん
2008/12/10(水) 07:54:29ID:???0168nobodyさん
2008/12/10(水) 08:13:18ID:???ちゃんと説明しない嫌な担当だな。
ところで、面白い方法(拡張しないなら冗長だけど)あるよ。
配列もforループも使わない。たぶんifも最小限になる。
RecursiveIteratorIteratorっていうのがあるから、
個人イテレーターを親に日付イテレーターを子に持つようなイテレーターを
定義して、PDOをマップする。日付イテレーターのnext()は次にSQLデータの
有無にかかわらず日付をインクリメントする。
フィルターイテレーターも同時に実装して月別フィルターとか年別フィルター
とか週別フィルターとかも実装する。
テーブルソースの作成部分はデコレーターでデータをラップして文字列化
するようなものにする。
すると、
$obj = new shiftTable(array('scope'=>'month', 'target' => 12));
echo $obj;
で表が自動出力されるようなものが作れる。
0169160
2008/12/10(水) 08:34:45ID:???グループ課題の担当している部分なのでグループ全体に
影響が出ないよう早く見当を付けたいと思い質問させていただきました
>>168
私の知識では拡張という言葉がどれ程の物をあらわしているのか分かりませんが
>>160は若干端折って記入しており、実際には×では無く
休日テーブルを書き換える為のチェックボタンが付いており
従業員が現在休みになっている日は初期画面で黒くチェックが入って表示され
画面テーブルの外部にsubmitボタンが付いています
担当の人の話では
休日テーブルから5と7という値を取得すれば配列に入れなくても
画面テーブルの5番目に表示させてから7まで空のセルをつくり
7番目でまた表示させることが出来ると言われました
それを解決しようと思い>>160の質問に至ったわけです
>>168様の方法も調べて参考にさせて頂きたいと思います
ご返答ありがとうございました
0170nobodyさん
2008/12/10(水) 08:48:49ID:???> 画面テーブルの5番目に表示させてから7まで空のセルをつくり
> 7番目でまた表示させることが出来ると言われました
なんというトーニャハーディング、できりゃいいんかい!って感じの考えだな。
SELECTで前回表示のレコードを取得しとくのか、forループで前回データを保存するのか
いずれにしても、表示ロジックをデータ処理に放りこむのか・・・すごいな。
そういうところでは、はいはいって言うこと聞いて逆らわない方がよさそうw
もし、フォーム要素なんかが絡むんなら>>168の方法で基本ロジックを作成して
デコレーターでラップするといいんだけど、習得には多少なりとも時間が
かかるかもしれないのでお勧めはしない。
0171nobodyさん
2008/12/10(水) 10:52:26ID:???<input type=”submit” name="取得する値” value=”送信” />
0172nobodyさん
2008/12/10(水) 11:00:06ID:???0173nobodyさん
2008/12/10(水) 11:01:37ID:???0175nobodyさん
2008/12/10(水) 11:29:34ID:???PDOでInsertをプリペアドステートメントで行うとき、値が空っぽの時、
NULLを挿入したいのですが、NULLじゃなく、''の空が挿入されます。
これってPDOのオプションで自動で''の時は、NULLを挿入することは出来ないのですか?
0176nobodyさん
2008/12/10(水) 11:34:32ID:???0177nobodyさん
2008/12/10(水) 12:04:52ID:???例えばこんな感じ
$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に出来たらなと・・
0178nobodyさん
2008/12/10(水) 12:13:26ID:???0179nobodyさん
2008/12/10(水) 12:33:55ID:???にすれば、NULLが入るのは分かってるのですが、、それはめんどくさいですよね。。
0180nobodyさん
2008/12/10(水) 12:47:47ID:???もし空文字のときは必ずnullでいいならば、間に関数1つかませばいいべ。
0182nobodyさん
2008/12/10(水) 12:57:33ID:???かますことにします。
ありがとうございます。
0183nobodyさん
2008/12/10(水) 13:03:54ID:???もう一つ聞いてもいいですか?
PDOとMySQL5です。
PDOを使ってSELECTをした場合、クエリーキャッシュは使われてるのでしょうか?
(PDO::MYSQL_ATTR_USE_BUFFERED_QUERYは無効にしてあります)
0184nobodyさん
2008/12/10(水) 13:13:49ID:???0185nobodyさん
2008/12/10(水) 13:18:14ID:???>>184
PHPのネイティブ関数であれば、クエリーキャッシュは効いてるですが、PDOを使うとだめぽっい。。
PHP5.2.1にアップするしかないのかなぁ・・。
0186nobodyさん
2008/12/10(水) 14:41:30ID:???をしたいのですが、どうすれば出来るでしょうか?
PHP5.2を使ってます。詳しい方いらっしゃったらおしえてください。
0187nobodyさん
2008/12/10(水) 14:48:09ID:???PHP5.2.0ってだめなの?5.1.17ぐらいから使えるはずだけど。
まぁ、書いてるんだしそうなのかな・・・
0188nobodyさん
2008/12/10(水) 15:00:33ID:???PHP5.2.0のPDOだとクエリキャッシュが効いてないみたいですね。
PDO::MYSQL_ATTR_USE_BUFFERED_QUERYを有効にすると効きますが、副作用があって。。
0189nobodyさん
2008/12/10(水) 18:06:24ID:???0190nobodyさん
2008/12/10(水) 18:38:54ID:???なので、LIMIT 0,10 とか LIMIT {$offset}, {$limit}とやれば良いんですけど・・。
0191nobodyさん
2008/12/10(水) 19:00:30ID:???メールを受信した後、それをHTMLとして表示させたいんです。
エンコード状態のマルチパートなメール(ソース?)があるとして、
それをHTMLとして出力するライブラリみたいなのとかありますか?
問題は画像の部分だと思っています。(どう実現するかイメージも沸きません)
具体的な使い方は調べますので、あるかどうかと、
名前とかヒント教えてもらえるとありがたいです。
ちなみに、レンタルサーバ借りて(Web/Mail/php/DB)
iPhoneから使えるWEBメールシステムを自分の為に作ってます
0192nobodyさん
2008/12/10(水) 19:05:12ID:???メールサーバが立ってるなら、.forward等でphpプログラムに渡すと簡単。
他所のメールサーバーでも、POPやIMAP用の関数でアクセスすることも可能。
解釈部分はPEARが実績があると思う。
0195nobodyさん
2008/12/11(木) 12:31:14ID:???ありがとうございます
>>192
PEAR MailのPOP3でメールとってますが
画像部分を一旦保存しなきゃダメですかね〜
極端な話、メールのテキストと埋め込み画像をまとめて
1つの画像に落としてくれる関数があればいいんですけど都合よすぎですね><
>>193
ネックは画像を抽出する部分とかでしょうか?
>>194
Gmailはメール入力が難ありで・・・
Yahoo!JメールはiPhone用のメール作成画面ないし・・
それと、
あるAさん宛てのメールとAさんから来たメールを抽出して
一覧で見せるようなのをイメージしてます
0196nobodyさん
2008/12/11(木) 15:16:35ID:???送信されてきたメールをプログラムに渡すにはサーバの設定が必要で、
POPから取得するとCRONの設定が必要。
メール送信して、スクリプトにアクセスするならいいけど。
0197nobodyさん
2008/12/11(木) 15:47:11ID:???それを利用すればOK
0198nobodyさん
2008/12/11(木) 15:48:27ID:???cronはいらないんじゃね?
0199196
2008/12/11(木) 17:30:03ID:???0200nobodyさん
2008/12/11(木) 22:26:19ID:nahQekTa$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);
↑この部分がおかしいんだとは思うんですが・・・
0201nobodyさん
2008/12/11(木) 22:51:56ID:???そのままだと$rowでbreakする必要があるかもしれないけど。
0202nobodyさん
2008/12/11(木) 22:54:53ID:nahQekTaレスありがとう
本当は$indexに現在のページ数が入って$indexの時は1〜10行目まで、$index=2のときは11〜20行目までという風に処理をさせたいのでfetchrowに$iを使わずwhileなどで処理できないんですorz
0203nobodyさん
2008/12/11(木) 23:04:10ID:???それ、結果セット時点でseekしといた方がいいんじゃないの?
全結果セットから、毎回行指定じゃ重いでしょ。
とはいえ、やりたいことができない理由は他にあるだろうね。
クエリが間違ってるとかない?
0204nobodyさん
2008/12/11(木) 23:12:27ID:???レスどうもです。
まだ勉強中なのでseekっていうのが・・・・
結果セットから配列なりに格納して結果セットを開放しておくということでしょうか?
クエリのコードは
sql = "select * from table ORDER BY id DESC ";
$res =& $db->query($sql);
if (PEAR::isError($res)) {
die($res->getMessage());
}
で、他のwhileで全行取り出しした場合には上手くうごいてくれているのでクエリは大丈夫かと思うのですが・・・
0205nobodyさん
2008/12/11(木) 23:46:54ID:???ところで、クエリにLIMITを含めておくわけにいかないの?
あと、fetchRowの行指定は1回だけ発動して、あとはループでいいと
思うんだけど。
あと、単にフィールド名が違うとかじゃないよね?
var_dumpとかしてます?
0206nobodyさん
2008/12/12(金) 01:30:02ID:???0207nobodyさん
2008/12/12(金) 11:46:01ID:MaDVXqed$rc = mkdir($dir, 0755);
でディレクトリーを作ったら所有者がwwwになります
これをuserにして作ることはできないのでしょうか?
よろしくお願いします
0208nobodyさん
2008/12/12(金) 12:32:00ID:???しかし、対応としては
Webサーバーの実行ユーザーを変えるか
root権限wで実行してchownもしくは、mkdirのオプションを買うか
CGIモード+suexecで起動するか、
setuidした別のラッパーをかますか、
ま、そんなとこだろう。
0209nobodyさん
2008/12/12(金) 12:51:31ID:???0210nobodyさん
2008/12/13(土) 14:37:33ID:???0212nobodyさん
2008/12/13(土) 22:52:57ID:6AnKxTPA0213nobodyさん
2008/12/13(土) 23:02:04ID:???0214nobodyさん
2008/12/14(日) 00:20:22ID:???ところが諸事情の為にレンタルサーバを借りて、自宅サーバで運営していいる物とは異なる
別のphpサイトを構築しようと思っているのですが、現在は自宅サーバで運営しているサイトは、
C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
の直下に配置されたphpのみが起動する作りになっておりますが、
ASP.netの様にプロジェクトごとにディレクトリを分ける事は、出来ないでしょうか?
例)
@C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\自宅サーバ\index.html
AC:\Program Files\Apache Software Foundation\Apache2.2\htdocs\レンタルサーバ\index.html
要するに開発しているサイトによってディレクトリを分けたいです。
0215nobodyさん
2008/12/14(日) 00:21:45ID:???0216214
2008/12/14(日) 00:38:16ID:???動的ページを静的ページにする (mod_rewrite)
というページがトップに表示されたのですが、いまいち私のやりたい事は実現出来なさそうです。
私の認識が誤っているだけかもしれませんが、その「rewrite」というのは
一体何なのでしょうか?
もし参考になうサイトをご存知でしたらお教え願います。
0217214
2008/12/14(日) 00:52:09ID:???mod_rwrite
という方法を使わなくてもディレクトリをもう一つ用意するだけで事足りました。
0219nobodyさん
2008/12/14(日) 01:51:30ID:???0221212
2008/12/14(日) 12:58:16ID:vrT8sAoj0222nobodyさん
2008/12/14(日) 13:21:34ID:???0224nobodyさん
2008/12/14(日) 15:06:54ID:???とかじゃだめなん?Windowsでやった事ないから勘だけど
0225nobodyさん
2008/12/14(日) 15:11:30ID:???0228nobodyさん
2008/12/14(日) 17:42:47ID:???0229nobodyさん
2008/12/15(月) 06:26:47ID:???連続して fopen() , fwrite() , fclose() をコールすることと等価です。
この関数ってどうなの?
0230nobodyさん
2008/12/15(月) 06:49:26ID:???0231nobodyさん
2008/12/15(月) 06:52:34ID:???PHP5なら好きなほう使えばいい
0232nobodyさん
2008/12/15(月) 12:09:28ID:???youtubeみたいな動画共有サイトを作りたいのですが、動画のアップロードは出来るのですが、
アップロードされた動画をサムネイルで表示する方法がわかりません。どなたか詳しい方いらっしゃったら
教えてください。
0233nobodyさん
2008/12/15(月) 12:27:15ID:???それよりも作るのはかまわないけど公開するならインフラ周りのこと考えろよ?
まわりに迷惑かけるのだけはやめてくれな
0234nobodyさん
2008/12/15(月) 22:35:55ID:???インフラを考えずに作ったって糞遅くなるのは目に見えてるよw
しかも維持費にどれだけ金が掛かると思ってるんだろうね。
一流のエンジニアが集まって作られているYouTubeですらあれだけ
重いのに。
0236nobodyさん
2008/12/15(月) 23:16:47ID:???回線速度の面で微妙かもしれんが
0237SF4マニア
2008/12/16(火) 01:03:15ID:???趣味で2年程前からphpでWEBシステムを作っています。
私は、実務でphpを使ったWEBシステムの構築は行った事がないのですが、
実務ではどういった開発環境でphpを使ったWEBシステムの構築を行っているのでしょうか?
因みに、自分はsakuraエディタだけです。
正直、画面のレイアウト等プログラミング以外の部分で時間を取られており、
ASP.net(VS)での開発と比べて無駄に工数が掛かってしまう感が否めません。
皆さんは、どういった環境でphpWEBシステム(サイト)を構築しているのでしょうか?
開発工数を大幅に削減出来るお勧めソフトがあればぜひお教え願います。
0239nobodyさん
2008/12/16(火) 01:19:53ID:???0240nobodyさん
2008/12/16(火) 01:22:14ID:???という事は、画面の作成はデザイナに任せてシステム部分だけをphp(マ)が開発していいるのですか?
>>239
オススメのソフトはありますか?
VSのデザイナ画面は個人的に非常に使い易いです。
0241nobodyさん
2008/12/16(火) 01:22:54ID:???0244nobodyさん
2008/12/16(火) 01:51:06ID:???それとも、デザイナーという、ソフトのこと?
0245nobodyさん
2008/12/16(火) 02:13:10ID:???0246nobodyさん
2008/12/16(火) 02:20:37ID:???ボタン配置とかして直感的にデザインしたものをコード変換する機能のことか、
職業としてのデザイナーのことかどっちなの?
0248nobodyさん
2008/12/16(火) 20:12:46ID:XMobQjfA>>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を数字ではなく文字にしたい場合どう書けば同じように動作するか教えてほしいです
宜しくお願いします。
0249nobodyさん
2008/12/16(火) 20:19:24ID:???0251nobodyさん
2008/12/16(火) 21:20:01ID:???ありがとうございます
説明不足ですみません。やってみましたがこれはアルファベット順で並ぶのでしょうか?
キー順でソートしたいのです。
一応自分なりに調べてはいるのですが
foreach ($url as $key => $value)
なんて文をどこかへ追加って感じで方向は合っているでしょうか?
0252nobodyさん
2008/12/16(火) 21:22:18ID:???0253nobodyさん
2008/12/16(火) 21:25:19ID:???ちなみに並ぶけどさ、やってみたんなら並ぶかどうか確認できるでしょ?
配列の並べ替えが終わったら、foreachでもeachでも好きなループ組めば?
0254nobadyさん
2008/12/17(水) 17:32:12ID:???する事って出来るのでしょうか?レベルが高いかも知れませんが、詳しい方がいらっしゃったら
教えてください。
0255nobodyさん
2008/12/17(水) 17:42:39ID:???0256nobodyさん
2008/12/17(水) 17:52:54ID:???ffmpegインストールしてphpから呼び出して使えば出来ると思う。
0257nobodyさん
2008/12/17(水) 18:01:15ID:???0258nobodyさん
2008/12/18(木) 05:46:38ID:???PDOでPostgreSQLにアクセスしています。
ところが、全部PDOメソッドだけで実現できないことがあり、
PDOとpg_*関数を混在使用するハメになりました。
そこで質問ですが、
PDOオブジェクトで、pg_*を使うためのデータベースハンドル
を得ることはできるのでしょうか?
できないのなら、PDOでのDB接続とは別に、pg_connectで
DB接続する必要があるということでしょうか?
0259nobodyさん
2008/12/18(木) 07:10:30ID:???0260nobodyさん
2008/12/18(木) 09:11:27ID:???PDOで、PostgreSQLのbytea型に格納してあるバイナリデータを
読み出そうとすると、不具合があるようなのです。
(公式情報ではないので自分の勘違いかもしれませんけど)
そこでほとんどの処理はPDOで行い、bytea型のR/Wのみ
pg_*関数を使いたいと思っています。
(pg_escape_bytea()とか)
0261nobodyさん
2008/12/18(木) 09:45:27ID:???0262nobodyさん
2008/12/18(木) 13:15:36ID:???0263nobodyさん
2008/12/18(木) 17:34:01ID:???具体的には
http://test/user/favorite
のようなものを作るにはどうしたらよいですか?
0266nobodyさん
2008/12/20(土) 19:15:51ID:???「ソ」と「\」を入力した場合には「\」がどんどん追加増加されるのですが
原因がわかりません。
以上の問題の解決の仕方や、検索でSQL文やPHP言語やHTMLを入力された場合の
表示にバグを発生させない方法をご存知の方、どうか教えて頂けないでしょうか
0268nobodyさん
2008/12/20(土) 22:06:37ID:maii3k3G1 2 3 4 5
ではなく
0 1 2 3 4
とゼロから始めるにはどうすれば良いでしょうか?
0271nobodyさん
2008/12/20(土) 23:16:59ID:???俺なら迷ってる時間があったら丸ごと全部再実装する
0272nobodyさん
2008/12/20(土) 23:18:25ID:???0273nobodyさん
2008/12/20(土) 23:18:35ID:???0274269
2008/12/21(日) 01:06:19ID:???>>273さんのやり方で例えば
ttp://www.phpbook.jp/pear/pear_pager/index4.html
このページではどこで-1すれば良いでしょうか?
0275nobodyさん
2008/12/21(日) 01:23:54ID:???0277nobodyさん
2008/12/21(日) 12:44:01ID:???入力はこっちでいじればいいが、出力はgetLinks()の結果を正規表現とかで置換するしかない。
どっちかっつーといじりたいのは変数の方じゃなくて画面表示の方だろうしな。
インターフェイスはおおむね決まってる(パクる)から、残りの作業は実装だけだしな。
0278nobodyさん
2008/12/21(日) 12:51:30ID:???0279nobodyさん
2008/12/21(日) 18:50:29ID:???ページの管理を楽にしようと思っているのですが
馴れていない人がやると、まずいことはありますでしょうか
0280nobodyさん
2008/12/21(日) 18:58:59ID:???0281nobodyさん
2008/12/21(日) 19:06:00ID:???txtをrequireする、の意味がまったく分からん。
ファイル名に「../../../」とか指定されると、ヤバいファイルを開かれる危険がある(ディレクトリ・トラバーサル脆弱性)。
総じて、予期しないファイルを開かれないような対策が必要になる。
数種類しかないなら、決まった文字列以外は許可しないようにする。
たくさんあってそうするのが面倒なら、「/」を入力されたらエラーにする。
hoge.txtを開きたいなら「hoge」の部分だけ入力させる、などの対策が必要。
ファイル名は自分で決められるんだし、[0-9a-Z-_]あたり以外の文字列が来たら問答無用でエラーになるようにするのが無難だな。
0282nobodyさん
2008/12/21(日) 19:34:34ID:???ありがとうございます
HTMLで記述したファイルの拡張子をPHPに変え、
任意の部分にrequireでtxtファイルを読み込むと
メニューなどの管理が楽になると某サイトで読みました
それをメニューではなく内容に変えれば、
外観や増えていくページの管理が楽になるのかなってことで
初心者ながら、勉強もかねて質問をさせていただきました
自分の決めた文字列だけを対象にするということで
switch ((string)$page):
case 'log1':
case 'log2':
略
break;
default:
echo "ファイルが見つかりません";
endswitch;
こういった記述でよろしいのでしょうか
0283nobodyさん
2008/12/21(日) 19:45:19ID:???0286nobodyさん
2008/12/21(日) 20:04:16ID:???コードがないとなんとも言えんわな。
やってみて、動くコードができてから来たほうがいい。
何もやらずにいきなり聞く姿勢は歓迎されんし。
0287nobodyさん
2008/12/21(日) 20:09:44ID:???どう書けばいいんでしょうか
じゃ勉強の糞の足しにもなりゃしねぇよカス
0290nobodyさん
2008/12/21(日) 20:38:48ID:???努力します
>>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>
0291286
2008/12/21(日) 21:01:57ID:???それが動く事に少なからず衝撃を受けた。
requireやincludeは、基本的にPHPプログラムを読み込むためのもの。
それだとたぶん、txtの中にPHPプログラムとして解釈可能な文字列があると、実行されてしまう。
単純にテキストファイルの中身を読み込む場合、file_get_contents()を使ったほうがいい。
動くなら問題ないっちゃあないんだが…
0292nobodyさん
2008/12/21(日) 21:07:15ID:???「評価されると危ないので避けたほうがいい」という意見は変わんないけどな。
txtは自分が編集するから、安全といえば安全なのだが、無駄な危険の芽は摘んだほうがいい。
いつの日かうっかりtxtにexit();とか書き込んだらエラーになるし。
0293nobodyさん
2008/12/21(日) 21:39:17ID:???うっかりが起きないとも限らないので
file_get_contents()について調べてみます。
勉強になりました。
ありがとうございました。
0294nobodyさん
2008/12/21(日) 21:45:08ID:???まぁ、動いているので問題ないけど、
コーディングのマナーとしてはよろしくないかもね
・require等の中に変数は入れない方がいい
・比較するときにキャストして使う時にキャストしないというのは問題になることがある。
前者は設定によってはリモートでのコード実行につながるから
後者は比較が通っても、問題のある変数で実行する可能性があるから
0297nobodyさん
2008/12/21(日) 22:58:47ID:???0299nobodyさん
2008/12/22(月) 18:00:09ID:???2週間位で基礎を学ぶには何したら良いんですか(';ω;`)ウォウォ…
0300nobodyさん
2008/12/22(月) 18:02:13ID:???0301nobodyさん
2008/12/22(月) 18:06:33ID:???0302nobodyさん
2008/12/22(月) 18:21:33ID:???0303nobodyさん
2008/12/22(月) 18:26:34ID:???「なんで?なんで?なんでこうなるの?」と思いながら丁寧に読んだり、
チョっとした機能を追加してみたりして、
いろいろもがくといいんじゃないだろうか。
0304nobodyさん
2008/12/22(月) 20:08:10ID:???グローバル空間にexplodeしてたりするスクリプトが多すぎる。
0305nobodyさん
2008/12/22(月) 20:09:08ID:???0307nobodyさん
2008/12/22(月) 20:18:07ID:???0308nobodyさん
2008/12/22(月) 22:15:31ID:???初めてのプログラミングがPHPで、配列/連想配列でこけたけど、しばらくしてからやってみたらすぐ理解できた。
あんまり根詰めないで気楽にまったりやるといいよ。
読むだけじゃなくて手も動かすといい。
サンプル丸写しして、いろいろ自分で弄ってみるんだ。
エラー出ればメッセージ出て何が原因かすぐわかるしね。
0309299
2008/12/22(月) 22:16:58ID:W3OrxKsTどっかから?
どっかから?そのどっかから?はどっかから?
つまり僕が言いたいのはどっかから?なんです。お願いします。
0310299
2008/12/22(月) 22:39:19ID:W3OrxKsT( ´_ゝ`)フーン
「どうもありがとう」って言っといてだってお兄ちゃんが
妹より
0312nobodyさん
2008/12/22(月) 22:59:57ID:???0313nobodyさん
2008/12/22(月) 23:00:21ID:???0315nobodyさん
2008/12/22(月) 23:15:14ID:zcPu3Ss9PHP5のみサポートの有名なFWで開発してみて、動いたらソースを読むのが吉
0316nobodyさん
2008/12/23(火) 00:46:09ID:???0317nobodyさん
2008/12/23(火) 02:41:59ID:???0318nobodyさん
2008/12/23(火) 03:56:34ID:207JnJAgPHPはあまり分らないもので
0321nobodyさん
2008/12/23(火) 13:04:10ID:???$array=array('name'=>'aki','age'=>23,'karesi'=>'futsu');
foreach($array in $key=>$item) {
echo "$key $item\n";
}
0322nobodyさん
2008/12/23(火) 13:54:23ID:???0324nobodyさん
2008/12/23(火) 17:43:37ID:???0325nobodyさん
2008/12/23(火) 18:14:25ID:???0326nobodyさん
2008/12/23(火) 18:37:45ID:???ってか、Cは却って難しい
0327nobodyさん
2008/12/23(火) 20:41:02ID:???マニュアルにあるSQLite3ってやつとは何が違うんでしょうか
0328nobodyさん
2008/12/23(火) 20:45:19ID:???0329nobodyさん
2008/12/23(火) 21:06:01ID:???ググってもPDOのことしか見当たらずそこからマニュアルに流れ着いて
SQLite3文?って物があるのを知ったのでどういった違いがあるのかなと思ったのですが
どっちを使っても構わないってことでしょうか
0330nobodyさん
2008/12/23(火) 21:06:50ID:???0331nobodyさん
2008/12/23(火) 21:19:15ID:???どちらがいいのかはわかりませんが、せっかくなのでSQLite3も使ってみます
0332nobodyさん
2008/12/23(火) 21:44:59ID:???元々はそのそれぞれに対して、よく似てるけどちょっとずつ形の違う関数がいっぱいあった。
で、それが不便だからって事で、「同じ書き方でどれにでもアクセスできるような仕組みを作ろう!」となった。
それがPDO。
PDOを使って書かれたプログラムは、DBがSQLiteからMySQLに変わっても、PDOクラスをnewしてるところだけ書き換えれば普通に動く。
また、PDOひとう覚えれば、どのDBでも使えるようになる、というメリットもある。
0333nobodyさん
2008/12/23(火) 21:50:29ID:???0334nobodyさん
2008/12/23(火) 21:50:51ID:???0335nobodyさん
2008/12/23(火) 21:57:29ID:???これだけだとバランス取れないので、一応デメリットも。
全DBでなるべく共通の操作を提供する、という仕組みのため、一部のDBに固有の機能が使えなかったりする事がある。
よくある話だと、MySQLの持続的接続が使えなかったりな。あと、パフォーマンスでもPDOは若干劣る。
個人で使う最大のメリットは、プリペアドステートメントのサポートだと個人的に思う。
SQLインジェクションの危険性をほぼゼロにできる上に、プログラムの可読性も上がる。
0336nobodyさん
2008/12/23(火) 21:58:54ID:???それってパフォーマンスに影響するんだっけ?ベンチとった?
0337nobodyさん
2008/12/23(火) 22:14:41ID:???SET NAMES 危ないって聞くし。
0338335
2008/12/23(火) 22:49:27ID:???んな事いったら、sqlite関数やmysql関数を使ってしまえば、将来のDB変更の自由度が失われるわけだが。
俺は自由度や性能云々以前に、DB依存のコードがそこら中にあるのを気持ち悪いと感じる。そんなものはどっかで隠蔽されるべきだ。
(実際問題、DBを置き換えるなんて事態は普通ないだろうけどな)
0341nobodyさん
2008/12/25(木) 05:57:49ID:???>>PDOクラスをnewしてるところだけ書き換えれば普通に動く
SQL文自体がDB固有になるだろうから、現実的にそれはあり得ないんじゃないか?
(標準SQLだけで書かないでしょふつう)
俺的なPDOのメリットは、DB関連関数をどのDBにも共通で使えるため開発の学習量を
減らせること。これはソースコードの可読性の向上、メンテ性の向上にもなる。
0342nobodyさん
2008/12/25(木) 18:01:58ID:???0343nobodyさん
2008/12/25(木) 20:20:04ID:???単純にPDOだけで実現できるわけじゃぁないが、
PDOで標準SQLだけを使うか、
PDOよりも抽象化したFWを使うわけで、
素の関数を使うよりは汎用性が高い。
どっちの言うことも大きく間違っちゃいないわな
0344nobodyさん
2008/12/29(月) 23:28:23ID:hqhRjo690345nobodyさん
2008/12/29(月) 23:37:49ID:???0347nobodyさん
2008/12/31(水) 11:35:34ID:???確認用のダイアログを出すにはどうすれば良いでしょうか?
実行しますか?
【OK】 【キャンセル】
※ダイアログを表示し【OK】が押された場合のみ
submit処理を行ういたいです。
0348nobodyさん
2008/12/31(水) 11:47:59ID:???超JavaScript
ググれば死ぬ程出てくる
一番最初に引っかかったページ http://promptbox.jp/blog/memo/index.php?itemid=785
お年玉くれw
0350nobodyさん
2008/12/31(水) 12:39:59ID:???0351nobodyさん
2008/12/31(水) 13:25:47ID:???0352nobodyさん
2008/12/31(水) 13:30:12ID:???0353nobodyさん
2008/12/31(水) 16:42:47ID:???formのプルダウンメニューの値を送信ボタンで渡すのはわかるのですが
プルダウンで選択しておいてリンクをクリックしたときにその値を一緒に
送るような使い方はできるのでしょうか。
ようはメニューでレイアウトの種類を選択して、リンク先をそのレイアウトで
表示させるといったことをしたいのですが。
0354nobodyさん
2008/12/31(水) 17:24:24ID:???0355nobodyさん
2008/12/31(水) 18:25:42ID:???その後ググってるとJavaScriptでメニューの値が取得できるようですので
これとonClickだかでどうにかできるのかなってことでJSはわからないんですが
少し勉強してみようとおもいます
スレ違い失礼しました。
0356nobodyさん
2008/12/31(水) 18:29:31ID:???工数増えるけどPHPでできないこともない
まぁガンガレ
0357nobodyさん
2008/12/31(水) 18:57:38ID:???プルダウンを変更した時点でリンク先を書き換えるか、クリック時にフォームのsubmitイベントを呼び出すか。
0359nobodyさん
2008/12/31(水) 19:01:23ID:???一度選択したら2回目以降は覚えていて欲しいだろうからな。
0360nobodyさん
2008/12/31(水) 19:49:56ID:???変えたいと思います。
どうすれば同一phpページをパラメータURLを指定する事により表示内容を変更する事が出来ますか?
http://www.test.php=1234
http://www.test.php=1235
0361nobodyさん
2008/12/31(水) 19:52:15ID:???0362nobodyさん
2008/12/31(水) 20:01:42ID:???http://www.example.com/?page=1234
こういう形なら$_GET['page']で1234が取得できるから
これを使って切り替えれば良い
ただしpage=1234の1234は誰でも値を入れる事ができるから
チェック等は必ずするように
0363360
2008/12/31(水) 20:14:49ID:???ヒントをありがとうございます。
>>362
詳しくご解説頂きありがとうございました。
早速「ガキ使い」を見ながらプログラミングしてみようと思います。
0364nobodyさん
2009/01/03(土) 12:58:05ID:???動作確認を行いますよね?
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
※要するに動作確認をする場合には次の用にしなくてはならないので。(まっ、これしか方法は無いかな?)
http://localhost/site1/index.html
http://localhost/site2/index.html
0365nobodyさん
2009/01/03(土) 13:04:40ID:???0366nobodyさん
2009/01/03(土) 13:12:49ID:???0367nobodyさん
2009/01/03(土) 13:20:37ID:???0368nobodyさん
2009/01/03(土) 13:31:35ID:???0369nobodyさん
2009/01/03(土) 13:31:42ID:???0370nobodyさん
2009/01/03(土) 13:45:12ID:???LinuxじゃないとVirtualHostは使えないのではないですか?
それともWindows環境でも出来るのですか?
>>366
取り敢えず、
http://tech.bayashi.net/svr/doc/apache/mod_rewrite.html
のサイトで勉強してみようと思います。
実務でphpを使ったWEBサイトの開発とかした事が無いのですが、
実務でphpで開発を行う場合にテキストエディタだけを使っているプロジェクトは少ないですか?
あと、複数サイトの開発を1台のPCで行う場合に、>>364みたいな感じで行うのは
能率が悪いでしょうか?
0372nobodyさん
2009/01/03(土) 13:54:52ID:???0374nobodyさん
2009/01/03(土) 14:00:48ID:???0375nobodyさん
2009/01/03(土) 14:19:04ID:???複数サイトをプロジェクト(複数人数)でやるんだから、ファイルのアップロード方式の方が重要。複数の人間がftpでアップするのなら、それを管理しやすい方法で
あと、htdocs/aaa/bbb/ とかでやった場合、mod_rewrite の RewriteBase が後でアレな時あり
プロジェクトを管理できれば良いので、エディタは何でもいい
0376nobodyさん
2009/01/03(土) 14:38:30ID:???サイト側もcheckoutするのだ
0377nobodyさん
2009/01/03(土) 14:55:16ID:???0379nobodyさん
2009/01/03(土) 15:57:48ID:???>370
同時にいじるなら、何も考えずにやってるとアクセスログが同じファイルになってしまうので、やりづらいと思う。
そのままでもできるけど、バーチャルホストの方がエラーログの切り分けが簡単。
あとは両プロジェクトで同名のクッキーを使った場合衝突が発生する点かな。セッション周りが特に危険。
あと、本番環境に持っていく際に、相対リンク/絶対リンクとか周りで絶対いくつかリンク切れが発生すると思う。
以上のような点を気にしなくて良いのならば、そのままでもいいんじゃない?
0380379
2009/01/03(土) 16:44:44ID:???クッキーは発行パスを適切に指定すれば混ざらないが、本番環境への移行の際に適切な修正をする必要がある。
0381nobodyさん
2009/01/12(月) 12:35:49ID:???preg_matchなど公式マニュアルに出ている内容については理解したのですが、
Perlとは微妙に違うリテラルやトークンの使い方について詳しく説明してある
ドキュメント等はないでしょうか?
0382nobodyさん
2009/01/12(月) 13:43:52ID:???だとしたら
ttp://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt
補記 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では有効
0383nobodyさん
2009/01/12(月) 15:24:30ID:???参考にメモさせていただきました
0384nobodyさん
2009/01/13(火) 02:11:38ID:???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もそれに該当する操作が必要ないのか?と気になりましたので・・・・
0385nobodyさん
2009/01/13(火) 03:08:48ID:???0386nobodyさん
2009/01/15(木) 22:20:46ID:???配列を検索して特定の文字が含まれていた場合そのインデックスを返す
っていうのをやりたいのですが、わかりません。よろしくお願いします。
インデックス1を返して欲しいんですが、何も返ってきません。
***テキストファイルの中身*******
群馬県
栃木県
茨城県
埼玉県
東京都
****************************
<?php
//ファイルを開く
$filename="test.txt";
//配列に代入する
$f1=file($filename);
//特定の文字が含まれる要素を探す
$word="栃木県";
$key=array_search($word,$f1);
print($key);
?>
0387nobodyさん
2009/01/15(木) 22:27:13ID:???ファイルを配列に入れて返します。 配列の各要素はファイルの各行に対応します。改行記号はついたままとなります。 失敗すると file() は FALSE を返します
0388nobodyさん
2009/01/15(木) 22:28:50ID:???0389nobodyさん
2009/01/15(木) 23:00:30ID:???>>388
レスありがとうございます。
この検索の場合は完全に一致するものしか検索できないんですね。
例えば
$word="玉";
とした場合に
埼玉県のインデックスの3を返すというのは無理なんでしょうか?
0392nobodyさん
2009/01/16(金) 15:17:30ID:???strposって、最初に出てきた位置を返す関数じゃない?
「あるかどうか」を調べる関数のほうがいいんだけど。
0393nobodyさん
2009/01/16(金) 15:19:44ID:???0394nobodyさん
2009/01/16(金) 16:25:58ID:???そこまでに\nがいくつあるか
ウマー
0395nobodyさん
2009/01/16(金) 23:23:04ID:???>392
strposは文字列検索としては最速の部類。
他の選択肢はpreg_match位しかないが、preg関数とstr関数じゃお話にならんほど速度が違う。
0396nobodyさん
2009/01/16(金) 23:24:33ID:???0397nobodyさん
2009/01/16(金) 23:28:16ID:???0398nobodyさん
2009/01/17(土) 11:25:45ID:???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()使う。
0399nobodyさん
2009/01/17(土) 11:38:45ID:???というわけで、
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_系使うように。
0400nobodyさん
2009/01/17(土) 11:43:51ID:???>>384
気持ち悪いなら明示すりゃいい。というか、色んな意味で明示したほうが良いと俺は思う。
phpは、リソースのオープンは明示しなくても自動的に閉じてくれる。(ファイルであれDBであれ)
>>382
PHP5から鬼車。mb_ereg()系で。
preg_match()では使われてないのでは?
0401nobodyさん
2009/01/17(土) 11:53:04ID:???俺の場合
Java : PHP = 5 : 5
ただ、レンタルサーバ代がJavaだと高いから力配分を
1:9程度に持って行こうかと思ってる。
0403nobodyさん
2009/01/17(土) 12:05:09ID:???$a = array('a', 'b', 'c');
foreach ($b as $k => $) {}
実行すれば分かる
0409nobodyさん
2009/01/17(土) 12:29:37ID:???0411nobodyさん
2009/01/17(土) 12:34:40ID:???$ary = file('test.txt') or array();
$ary = file('test.txt') or exit;
とか。もしくは例外使う。
何か関数からの出力を得る度にifで1ブロック使うなんてナンセンスすぎ。
0412nobodyさん
2009/01/17(土) 12:38:43ID:???0413399
2009/01/17(土) 12:39:51ID:???あのな。
言っておくが、>>399みたいな処理は普通はクラスのメソッド通すなりするわ。
めんどくさいからはしょってるだけだろーが。分かるか?あ??
なんか>>411見てると、俺の会社の全然使えないカスPGにそっくりで殴り倒したくなるわw
0414nobodyさん
2009/01/17(土) 12:40:56ID:???0415nobodyさん
2009/01/17(土) 12:41:35ID:???誰かが答えるとそれには文句つけないと気がすまないんだな。
どうしようも無いカスだなw
0416nobodyさん
2009/01/17(土) 12:42:27ID:???たかがPHPでしょ
動けばいいじゃん
ばか?
0417nobodyさん
2009/01/17(土) 12:43:17ID:???0418nobodyさん
2009/01/17(土) 12:46:56ID:???0419nobodyさん
2009/01/17(土) 12:50:26ID:???/⌒ ⌒\ ) 『 開こうとしているファイルが必ず開けるとは限らないわな』っと。
/( ●) (●) \ )/⌒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┬-| ,/ .| |
ノ:::::::: `ー'´ \ |
0420nobodyさん
2009/01/17(土) 12:52:06ID:???Java使いが一番
0422nobodyさん
2009/01/17(土) 12:53:47ID:???0423nobodyさん
2009/01/17(土) 13:03:06ID:???0424nobodyさん
2009/01/17(土) 13:46:03ID:???PHPやってると頭だけではなく性格まで悪くなるらしいから気をつけようww
融通利かないやつやコミュニケーション能力無いやつは
PGだろうが何だろうが使えん
うちにも1名いて給料の査定も下がったはずだが、はやくその理由に気付いて辞めてくれ
0425nobodyさん
2009/01/17(土) 17:45:47ID:???どういうわけか土曜日だけ文字化けしてしまいます。
解決策はないでしょうか?
<?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));
}
?>
0426nobodyさん
2009/01/17(土) 18:23:30ID:???コードをShift_JISで書かないでUTF-8にするだけで解決。
0427nobodyさん
2009/01/17(土) 18:52:25ID:???一発で解決しました。ありがとうございます。
本当文字コードって難しい。
スクレイピングでサイト作る人とか超尊敬。
0429nobodyさん
2009/01/18(日) 07:29:09ID:???土曜日だけどうしても文字化けで表示できず
いろいろと試行錯誤した結果わからなかったので
質問しました。
()除いたりといった試行錯誤の名残をそのまま
書いてしまいました。ごめんなさい。
0431nobodyさん
2009/01/18(日) 20:28:36ID:???そんな俺に、一冊買うならコレ!っていうPHPの参考書を教えてください。
0432nobodyさん
2009/01/18(日) 20:32:39ID:???http://www.php.net/manual/ja/
0434nobodyさん
2009/01/18(日) 22:30:36ID:???0435nobodyさん
2009/01/18(日) 23:59:27ID:542zz2rdsubmitボタンが押されたときに調べて、それが通ればsessionに入力項目を追加して次のページへ
ってことをやりたいんですが、
全部の項目が入力されているかを調べるのはonclickにJavascriptでチェック出来ますが、
そのあと動的に選んだ値をphpのsession変数に追加するのってどうしたら良いのでしょうか?
0436nobodyさん
2009/01/19(月) 00:03:08ID:???0437nobodyさん
2009/01/19(月) 00:11:48ID:jnDZLn2zすいません、えっとどう言ったら良いのか;
質問のニュアンスを伝えるためにわざと無茶苦茶に書くと、
<input type="submit" onclicke="check()" />
<script type="text/javascript">
function check(){
//checkコード
if(allchecked){
$SESSION['age']=document.getElementsById("age");
}
}
</script>
こんな風な意味合いのことをする方法を聞きたかったのです。
0438nobodyさん
2009/01/19(月) 00:16:55ID:???0439nobodyさん
2009/01/19(月) 00:21:05ID:jnDZLn2zあくまでニュアンスを伝えるために上記のような書き方をしているだけで、
サーバサイドphpとユーザサイドJavascriptの違いは分かってます。
ただphpではこういうチェックが出来ないのでどうしたものかと迷ったので。
0440nobodyさん
2009/01/19(月) 00:21:42ID:???0441nobodyさん
2009/01/19(月) 00:22:12ID:???0442nobodyさん
2009/01/19(月) 04:21:49ID:???よく意味がわからんが・・・
<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を受けとってセッション変数に放り込むなり好きにするヨロシ。
0443nobodyさん
2009/01/19(月) 04:44:39ID:???0444nobodyさん
2009/01/19(月) 17:58:38ID:???issetでもisSetでも書けるくさいなぁ(´・ω・`)
0445nobodyさん
2009/01/19(月) 20:15:28ID:???0446nobodyさん
2009/01/20(火) 00:26:44ID:???それはありえない
preg_replaceは正規表現の処理が入る分遅くなる
ついでにいうと、単純な置換ならstrstrよりstr_replaceの方が速い
0447445
2009/01/20(火) 00:28:42ID:???じゃあここのはウソってことか。。。
ttp://phpspot.org/blog/archives/2006/11/12php.html
0448nobodyさん
2009/01/20(火) 00:37:17ID:???0450nobodyさん
2009/01/20(火) 01:55:00ID:???str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4
PHPの勉強の前に、まず英語勉強しようぜ
0454nobodyさん
2009/01/20(火) 14:17:46ID:auDP4Xko0455nobodyさん
2009/01/20(火) 14:24:08ID:???意図がいまいちわからない。
あ、エスケープはしっかりしろよな。
0457nobodyさん
2009/01/20(火) 23:14:20ID:FkFXLWeKここを見ながら勉強中で、ひとつ前の
Step9・入力された値をPHPでチェックする
まではうまくいったんですが、
Step10・入力された値をJavaScriptでチェックする
が、うまくいきません。イントラネットとかいうのが関係してるんでしょうか。。
何度も確認したんですけど、警告ウインドウが出てきません
0458nobodyさん
2009/01/20(火) 23:21:44ID:???0459nobodyさん
2009/01/21(水) 03:11:36ID:???あとjavascript有効になっている?
0460nobodyさん
2009/01/21(水) 09:46:52ID:VkT7uFdTjavascriptは、セキュリティのところでいじればいいんですよね。
それでしたら有効になってます。
なにも入れないで計算すると
-------------------
+=0
前の画面へ戻る
-------------------
って出ます。IEから見るソースは
-------------------
<html>
<head>
<title>calc.php</title>
</head>
<body>
+=0
<br/>
<br/>
<a href="#"onclick="history.back();return false;">前の画面へ戻る</a>
</body>
</html>
------------------------------
です。
書いてるソースのほうは
http://php5.seesaa.net/category/3813207-1.html
にあるとおりだと思います。
0461nobodyさん
2009/01/21(水) 10:44:16ID:???最初に実行するプログラムはなに?
calc.htmlだよね?
そこからcalc.phpで処理してってことだけど、
form action とか大丈夫これどうり記述しているよね?
jsも読み込んでいるよね。
パスもあっているよね?
0462nobodyさん
2009/01/21(水) 13:51:32ID:ruw5pBd2<?
$line = "==名前==";
$line = ereg_replace("==(.*)==", $_REQUEST["\\1"], $line);
?>
上記スクリプトで $line を name="名前" のフォーム値に置換したい
のですができません。どうすれば置換できるでしょうか?
0463nobodyさん
2009/01/21(水) 14:09:33ID:???あとeregよりpreg
0464nobodyさん
2009/01/21(水) 14:58:58ID:VkT7uFdTcalc.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>
-------------------------------------
です。パスがあっているかどうかは、どこを見るとわかりますか?
0466nobodyさん
2009/01/21(水) 15:27:54ID:???の中にはなにが入っている?
sample011までPHPは動いていたんだよね?
わからん。
ほんと。http://php5.seesaa.net/category/3813207-1.html
と同じことしているんでしょう?
calc.jsもsample012のフォルダの中にはいっているんでしょう?
ソースはコピペしてやっているんでしょう?
0467nobodyさん
2009/01/21(水) 16:23:54ID:VkT7uFdT>>466さん
コピペしなおしたらできるようになりました。
でもどこが悪かったのかわからに・・
0468nobodyさん
2009/01/21(水) 19:35:45ID:???なんか変な文字がどこかにはいってしまったか。
おれもコピペでそういうことになったことは
よくある。
見たとこミスはないので、あのソースをきちんと理解
して次進んでいいと思うよ
0469nobodyさん
2009/01/21(水) 21:43:57ID:VkT7uFdT先生ありがとう
0470nobodyさん
2009/01/21(水) 22:33:22ID:???以後もし動かったら再度コピペすることを望みます。
0471462
2009/01/22(木) 10:25:52ID:PnoeEoeZすみません、マニュアル見直しました。
ところで、
$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
0472nobodyさん
2009/01/22(木) 10:36:31ID:???0473nobodyさん
2009/01/22(木) 12:54:40ID:???$line= preg_replace("/==(\S*)==/e", 'sprintf("<input type=\"text\" name=\"$1\" value=\"%s\" />", isset($_REQUEST["$1"]) ? $_REQUEST["$1"] : "")', $line);
こうやりたいのか?
キー文字は==全角==じゃなくて==半角==がいいと思うが
0474473
2009/01/22(木) 13:16:38ID:???0475462
2009/01/22(木) 13:23:02ID:PnoeEoeZすいません、解決しました。バカみたい・・・
$line = preg_replace("/==(.*)==/e", 'sprintf("%s", $_REQUEST["$1"])', $line);
0476nobodyさん
2009/01/23(金) 05:27:52ID:L5uKYwrL17章のサンプルアプリケーションが動かない。
これって仕様かな?
おれはcent os5でやったんだが、画面真白で。
linuxで誰かやってくれませんか?すいませんが
お願いします。ソースは一応レンタルサーバーと
ホームページ上に貼り付けているんで、
ソースダウンロードできないんだ。
http://gichioka.web.fc2.com/source.zip←ソースをダウンロード
http://www.krautgrrl.com/learningphp/index.php/site/C17/←データベース
とかもろもろ貼ってあります。
お手数ですが、よろしくお願いします
0477nobodyさん
2009/01/23(金) 05:29:33ID:L5uKYwrLほんとはphpの本のスレに行きたかったんだけどなくなってしまった
みたいで。
すいませんが、よろしくお願いします
0478nobodyさん
2009/01/23(金) 05:34:48ID:L5uKYwrLサンプルコードありました。
昔はなかったのに
http://www.oreilly.co.jp/books/9784873113654/
ここです。
0479nobodyさん
2009/01/23(金) 07:37:08ID:???読んで理解できたためしがない
0481nobodyさん
2009/01/23(金) 16:01:37ID:???session_start();
$anc = array('anc1' => 'one', 'anc2' => 'two', 'anc3' => 'three'); $html = '<html><body><form action="">';
switch ($_REQUEST['m']) {
case '1':
$html .= 'confirm<br />';
foreach ($anc as $k => $v) { $_SESSION[$k] = $_REQUEST[$k]; if ($_REQUEST[$k]) { $html .= $v . '=checked! '; } }
$html .= '<br /><input type="hidden" name="m" value="2"><input type="submit" value="go!">';
break;
case '2':
0482nobodyさん
2009/01/23(金) 16:04:18ID:???if ($fp =@ fopen('anc.dat', 'a')) { fputs($fp, date("Y/m/d H:i:s ") . ' ' . $param . ' ' . $_SERVER["REMOTE_ADDR"] . "\n"); fclose($fp); } $html .= 'thank you!';
break;
default:
$html .= 'question<br />'; foreach ($anc as $k => $v) { $html .= '<input type="checkbox" name="' . $k . '" value="1">' . $v . ' '; }
0483nobodyさん
2009/01/23(金) 16:08:55ID:???}
$html .= '</form></body></html>'; echo $html; exit;
?>
パソコンが今使えないので携帯で消化してしまってごめんなさい
このプログラムのoneやtwoを別のファイルに記録したいんですが
どうすればよいでしょうか?
すごい初心者なので、良ければ具体的に教えていただければ嬉しいです
スレチや失礼あればごめんなさい
0484nobodyさん
2009/01/23(金) 16:11:58ID:Jr51+scJテンパってます…
お待ちしてます
0485nobodyさん
2009/01/23(金) 16:34:47ID:???「oneやtwoを別のファイルに記録したいんですが 」
日本語か?それ。
0486nobodyさん
2009/01/23(金) 16:40:52ID:Jr51+scJやはり分かりにくかったですか
questionの解答がoneやtwoになっていて
その解答を記録したいんです
解答した日付時刻などはanc.datに記録されますが
なにを答えたかが記録出来てないと思うのですが
0487nobodyさん
2009/01/23(金) 16:58:18ID:???なんかエラー出てると思うけどねぇ。
エラーを確認するのが解決への近道だよ。
たぶん、原因は↓かと。
$param .= $v . '=checked! ';
$param .= "{$v}=checked! ";
に変えてみたらどうかな?
0488nobodyさん
2009/01/23(金) 17:08:51ID:Jr51+scJあれ
paramじゃなくてそこはhtmlにではないですかね
僕の方では一応エラーは出てません
0489nobodyさん
2009/01/23(金) 17:21:03ID:???セッションが引き回せていないだけ、ってオチじゃないの?
case '2'のところで、print_r($_SESSION)ってやってみれば?
0490nobodyさん
2009/01/23(金) 17:27:13ID:Jr51+scJすいません
どの辺りに入れたらいいかよろしければおねがいします
セッション引き回す?の意味がよく分からないのですが
…念のためお聞きしますが、このプログラムでは解答をファイルに書き込めないですよね?
0491nobodyさん
2009/01/23(金) 17:37:42ID:???もう少し頭を整理したら?
回答はどのファイルに書き込むの?
> oneやtwoを別のファイルに記録したいんですが
回答毎に別のファイルを作るってことかい?
0492nobodyさん
2009/01/23(金) 17:39:39ID:???//if ($_REQUEST[$k]) {
if ($_SESSION[$k]) {
0493nobodyさん
2009/01/23(金) 17:52:40ID:???デバッグなんだから、どこでもいいよ。
とりあえず、聞く前に試したら?
セッションに代入した(はずの)後、
代入された(はずの)セッションを使う前
0494nobodyさん
2009/01/23(金) 17:58:15ID:Jr51+scJこれをwebアンケートのようにしたときに
これを解答した人が何を選んだのか記録するファイルを作りたいんです
今はanc.datをつくればそこに日付等が記録されますが
できれば加えてone,two,threeのどれにチェックをつけたかも記録したいということです
記録するのがanc.datファイルでなくてもよいです
>>492
ありがとうございます!
それで上記みたいな事ができるでしょうか?
今は分かりませんが、夜に試してみます
0495nobodyさん
2009/01/23(金) 18:00:35ID:Jr51+scJ自分でさっきいろいろ挿入してみました
どうしてもエラーが出てしまったので
あとで>>492を試してみます
ありがとうございます!
0496476です。
2009/01/23(金) 19:42:52ID:L5uKYwrLWarning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
でした。
わかる人いますか?
ぜんぜんわかりません。
ちなみにsmartyはhttp://hangar5.blog48.fc2.com/blog-entry-27.html
でインストールしました。
0497nobodyさん
2009/01/23(金) 20:01:20ID:???あるphpで書かれたスケジューラを使っているのですが、ユーザ認証の際に
POSTで パスワードを受け取り($pwd)、これの一部をsaltとして使い、crypt()でパスワードを暗号化しています。
おおまかな処理は以下の様な感じで行っています(htmlspacialchars等は省きました)。
/* $userid, $pwd => POSTから受け取ったユーザ名・パスワード */
$ pwd_cr = crypt( $pwd, substr( $pwd, 3, 2 ) );
/* SQL文作成 */
$sql = "SELECT id, passwd FROM users ";
$sql .= "WHERE id='".$userid."' AND password='".$pwd_cr."'";
/* SQLの結果セット取得 */
$res = pg_query($conn, $sql);
$cnt = pg_num_rows($res);
教えてもらいたい事ですが、この crypt( string $str [, string $salt ] ) について、
$str と $salt が完全に同じものである場合、どのような環境でも、生成される文字列は常に同一のものになるのでしょうか?
なんでまたこんな事を聞くかと言うと
Windows ServerにApacheとPHPをぶちこんで動かしていたら、Apache再起動のタイミングで
何故か 同一の $str ・ $salt から生成される文字列が変わってしまった経験が今日を含めて2回起きたからです。
そりゃ確かに php.netのマニュアルには
> そのシステム上で使用できるその他のアルゴリズムを使用します
と書いてあるんですが…ンなcryptの動作がコロコロ変わるものなんでしょうか?
0498nobodyさん
2009/01/23(金) 20:04:21ID:???crypt の挙動が変わる辺りで Windows Update を挟んでいたかどうかは、情けない事にわかりません。
むしろ、 Windows Update で crypt の挙動が変わる可能性があるなら、どのHotfixが怪しいか教えてもらえるとありがたいです。
0499nobodyさん
2009/01/23(金) 20:10:33ID:???「 /var/www/html/login.php 」について、下の2つの確認まじおすすめ
・確実に存在しているのか
・Apacheを実行しているユーザが読めるのか(パーミッションを確認)
0500476です。
2009/01/23(金) 20:41:49ID:L5uKYwrL/var/www/html/login.php
確実にあります。
パーミッションもユーザーが読めるようにしています。
smartyもできてます。
if (class_exists('Smarty')) {
$smary =& new Smarty;
printf("you can use Smarty(version %s).\n", $smary->_version);
} else {
echo "you can't use Smarty.\nplease install Smarty library.";
}
で確認をとりましたし、テストデータもいれました。
ってことはlinuxだからだめってことですよね?
ほかに考えられないんですよ。
基礎からのphpのサンプルアプリケーションもlinuxでだめでした。
0501nobodyさん
2009/01/24(土) 21:09:15ID:???・ DB関連の記述は間違っていないか
MySQLみたいだけど、特に $db_host 等
・ php自体の記述が間違ってないか
つーかphpの文法はわかってる?あとファイル始端終端の無用な空白行やコメント、文字コードとかにも注意。
・ 最初に $test = 0; を、随所に echo "TEST".$test.": OK";$test++; を入れて止まってるところを探せ
php勉強するなら結局はコレ大事。
あとは、本気でどうにも出来ないけどどうにかしたい、って言うなら↑の3つを試した後で
今使ってるMySQLの中身と、今のDocumentRootのディレクトリ構成、php.ini、httpd.conf を、ディレクトリ構成ごとまとめて
zipでうpする位は必要だな。レスが付くかどうかは知らんけど。
>>476 の source.zip だけじゃ db_login.php とか、Auth/HTTP.php とか入ってないっしょ。
ドキュメント見たらなんか、学習に沿って自分で作って配置するものらしいけど…そんなんわからんがな。
これじゃ相当なヒマ人かエスパーじゃない限りレスも何もでけん。
0502476です。
2009/01/24(土) 22:31:06ID:M+3olz+yAuth/HTTP.php これはpearだぜ。
db_login.php はつくったけど、結果はだめでした。
もういいです。すいませんでした。
Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
これも連日ぐぐっているけど、だめ。
orellyに聞いたところ確認するって。
誰か持っていてアプリをlinuxで試した人いるかなって
思ったんだけど、いないみたいですね。
スレ汚しすいません。
持っている方はぜひやってみて。
報告待っています
souce.zipは削除しますので、
暇なエスパーの方でおれやってみようかな?っていう方
はhttp://www.oreilly.co.jp/books/9784873113654/
からダウンロードしてみてください。
ではすいませんでした。
0503nobodyさん
2009/01/24(土) 22:41:25ID:???0504nobodyさん
2009/01/24(土) 23:08:37ID:???そのエラー、稀に文字コードの問題はあるにしてもソースの問題じゃないと思うけど。
サーバー設定で権限がなくて読みに行けないとか、だな。
0505nobodyさん
2009/01/24(土) 23:11:53ID:???0507nobodyさん
2009/01/24(土) 23:23:43ID:???0508nobodyさん
2009/01/24(土) 23:49:33ID:???Unknownとは、読みに行く側のリソースが特定できていないということ。
Web経由のアクセスの場合、login.phpはあるが、権限が不足していたりすると404じゃなく、
phpハンドラーに渡されて、そのエラーになる。普通によくあること。
>>500は「パーミッションもユーザーが読めるようにしています。 」って書いてるが、
読めなくなる原因はファイルパーミッションだけじゃないからね。
0509nobodyさん
2009/01/24(土) 23:56:53ID:???とりあえず、最初に叩くファイルの冒頭にecho "hoge";exit();これでどうなるか。
そっからデバッグしてけば別のエラーになるさ。
0510nobodyさん
2009/01/25(日) 01:33:09ID:???だせぇw
0511476です。
2009/01/25(日) 02:01:51ID:esMzMmSNhttp://gichioka.web.fc2.com/source.zip
すべてのファイルとデータベースとphp.iniを入れました。
よろしくお願いします。
0513nobodyさん
2009/01/25(日) 02:28:51ID:esMzMmSN0516nobodyさん
2009/01/25(日) 03:08:45ID:???これって文章化されたPHP仕様に含まれてますか?
てっきりヒアドキュメントを使わなくてはならないものだと思っていたのですが…
$multiline = "
LINE 1
LINE 2
LINE 3
";
0517nobodyさん
2009/01/25(日) 03:24:57ID:???0518nobodyさん
2009/01/25(日) 03:58:37ID:???VBだと改行で認識するよね。
だからVBからきた人だと、改行入れても
エラーにならない、という仕様のほうが
不思議に思うんでしょう。
0519516
2009/01/25(日) 04:22:47ID:???有名どころのフレームワーク等でも
$multiline = "LINE1\n"
. "LINE2\n"
. "LINE3\n"
と書いているものがほとんどなので、使ってはいけないのかなと疑問を持った次第です。
SQLとか埋め込む時は>>516の方が断然楽ですよね…
ヒアドキュメントはいらない子?
0520nobodyさん
2009/01/25(日) 04:37:23ID:???0522nobodyさん
2009/01/25(日) 05:59:54ID:???例えば
$test['a'][1];
$test['a'][2];
$test['b'][1];
$test['b'][2];
$test['b'][3];
この配列で要素数5を返したいのですが
countでは3が返ってきます。
何かほかの関数や手段はありますか?
0524nobodyさん
2009/01/25(日) 06:08:42ID:???すまんこっちのほうだ
0525nobodyさん
2009/01/25(日) 07:39:19ID:???ttp://jp2.php.net/manual/ja/function.count.php
0526nobodyさん
2009/01/25(日) 08:17:33ID:???>>515
だからさ、login.phpのファイルはあるけど何らかの問題で読めてないんだって。
たとえば、お前らのサーバでも試せるからやってみ。
test.php作ってパーミッションを000にしたファイルにアクセス。
したら、
Warning: Unknown: Failed opening ・・・
になるから。
0527nobodyさん
2009/01/25(日) 08:29:44ID:???0528476です。
2009/01/25(日) 11:45:32ID:esMzMmSNなんででしょうか?
0529nobodyさん
2009/01/25(日) 11:56:54ID:???login.phpの中身を空っぽにしてアクセスしてみ?
0530nobodyさん
2009/01/25(日) 12:04:32ID:???原因はパーミッション以外にいろいろあるよ。
パーミッションだってあってるのかどうか。
他にはopen_basedirとかsafe_modeとか、
CGIで動いてるレンサバなんかならそれに合わせた設定が必要だし。
0533nobodyさん
2009/01/25(日) 12:14:51ID:???Hello Worldが動くかどうかなんて、エスパーじゃあるまいしわからないさ。
が、とりあえず、それを試せば問題は次に移るってこと。
Warning: Unknown: Failed opening '/var/www/html/login.php' for inclusion (include_path='.:/usr/local/include/php/libs') in Unknown on line 0
冗長だけどもっかい書くとね。
Apache:login.phpにリクエスト来ました。ファイルありました。phpハンドラー、後はよろしく。
php:了解、じゃ、ファイルをインクルードして処理します〜。あ、ファイル、インクルードできません。
で、エラー
from:不明なリソース to: login.php action:include result:無理
0534nobodyさん
2009/01/25(日) 12:19:12ID:???パーミッションが間違ってる。
open_basedirの設定にtypoがあって動かない。
include_pathに問題がある
safe_modeの設定に問題がある
PHPがsuexecで動いてて、ファイルの所有ユーザーかグループに問題がある
などなど。
0536nobodyさん
2009/01/25(日) 12:21:27ID:???とでも書いて結果を貼ってもらうってのがいいのかもしれないね。この場合。
0538476です。
2009/01/25(日) 13:36:25ID:esMzMmSNphpinfo(INFO_CONFIGURATION);
かいたやつを入れましたのでよろしくお願いします。
0539476です。
2009/01/25(日) 13:42:05ID:esMzMmSN0540nobodyさん
2009/01/25(日) 13:44:10ID:???ところで、login.phpでecho "Hello World!";はしてみたの?
0541nobodyさん
2009/01/25(日) 13:44:40ID:???0543nobodyさん
2009/01/25(日) 13:49:36ID:???0544nobodyさん
2009/01/25(日) 13:50:22ID:???0545476です。
2009/01/25(日) 14:46:06ID:esMzMmSNはできました。
source.zipアクセスできるようになりましたので、よろしくお願いします。
>>マルウエアをインストールさせるための釣りだな。たぶん。
変なこといわないでください
0546nobodyさん
2009/01/25(日) 14:53:00ID:???そしたら、元のソースにして、エラーが出る個所を特定すればいい。
1行でも解釈できれば例のエラーにはならないから。
で、リダイレクトループとかで問題が出ているケースもあるから、
error_log(__LINE__);とかを怪しいところにはさんで行って、どこまで処理が進んでるかチェック。
0547476です。
2009/01/25(日) 15:00:45ID:esMzMmSNの使い方がわかなんね。
どうやって使うの?
0548nobodyさん
2009/01/25(日) 15:04:41ID:???コマンドラインが使えるならエラーログでtail -f /var/log/httpd/error_logとかで見張ってればよくわかる。
エラーログが見れないんならechoでもいいけど、要するにどこまで処理が進んでるかチェックして
そのエラーメッセージを出せば、新しい情報がとれるでしょ?
0549nobodyさん
2009/01/25(日) 16:08:16ID:???Hellow World→動く
サンプルコードをそのまま挙げた→動かない
これしかやってないでできないできない言うとかありえないっす
0550476です。
2009/01/25(日) 20:01:42ID:esMzMmSNerror_log(__LINE__); でいろいろ調べてみたいと思っています
0551476です。
2009/01/25(日) 20:12:36ID:esMzMmSNPHP Fatal error: require_once() [function.require]: Failed opening required 'config.php' (include_path='.:/usr/local/include/php/libs') in /var/www/html/login.php on line 3
だそうです。
調べてみてもわからん。
0552476です。
2009/01/25(日) 20:13:47ID:esMzMmSNSELINUXは切ってありました。
0553476です。
2009/01/25(日) 20:51:19ID:esMzMmSN無事動いたのですが....動いたといえるのか。
HTTP/AUTH.PHPが作動したのですが、
Member Area のサーバーにはユーザー名とパスワードが必要です。
と普通でます。
で、db_login.phpのデータを入れたんですがだめでした。
もしかして
$AuthOptions = array(
'dsn'=>"mysql://$db_username:$db_password@$db_host/$db_database",
'table'=>"users", // テーブル名
'usernamecol'=>"username", // ユーザ名の列
'passwordcol'=>"password", // パスワード列
'cryptType'=>"md5", // パスワードの暗号化形式
'db_fields'=>"*" // 他の列も取得可能にする
のどこかにデータを入れなくてはいけないのでしょうか?
0555476です。
2009/01/25(日) 21:24:21ID:esMzMmSNとでるんですがユーザー名とパスワードを入れてもうごきません。
初歩的ですいませんが、
>>553のどの部分に自分のデータを記載すればいいのでしょうか?
僕はdb_login.phpにデータが入っているのでなにもいれてなく>>553
のままなんですが。
ここの部分がおかしいんですよね?
0556nobodyさん
2009/01/25(日) 21:31:42ID:???usernameっていうユーザいるの?
0557nobodyさん
2009/01/25(日) 21:35:07ID:???ここはお前専用の質問スレじゃないんだ。
で、login.phpが動かないとか、そもそも入力されたユーザ名・パスワードが間違ってた時の挙動が
どうなるのかを把握してんのか?
それと自分でうpした中のDB.txtの中身を理解してるのか?
具体的には62・63行目。
…もしかしてNG推奨だったのか
0558nobodyさん
2009/01/25(日) 21:35:50ID:???db_login.phpにはそのデータベースにアクセスするための権限情報を保存
0559476です。
2009/01/25(日) 21:38:41ID:esMzMmSN'passwordcol'=>"password", // パスワード列 ←変更
すればいいですか?
あ、mysqlに入っているusernameとpasswordはすでに試しましたが
だめでした。
それがいまいちよくわからないんですよね
なんでだめなのか
0560nobodyさん
2009/01/25(日) 21:39:56ID:???0561nobodyさん
2009/01/25(日) 21:47:18ID:???0562476です。
2009/01/25(日) 22:23:02ID:esMzMmSNマスまずパスが違っていました。
僕のパスはinclude_path = ".:/usr/local/include/php/libs"
なので、ここにpearとconfig.phpを入れてやりました。
そしたら動きました。
>>560さんへ
パスワードはちゃんとハッシュしていますよ。
0564476です。
2009/01/25(日) 22:43:40ID:esMzMmSN0565nobodyさん
2009/01/25(日) 23:06:00ID:???0566522
2009/01/26(月) 01:07:02ID:Ihgtqp1Kそれだと、a・bという項目もカウントしてしまい、7を返すようです。5を返す方法はないですか?
0568522
2009/01/26(月) 05:09:38ID:Ihgtqp1Kすみません、バージョンが4なのでarray_walk_recursiveは使えないみたいです。
他にありませんか?
0569nobodyさん
2009/01/26(月) 05:10:14ID:???0570nobodyさん
2009/01/26(月) 05:48:20ID:???$count = 0;
foreach ($test as $value) {
$count += count($value);
}
echo $count;
0571570
2009/01/26(月) 05:58:46ID:???それ以上になると再帰(リカーシブ)でやったほうがいい
(foreachのネストでも可能だが読みやすさに限界がある)
ただし再帰は頭の回転が速くないと何やってるかわからなくなるので
苦手なら無理して使う必要はない
0573nobodyさん
2009/01/26(月) 06:26:30ID:???http://pc11.2ch.net/test/read.cgi/php/1231850905/
0574nobodyさん
2009/01/26(月) 06:30:54ID:???0575nobodyさん
2009/01/26(月) 10:12:51ID:???わざわざそんなことしなくてもこれでいけるっぽ
echo count($test, 1) - count($test);
0576nobodyさん
2009/01/26(月) 10:29:32ID:???404エラーの際に自作エラーページを表示させるには
どうすれば良いかご存知の方いませんでしょうか。
.htaccessで「AddType PHP5-script html」を指示してしまうと
「ErrorDocment 404 error.html」で指定したページが表示されません。
PHP4の時は両立できたんですが…
0577nobodyさん
2009/01/26(月) 10:41:26ID:2xglnPYyAddType php5-script .html
0579nobodyさん
2009/01/26(月) 11:03:14ID:???あー大文字で書いてしまったのはここに書き込む際の記載ミスです。
実際の.htaccessではご指摘のように記載してます。html拡張子でPHP5は動いてます。
でもそうすると404エラーで自作ページが表示できなくて困ってます。
AddTypeでやってもAddHandlerでやっても結果は同じで、
「AddType application/x-httpd-php .html」でPHP4の環境では両立できるんです。
0580nobodyさん
2009/01/26(月) 11:05:47ID:???まっちろ?
0582nobodyさん
2009/01/26(月) 11:19:56ID:???0583nobodyさん
2009/01/26(月) 11:22:02ID:???自作エラーページのサイズが小さ過ぎるとか。。。
0584nobodyさん
2009/01/26(月) 11:27:03ID:???変化ありませんでした。
IEのHTTP 404 未検出の画面が出ます。
>>583
ファイルサイズは1Kbありました。
0586nobodyさん
2009/01/26(月) 11:46:12ID:???単純なHTMLページの1行目に↓をぶち込んだんですが…
<?php
header("HTTP/1.0 404 Not Found");
php?>
.htaccessで拡張子指定しているのは今は.htmlだけなのですが
存在しない.htmファイルを探させると自作エラーページへ行くことがわかりました。
が、.htmlファイルだとIE規定のページになっています。
.htmlでPHPが動くように指定してしまうとErrorDocmentが
狙った動きをしてくれない、という事でしょうか。
ちなみに今、直接自作エラーページを指定したらIE規定のページが出ましたので
404headerはちゃんと返ってきているようです。
0587nobodyさん
2009/01/26(月) 11:54:43ID:???0588nobodyさん
2009/01/26(月) 12:06:45ID:???PHPで何とか似たような事をやる技があったりしないかなーと
思ったりしたんですが、やっぱ無理すよね。スイマセンでした。
Apacheスレの方で聞いてみます。ありがとうございました。
0589nobodyさん
2009/01/26(月) 14:26:16ID:7H1IWdV1> php?>
何これ。
0590589
2009/01/26(月) 14:27:55ID:???0591nobodyさん
2009/01/26(月) 21:42:45ID:???0592nobodyさん
2009/01/26(月) 23:07:21ID:???なんて言うと思ったか
0593nobodyさん
2009/01/27(火) 06:21:30ID:???0594nobodyさん
2009/01/27(火) 10:00:43ID:???タケヤブヤケタ
山本山?>
0595nobodyさん
2009/01/29(木) 04:21:55ID:???こことおなじものを自分のローカルサーバに設置したいのですがどこかに置いてないでしょうか?
0596nobodyさん
2009/01/29(木) 04:32:25ID:???0597nobodyさん
2009/01/29(木) 07:06:35ID:???サイトの中身良く見りゃわかんだろ・・・
evalは、文字列の中身をphpのコードとして解釈して実行するもの。
base64_decodeしてからgzinflateしてるんだから
base64_encodeしてからgzdeflateすれば、期待の物が出来るんじゃね?
これでわからないんだったら、プログラミングやめた方が良いかもな
0598nobodyさん
2009/01/29(木) 10:51:02ID:???0600nobodyさん
2009/01/29(木) 12:10:04ID:???http://pc11.2ch.net/test/read.cgi/php/1221471692/l50
ここの995=997だろ
0601nobodyさん
2009/01/29(木) 13:24:49ID:???フイタww
淡々と技術情報の交換を2chでしたいってそりゃ無理だろw
2chってそういうとこだとおもうべきだな
0602nobodyさん
2009/01/29(木) 17:55:36ID:???サーバーがPHP5になってしまい
今まで使っていたフリーのメールフォームが使えなくなりました。
PHP5のフリーのメールフォームを探したのですが全然わからず
ここにたどり着きました。
フリーのメールフォームのサイトを教えて頂けないでしょうか?
0603nobodyさん
2009/01/29(木) 18:20:03ID:???0604nobodyさん
2009/01/29(木) 18:24:41ID:???//$_SESSION['abc']; は前ページで123を代入
//ここから
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();
echo $_SESSION['abc'];//123
と表示したいのですが何か方法はないのでしょうか?クッキーとか使わずに。
0605nobodyさん
2009/01/29(木) 18:29:17ID:???要点をまとめてくれないか
0606nobodyさん
2009/01/29(木) 18:40:48ID:???$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();
とすると123も消えるけど、それを消さずに
echo $_SESSION['abc'];//123
と後でも表示させたい。
理想としては
$abc = $_SESSION['abc'];
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy()
$_SESSION['abc'] = $abc;
echo $_SESSION['abc'];
と表示できればいい。
0607nobodyさん
2009/01/29(木) 19:53:27ID:???「どうしても$_SESSION['abc']を使いたい理由」ってのがわからんと、普通のPGは他の手段を考えると思うぞ。
>>606 の中で $abc に入れてるんだったら、そのまま echo $abc; すりゃ良いじゃん、的な。
つーかsession_start()しなくて良いんかな。
長ったらしくない程度に、もう少し質問の背景を含めて、かつ要領良くまとめて質問すれば回答が返って来ると思う。
0608nobodyさん
2009/01/29(木) 20:07:16ID:???ttp://oshiete1.goo.ne.jp/qa3224862.html
0609nobodyさん
2009/01/29(木) 20:25:30ID:???http://pc11.2ch.net/test/read.cgi/php/1231850905/880
理由はどうあれこういうマルチするアホは相手にしないほうがいい
0611nobodyさん
2009/01/29(木) 23:37:26ID:???0612nobodyさん
2009/01/29(木) 23:41:37ID:???「ログイン・ログアウトとは別にセッションデータを引きまわしたい」ってことだろ。
で、普通は>>604みたいなソースにはならないのに、わざわざ教えてgooだか、
phpのマニュアルでセッション破壊用のソースをそれだと勘違いして質問してるだけ。
すでに回答ついてるのに、人の意見を聞けない困ったチャンか、単なる荒し
0613nobodyさん
2009/01/30(金) 10:09:33ID:???ログインログアウトとは別に、スタイルシートをセッションで持ち歩いていて、
ログアウト>>606で書いたようにログアウトとしたときセッションに保存してあるスタイルシート変数も消えてしまいます。
なので、セッション(ログアウト)を消す前に$abc = $_SESSION['abc']; として消した後再び、$_SESSION['abc'] = $abc; などにして再度セッションにいれればなと考えていますが、
うまくいきません。
そこで何かいいほうほうは無いものかと。
0614nobodyさん
2009/01/30(金) 12:27:38ID:???>>613
cookie使えよ。sessionなんかにそんなん入れんな。
sessionに入れるならログアウト=専用スタイルシート破棄として使え。
$_SESSION と session_*()を勉強し直して来い
0615nobodyさん
2009/01/30(金) 23:37:15ID:gxYTwHzLから、別サーバー(自分のブログとか)に
スレの勢いと局、番組名だけを取得して表示させることってできますか?
0616nobodyさん
2009/01/30(金) 23:39:57ID:???0617nobodyさん
2009/01/31(土) 00:20:10ID:Zjr5MV5E<input type="text" name="textbox" value="">
<input type="submit" value="送信">
</form>
<?php
$text = htmlspecialchars( $_POST["textbox"] );
if ( get_magic_quotes_gpc() ) {
$text = stripslashes( $text );
}
print $text;
?>
これ、ゲストの人がコメント書き込むくらいならいいんだけど、自分が投稿しようと思った時に
$_SERVER['PHP_SELF'];が入っているからエディットページ(管理人専用の編集ページ)かなんかでindex.phpに書き込めないと思うんだ。
エディットページでindex.phpに反映させる方法ってない?
0618nobodyさん
2009/01/31(土) 00:28:12ID:???0619nobodyさん
2009/01/31(土) 00:41:31ID:Zjr5MV5E0620nobodyさん
2009/01/31(土) 00:42:37ID:???0621nobodyさん
2009/01/31(土) 00:42:41ID:???>>617 漏れは神様でもエスパーでもないんだから、
おまいのやりたいことを補完して理解なんかできない。
質問は相手に理解できるように書こう。
でも <input type=hidden name=action value=edit>
とか場合わけしる
0622nobodyさん
2009/01/31(土) 00:43:50ID:???0623nobodyさん
2009/01/31(土) 01:07:34ID:Zjr5MV5Eあくまで表示したいのはindex.phpなので、そこんとこどうなんかなーと思いまして。
>>620
と、いうことは$_SERVER['PHP_SELF']を$_SERVER['index.php']にしたらいいってことですか?
0624nobodyさん
2009/01/31(土) 01:09:00ID:???0625615
2009/01/31(土) 01:27:06ID:myPf0iH/<?php
$temp = "http://epg.2ch.net/tv2chwiki/subject.txt";
$html_f=file_get_contents($temp);
$replace = "(2)";
$scriptphp = "<br />";
$word = str_replace($replace, $scriptphp, $html_f);
$hogeru = ".dat<>";
$gogeta = "<br />";
$yabai = str_replace($hogeru, $gogeta, $word);
print $yabai;
print($word1_a);
?>
から、偶数行だけ表示するにはどうしたらいいんでしょうか?
0626nobodyさん
2009/01/31(土) 01:27:12ID:Zjr5MV5E$_SERVER['PHP_SELF'] これ書かなきゃいいんですね。
じゃあそのかわりformのactionにはなんて書けばいいんですかね?
0627nobodyさん
2009/01/31(土) 01:28:37ID:???0628nobodyさん
2009/01/31(土) 01:30:22ID:Zjr5MV5E0629621
2009/01/31(土) 01:35:09ID:???$rtn = file( 'http://epg.2ch.net/tv2chwiki/subject.txt ' );
for ( $n = 0; $n < count( $rtn ); $n = $n + 2 ) echo $rtn[$n];
0631nobodyさん
2009/01/31(土) 01:46:56ID:Zjr5MV5E0632nobodyさん
2009/01/31(土) 01:55:22ID:???<? // index.php
if ( $_POST['textbox' != '' ) { なんか処理 }
?>
<html><body>
<form action="index.php" method="post>
<input type="text" name="textbox" value=""><input type="submit"
</form>
</body></html>
と
<? // kanri_index.php
if ( $_POST['textbox' != '' ) { なんか処理 }
?>
<html><body>
<form action="kanri_index.php" method="post>
<input type="text" name="textbox" value=""><input type="submit"
</form>
</body></html>
を作れ
0633nobodyさん
2009/01/31(土) 01:59:14ID:???0634nobodyさん
2009/01/31(土) 02:06:10ID:???0635nobodyさん
2009/01/31(土) 13:18:26ID:Zjr5MV5Eこれでなんとかなりそうです。ありがとうございました!
0636nobodyさん
2009/01/31(土) 19:25:28ID:???下記のコードを実行すると
Call to a member function prepare() on a non-object
とエラーが返ってきます。
$sql = "insert into table (column2,column1) values(?,?)";
$sth = $this->db->prepare($sql);
$result = $this->db->execute($sth, array($column2_value,$column1_value));
プレースホルダを使わずqueryを発行すると問題なくdbが更新されるのですが、
どこかおかしいのでしょうか
0637nobodyさん
2009/01/31(土) 19:26:42ID:???php5,postgresです
0638nobodyさん
2009/01/31(土) 19:28:26ID:???どのクラスのprepareだよこの馬鹿馬鹿まんこ!
$this->dbが接続失敗か何かで初期化されていないように思われる。
0639nobodyさん
2009/01/31(土) 20:01:51ID:???そのあたりを探ってみます。
0640nobodyさん
2009/01/31(土) 20:02:31ID:???0641nobodyさん
2009/01/31(土) 20:16:52ID:???さっきのエラーは昔書いたクラスコピペして直したら出なくなったのですが、
dbが更新されなくて悩んでいたら文字コードの違いが原因でした。
mb_convert_encodingで挿入する値をdbの文字コードに直して解決しました。
お世話様でした。
0642nobodyさん
2009/01/31(土) 20:23:42ID:QDNvJIlq登録メールアドレスの重複チェックをしたいのですが、うまく動きません。
if(!$db=sqlite_open("database/database.sqlite",0666,$err)){
die("データベース接続エラー".$err."<br>");
}
////////////////////////////データベース二重登録防止////////////////
$check_sql="SELECT * FROM add_table WHERE add = '$mailadd'";
if($abc = sqlite_query($db,$check_sql)){
header("Location: mail.php?miss=miss&miss_naiyou=sumi");
//登録済みの場合は飛ばす
}
sqlite_close($db); //データベースクローズ
0643nobodyさん
2009/01/31(土) 20:26:51ID:???http://jp2.php.net/sqlite_query
0644nobodyさん
2009/01/31(土) 20:31:10ID:lgngjuqH$temp = "http://epg.2ch.net/tv2chwiki/subject.txt";
$html_f=file_get_contents($temp);
$br = "<br />";
$replace = "(2)";
$word = str_replace($replace, $br, $html_f);
$replace = ".dat<>";
$word = str_replace($replace, $br, $word);
$replace = "res/min";
$word = str_replace($replace, $br, $word);
$replace = "] ";
$word = str_replace($replace, $br, $word);
$a = explode( "<br />", $word );
$b[0]= "g";
print $a[2]; print $br; //…(1)
print $b[0]; print $br;
$strs[0] = "srename :"+ $a[2] +",";//…(2)
$strs[1] = $b[0];
print $strs[0]; print $br;//…(3)
print $strs[1];
?>
出力
[NHK総合]探検ロマン世界遺産
g
0
g
(3)の$strs[0] が0になってしまうのはなんでですか?
おねがいします。
0645nobodyさん
2009/01/31(土) 20:33:43ID:QDNvJIlqマニュアル見てもさっぱりわかりません
0649nobodyさん
2009/01/31(土) 20:59:19ID:QDNvJIlq解決しました。
if(sqlite_fetch_array(sqlite_query($db,$check_sql))){
header("Location: mailmagazine.php?miss=miss&miss_naiyou=sumi");
}
>>643
ありがとうございます
0650nobodyさん
2009/02/01(日) 21:04:08ID:???elseif (preg_match("/^\d{8}$/", $_GET["id"])){
$id = $_GET["id"];
}
GETで8桁の数字のみ受け取るように↑のようにしましたが
if文でマッチしてても変数に代入する際はpreg_matchなりで
GET変数内を数字のみとなるように変換した方がいいものなんでしょうか
0651nobodyさん
2009/02/01(日) 21:10:26ID:???0652nobodyさん
2009/02/01(日) 21:11:12ID:???俺ならctype_digit($str) && strlen($str) === 8
まあそれはそれとして、別にいいんじゃね。その正規表現にマッチしてるなら間違いなく数字だけだし。
0653nobodyさん
2009/02/01(日) 21:16:32ID:???0654nobodyさん
2009/02/01(日) 22:42:37ID:???>>652
matchに漏れがなければ問題ないように思たんですが
あげてもらった関数の方が確実 でしょうか
>>653
正規表現はまだよくはわかってないのですがググったところ
\r\nのことでしょうか。
http://scripting.cocolog-nifty.com/blog/2008/12/post-c9b4.html
ここを参考に一応"/^\d{8}\r?$/"としてみましたが
>hoge$に掛かりません
の理屈が今一わかりません。
0655650
2009/02/01(日) 22:56:05ID:???もとの"/^\d{8}$/"で問題なしな気がしますがどうなんでしょう
0656652
2009/02/01(日) 23:22:37ID:???パターンがよほど複雑な時以外は正規表現は避けたほうがいい。
>653-654
改行とか忘れてたわ。
if(preg_match("/^\d{8}$/", "12345678\n")){
echo 'match';
}
0657nobodyさん
2009/02/03(火) 00:43:02ID:???もうPHP諦めることにした。さっぱり分からん。
このスレのどこが超初心者用なんだ。
0658nobodyさん
2009/02/03(火) 01:51:58ID:???0659nobodyさん
2009/02/03(火) 02:00:14ID:???プログラムなんて嫌いだ。
0660nobodyさん
2009/02/03(火) 09:47:26ID:???0661nobodyさん
2009/02/03(火) 10:34:27ID:???0662nobodyさん
2009/02/03(火) 14:10:58ID:???このスレだけ読み続けても、超初心者が分かるようにはならないと思う。
このスレは、超初心者も質問していいというだけで、来る質問が全部、
超初心者向けというわけではないから。
もう見てないかもしれないけれど、入門書を図書館とかで借りてきたほうが
いいと思うよ。
0663nobodyさん
2009/02/03(火) 14:18:03ID:???半年もROMってわからないなんて、ネタに決まってるだろ
もしネタじゃないなら、10年はROMるべき。
そうして人生が終わるさ
0664nobodyさん
2009/02/03(火) 20:28:48ID:???0665nobodyさん
2009/02/04(水) 06:33:54ID:???全く原因が分からないのでお聞きしたいのですが…
$im=createimagefromjpeg(image.jpg);
imagejpeg($im);
destroy
上記の様な単純な記述で画像を開きたいのですが、
ローカルならできるのになぜかインターネット経由だと
できないのです…
実行すると半角で「リ」と表示されるだけで
print hoge;などを付け足しても何もかわりません
phpinfoでGDが使えることは確認したのですが、
他に原因が思いつきません
初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします
0666nobodyさん
2009/02/04(水) 06:34:18ID:???全く原因が分からないのでお聞きしたいのですが…
$im=createimagefromjpeg(image.jpg);
imagejpeg($im);
destroy
上記の様な単純な記述で画像を開きたいのですが、
ローカルならできるのになぜかインターネット経由だと
できないのです…
実行すると半角で「リ」と表示されるだけで
print hoge;などを付け足しても何もかわりません
phpinfoでGDが使えることは確認したのですが、
他に原因が思いつきません
初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします
0667nobodyさん
2009/02/04(水) 06:50:26ID:???0669nobodyさん
2009/02/04(水) 10:03:22ID:???0670nobodyさん
2009/02/04(水) 17:18:03ID:???確かにファイルは存在しています・・・
>>668
MIMEヘッダーは
header("content-type: image/jpeg");
で出力できてますでしょうか?
ご指摘の後にこれを追加してやってみてのですがだめでした。
ただ、文字化けのような表示から画像を表示できていないマーク?
のような表示にはかわりました・・・
0671nobodyさん
2009/02/04(水) 17:25:29ID:???imagecreatefromjpeg
にしてみたら?
それで、$imがfalseになってないかチェック
それから、imageやheaderを出力する前に余計な出力をしないように、ソースの冒頭でob_startして、直前で破棄
0672nobodyさん
2009/02/04(水) 17:39:12ID:???どれくらいの期間で使えるレベルになりましたか?
0673nobodyさん
2009/02/04(水) 17:41:17ID:???使いこなすまでは相当かかったが
0675nobodyさん
2009/02/04(水) 18:10:51ID:???0676nobodyさん
2009/02/04(水) 18:32:32ID:???imagecreatefromjpeg(string $filename)ならあるけど
0677nobodyさん
2009/02/04(水) 18:33:11ID:???phpinfoみてみれ
0680nobodyさん
2009/02/04(水) 18:38:31ID:???0681nobodyさん
2009/02/04(水) 18:38:39ID:???0682666
2009/02/04(水) 20:04:43ID:???釣りではないのです
広告自動表示のレンタルサーバーを使用していたためにうまくいかなかったようです
広告無しのサーバーでは問題なく表示できました。
ありがとうございました
0683nobodyさん
2009/02/04(水) 22:08:23ID:???ヘッダー情報ってだめなの?
0684nobodyさん
2009/02/04(水) 22:09:01ID:???どこの学校がおすすめ?
0685nobodyさん
2009/02/04(水) 22:31:36ID:???0687nobodyさん
2009/02/04(水) 22:41:25ID:???|A|a|1|
|A|a|2|
|A|b|1|
|A|b|2|
|B|c|1|
|B|d|1|
みたいになるじゃないですか。
重複した項目をまとめて(A,(a,b),(1,2)),(B,(c,d),1)な感じにする関数てあるんでしょうか。
0688nobodyさん
2009/02/04(水) 22:46:57ID:???http://pdoj.wordpress.com/2009/02/04/fetch-modes/
とりあえず翻訳やってみたけど、どう?
0691nobodyさん
2009/02/05(木) 00:20:18ID:???ありがとうございます。
探したらfetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)がそれらしいです。
ただマニュアルの例で例えると
array(3) {
["apple"]=>
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
}
みたいな感じにカラム0の値しか取得できてないようです。
自分がどこか間違ってるのかSQLiteが対応してないのか...
もう少し試してみます。
0692nobodyさん
2009/02/05(木) 00:47:17ID:???ほい
http://jp2.php.net/manual/ja/pdostatement.fetchall.php
0693nobodyさん
2009/02/05(木) 00:49:12ID:???↑みたいなフォーマットの価格データを整数値にしたいんだけど
↓よりシンプルにやる方法ってある?
$str = str_replace(array(' ', ',', '円'),array('', '', ''),$str);
0694nobodyさん
2009/02/05(木) 00:51:20ID:???0695nobodyさん
2009/02/05(木) 00:54:43ID:???0696nobodyさん
2009/02/06(金) 21:22:00ID:???MySQLでも試してみたのですが結果は同じでサンプルのような結果にならないのですが
どこか捉え違いしているのでしょうか。
PHP 5.2.6/MySQL 5.0.4
|apple|red|
|banana|yellow|
|apple|green|
という内容として、
$dbh = new PDO('mysql:〜','root','root');//もしくは'sqlite:〜'
$sql = "SELECT name,color FROM table1";
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0);
var_dump($result);
$stmt = null;
結果
array(2) {
["apple"]=>
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
}
["banana"]=>
array(1) {
[0]=>
string(6) "banana"
}
}
となります。
0697nobodyさん
2009/02/06(金) 21:29:26ID:???とりあえず、FETCH_GROUPなんだし、結果が正しいように思うが?
0698nobodyさん
2009/02/06(金) 21:34:36ID:???PDO::FETCH_COLUMN|PDO::FETCH_GROUP
じゃなく
PDO::FETCH_ASSOC|PDO::FETCH_GROUP
にしてみたら?
0699nobodyさん
2009/02/06(金) 21:39:06ID:???失礼、サンプルは>>692にもあるPDOStatement->fetchAllの例3です。
期待した結果は
["apple"]=>
array(2) {
[0]=>
string(5) "red"...
なんですが、>>696が正しいということはやっぱりなにか勘違いしてるのかなぁ
0700nobodyさん
2009/02/06(金) 21:43:25ID:???それ、外したらどうなる?
0701nobodyさん
2009/02/06(金) 21:48:42ID:???["apple"]=>
array(2) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
}
["banana"]=>
array(1) {
[0]=>
string(6) "yellow"
}
}
になったけど
0702nobodyさん
2009/02/06(金) 21:49:22ID:???0703nobodyさん
2009/02/06(金) 22:07:01ID:???あれ?どうも。0がなくてもうまく取得できなかった気がしたんですが
今0を外したらPDO::FETCH_ASSOC|PDO::FETCH_GROUP同様うまくいきました。
|PDO::FETCH_GROUPがついたときは第2引数で指定したPDO::FETCH_COLUMNを基準に
グループ化するのかと勘違いを…
実際は複数のカラムが必要なのでPDO::FETCH_NUM|PDO::FETCH_GROUPで
思った通りの結果が得られるようになりました。ありがとうございました。
>>701も確認ありがとうございます。
0704nobodyさん
2009/02/06(金) 22:11:15ID:???後進のために原因を明らかにしといてくれ
0706nobodyさん
2009/02/06(金) 22:26:54ID:???第2引数に0を入れるということは1番目のCOLUMNを用いて残りのカラムをGROUP化するってことだぞ
0708nobodyさん
2009/02/06(金) 22:30:55ID:???0710nobodyさん
2009/02/08(日) 19:09:17ID:???try {
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
fntest();
function fntest() {echo "call function";}
} catch (ErrorException $exception){
echo "何かエラーだよ<br />";
echo $exception->getMessage()."<br />";
echo "line:".$exception->getline();
exit();
}
?>
これを実行するとFatal error: Call to undefined function fntest() in〜と出ます
定義を先にするかtry〜catchをなくすとエラーは出ません
何がいけないんでしょうか
0711nobodyさん
2009/02/08(日) 19:26:17ID:???0712nobodyさん
2009/02/08(日) 20:00:14ID:???まんまやん というかだめなんですか?
>次の二つの例のように、ある条件下でのみ関数が定義される場合には、その関数定義は関数がコールされる前に行われていなければなりません。
に当てはまるということでしょうか
とりあえずそういうものだということで前方で定義するようにします
0714nobodyさん
2009/02/08(日) 20:35:03ID:???Perlは書き方によっては、関数の宣言や定義より先に呼び出しが来てもちゃんと動く。
0715nobodyさん
2009/02/08(日) 21:05:08ID:???ifやwhileやtryやfunctionの中などの節の中は後置できないだけ。
>>710なんてそんなの百も承知で釣り質問してるに決まってるだろ。
釣られてへぼい回答してんじゃねぇぞ
0716nobodyさん
2009/02/08(日) 21:07:39ID:???0717nobodyさん
2009/02/09(月) 00:04:48ID:???' % 等のDBにとっては迷惑な文字列が入力された場合に、それとHTML上の特殊文字に変換する
にはどうすれば良いですか?
簡単な掲示板を作ったのですが' %が入力された場合にエラーが発生し困っています。
0718nobodyさん
2009/02/09(月) 00:12:47ID:???0720nobodyさん
2009/02/09(月) 08:53:51ID:???0721nobodyさん
2009/02/09(月) 09:16:28ID:???データーベース専用のエスケープ処理をするのが普通
0722nobodyさん
2009/02/09(月) 09:20:54ID:???0723nobodyさん
2009/02/09(月) 21:42:26ID:???使える箇所ならプリペアドステートメント。これが一番安全。
ttp://jp2.php.net/manual/ja/mysqli.prepare.php
ttp://jp2.php.net/manual/ja/pdo.prepare.php
使えない箇所ならmysql_real_escape_stringなど。
どの文字が危険かはDBによって違うので、MySQLにはMySQLの、OracleにはOracleの、SQLiteにはSQLiteの専用の関数がある。
0724nobodyさん
2009/02/11(水) 12:21:22ID:???ユーザのトップディレクトリを調べる方法はありますか?
0725nobodyさん
2009/02/11(水) 13:56:50ID:???0726nobodyさん
2009/02/11(水) 14:12:44ID:???ああすみません。
開発環境はPHP5.2.6でOSXなんですがWebサーバはまだ借りてないのでどうなるかはわかりません。
PHP5でApachサーバのところを借りようとは思ってます。
なので開発環境との違いや引っ越し時のことを考えて汎用的な関数がないかと質問しました。
一応マニュアルのファイルシステム関数は目を通したんですが…
0727nobodyさん
2009/02/11(水) 14:24:23ID:???たとえばエラーチェック時にdieの代わりに自作関数呼び出して終了みたいな場合など
function return_json($flag, $data){
if($flag == true)
$result = $data;
else
$result = "ERR:".$data;
$res = array(
"status" => $flag,
"result" => $result );
print(json_encode($res));
exit();
}
if(エラーチェック1) return_json(false,"エラー1です"); //エラーなら終了
if(エラーチェック2) return_json(false,"エラー2です"); //エラーなら終了
//最後に
return_json(true,"成功です。");
0728nobodyさん
2009/02/11(水) 14:33:34ID:???0729nobodyさん
2009/02/11(水) 15:13:35ID:???あちこちの関数で好き勝手に処理を中断したり画面出力してたりすると、そのうち管理しきれなくなる。
同じ理由で、printするよりは文字列を返す(printは「メインのルーチン」で行なう)方がいいと思う。
俺ならreturn_json()はjsonを返すだけ(exitもprintもしない)にして
function generare_json(){
if(isError1()){
return return_json(false,"エラー1です");
}
if(isError2()){
return return_json(false,"エラー2です");
}
return return_json(true,"成功です。");
}
とし、echo generate_json()を最後に呼び出す。
exit()はスクリプトの末尾のみ、出力はこの文のみになる。
0730nobodyさん
2009/02/11(水) 15:20:37ID:???boolを渡すより、return_error_json()の方が分かりやすい。
0733nobodyさん
2009/02/11(水) 17:30:07ID:???/Applications/MAMP/htdocs/
となります。
実行ファイルがトップにあるわけではないので相対パスでのファイル指定より
基点からの絶対パスのほうがわかりやすいかなと。
0737nobodyさん
2009/02/11(水) 18:00:00ID:???0738724,733
2009/02/11(水) 19:15:46ID:???$_SERVER['DOCUMENT_ROOT']で希望のパスを得ることができました。
ありがとうございました。
0739727
2009/02/12(木) 16:10:42ID:rITuikA6それだとプログラム毎にgenerare_json()を書き換えるって事ですよね
(エラーチェックは入力値が対象なのでプログラム毎に変わるから)
if〜elseのネスト地獄に陥りたくないので、if文でエラーなら残りをすっ飛ばしたいだけなのです。
それとメインルーチンのほとんどがgenerare_json()内に入ってしまうような・・・
他の方法(関数内でprintもexitもなし)だと
1.エラー時、gotoでメインルーチン末尾に飛んでprint実行
2.フラグを用意し初期値true、エラー時falseにして、if(!フラグ && isError2())と毎回チェックする
3.例外処理
が思い浮かんだんですが、gotoはv5.3からだし、2は毎回チェックが煩わしい(スマートじゃない)、
3の入力値チェックのエラーは例外とは違う気がしたり・・・
それとも例外として処理してもいいのかな・・・?
チェック用自作関数は真偽を返すのでif文でエラーならthrowとか
0740727
2009/02/12(木) 18:57:04ID:???色々調べたら入力値チェックで期待しない値は異常なエラーとして例外処理してもよい、
みたいに書いてあったので例外処理することにしました。
function throw_except($msg){
throw new Exception($msg);
}
try {
if( isError1() ) throw_except('エラー1');
if( isError2() ) throw_except('エラー2');
return_json( $xxx );
} catch ( Exception $e ) {
return_err_json( $e->getMessage() );
}
例外処理になったからreturn_xxx関数内でprintさせてます(exitは削除)
print文を関数外に出した方がいいのかもしれませんが
0741nobodyさん
2009/02/12(木) 19:05:55ID:???0742nobodyさん
2009/02/12(木) 19:11:40ID:???0743nobodyさん
2009/02/12(木) 20:08:20ID:???try {
isError1();
isError2();
return;
} catch (isError1Excetion $e) {
} catch (isError2Exception $e2) {
}
0744nobodyさん
2009/02/12(木) 21:20:57ID:???0745729
2009/02/12(木) 23:45:53ID:???if else地獄?>729のコードにはelseが一行も出てないだろ。これは偶然そうしたんじゃなくて、意識してそうデザインしたんだ。
適切な規模で関数を切って、returnでエラーを通知可能にすればelseは削れるし、多くの場合throwは不要になる。
すぐthrowを使いたがる奴は、GOTO時代と脳の構造が一緒の、OOPどころか関数指向にすらなれない原始人。
ぱっと思いつく欠点挙げてやろうか。throwだと妥当性検証エラーの結果を最初のひとつしか出力に反映できない。
他にも、どこまで処理が継続するのか、どこからの処理はすっ飛ばされうるのかを判定しにくいのも例外の欠点。
ロックファイルを作って、ファイルに書き出して、さあ安心と思ったら変なところから例外が飛んできて、ロックファイル削除せずに終了、とかな。
例外は、複数の呼び出し階層をぶっ飛ばして上位層にエラーをダイレクトに通知したい場合に使うものであって、GOTO代わりに使うものじゃない。
>729のコードの完成版 ttp://gist.github.com/62642
isError1とisError2の中身を替えれば、チェックする内容はそのまま置き換わる。
両者をまとめて関数化してしまえば追加も可能。generate_jsonはノータッチでいける。
入力値検証らしい構造に書き直した版 ttp://gist.github.com/62643
入力値チェックの内容が変わる場合、validate関数を差し替える。処理内容が複雑ならisError1みたいな関数を書いてvalidateから呼んでもいい。
0746739
2009/02/13(金) 00:56:29ID:???if else地獄というのは>>729のコードではなく(>>727の)自作関数内でexitしない場合のこと。
(一応自分でも>>727や>>740で意図してelse使わないようにしてます)
ただ作例だとisError1,isError2,validate,build_responceなど関数自体を毎回書き直す羽目になるし、
メインルーチンがほぼ丸ごと関数化(build_responce)してるのもどうも・・・
関数は一度作ったら修正したくない、極力同じような文を書きたくない、ってのが元々の理由なので。
今作ってるのは妥当性エラーは1つ(というか「入力値が間違ってる」だけ)でいいのですっ飛ばしてます。
通常の入力ではなく意図的に変更してる場合しかありえないので。
確かに原始人と思いますが、GOTOも上手く適度に使えばいいんじゃないんでしょうか?
反GOTO教信者ではないし。
まあバリデーションにthrowの使うのは>>739にも書いたけど微妙だとは思いますが↓のようにあったので使ってみました
http://takagi-hiromitsu.jp/diary/20051227.html
>>パス名を受け取ることを想定したパラメタに「../」や「..\」が含まれていたら、削除とか変換をするのではなく、
>>エラーとして例外処理して終了するというのが、本来のそのプログラムの正しい動作だろう*5。
クライアント側でもチェックしてるのでそれをわざわざ変更して送ってくるのは上記にあてはまるかと。
0747nobodyさん
2009/02/13(金) 01:41:35ID:???グローバル空間の処理や他の関数は一切触れなくて平気。
グローバル空間の処理を書き換える方が、関数を書き換えるより簡単だって言い張るならもう何も言わん。ダイクストラ以前の時代に帰れ。
「メインルーチンがほぼ丸ごと関数化してる」のは、確かに設計としては甘い。
本来は、「100%すべてを関数化すべき」だしな。
0748746
2009/02/13(金) 02:05:40ID:???参考にして勉強させていただきます。
0749nobodyさん
2009/02/13(金) 11:16:46ID:???現在、PHP4を使って携帯サイトを作っています。
新規登録してログインして日記みたいなのを登録するシステムなんですが、
ログインした後の日記登録の部分は問題なく動作します。
ところが新規登録のところで動作がおかしい部分があるのです。
動作確認はdocomo,au,softbankの実機とPC上のエミュで行っています。
現象はsoftbankの実機のみで起こるのですが、スクリプトでは
header("Location:xxxxxx.php?id=xxxxx")でページを飛ばすところで問題が起きます。
docomo,au実機、PC上の3キャリアのエミュでは問題なく動作、ところがsoftbankの実機のみ
ページが飛ばずに「このページは開けません」みたいなエラーが出ます。
ソースレベルでは、その他の日記登録などとほぼ同じなのですが・・・。
softbank携帯だけ、何か仕様が違うのでしょうか?ちなみにセッションを使っています。
0750nobodyさん
2009/02/13(金) 11:18:06ID:???飛び先のphpスクリプトにダイレクトに接続した場合、問題なく動作する事は確認済みです。
0751nobodyさん
2009/02/13(金) 11:24:03ID:???header Locationで飛ばさずに、aタグを使って間にワンクッション置く(クリックさせる)と正常に動作します。
どのみち、その先でまたheaderで飛ばすところで駄目なんですが・・・。
0752nobodyさん
2009/02/13(金) 11:45:37ID:???> softbankの実機のみページが飛ばずに「このページは開けません」みたいなエラーが出ます。
このときの、サーバーに残るアクセスログは?
んで、Locationで指定しているURLはドメイン込のフルパスで書いてるよね?
0753nobodyさん
2009/02/13(金) 11:52:57ID:???Locationには絶対ではなく、相対アドレスで指定しています。
0754nobodyさん
2009/02/13(金) 12:03:26ID:???http://www2.developers.softbankmobile.co.jp/dp/tool_dl/download.php?docid=119
これの、143ページ
0755nobodyさん
2009/02/13(金) 12:05:58ID:???要求しているURLは、変ではなくアクセス出来るURLでした。
0756nobodyさん
2009/02/13(金) 12:09:54ID:???その直後に正しいリクエストが来てるかどうか。
0757nobodyさん
2009/02/13(金) 13:01:14ID:???0758nobodyさん
2009/02/13(金) 13:46:02ID:???PDFの資料、大変役に立ちました。
locationで指定しているアドレスを相対から絶対にしたところ、動作しました。
ありがとうございました。
でも、他の部分では相対にもかかわらず正常動作しているんですけどね・・・。
やはり携帯サイトは難しいです。
0759nobodyさん
2009/02/14(土) 13:18:20ID:???rfc2616の14.30 Location
原文
http://tools.ietf.org/html/rfc2616
和訳
http://www5b.biglobe.ne.jp/~type-aya/rfc/rfc2616j.txt
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec14.30
ソフバンの方が厳密に仕様に沿っているんでしょう
0760nobodyさん
2009/02/18(水) 18:43:17ID:???いるのでしょうか?
例えば、認証するサイトでパスワード変更の時、応答メールで、
ttp://hoge.co.jp/mail/CSDFG365
へアクセスをすれば作業完了という場合の、CSDFG365や
ダウンローダーでttp://hoge.co.jp/download/CSDFG365にアクセス
すると、別名のファイル名が保存できる機能が、どう実装されているのか
知りたいのです。検索キーワードが悪いのか、ファイルの暗号化ソフト
ばかりヒットして解らずにいます。
どなたか教えてください。
0761nobodyさん
2009/02/18(水) 19:28:28ID:???0763nobodyさん
2009/02/18(水) 23:18:25ID:???アカウント情報とそのキーを一緒にDBかなんかに突っ込んでおく
アクセスがあったらアカウントを有効にしてそのキーを削除する
とやってるだけ。
その文字列とあなたのアカウントIDやメールアドレスに直接の関係(例えば、メールアドレスを「暗号化」するとその文字列になるとか)
はないと思うし、むしろあったら設計として不味い。
後者も、文字列と実際のファイル名なりデータなりを関連付けるDBを保持しているだけ。
ダウンロードさせるファイルの名前はヘッダで指定できる。Content-Dispositionでぐぐれ。
0764nobodyさん
2009/02/18(水) 23:18:58ID:???皆さん、日記やブログを作るときどのような感じでスクリプトを組んでいますか?
例えばhtml文字をエスケープして、マジッククォートを取り除いて…といった形で教えてくださるといいんですが。
0765nobodyさん
2009/02/18(水) 23:38:29ID:???0766nobodyさん
2009/02/19(木) 11:06:34ID:???mod_rewriteを使ってるんだろうね。
0767nobodyさん
2009/02/19(木) 12:40:19ID:???0768nobodyさん
2009/02/19(木) 18:38:41ID:???暗号云々ではない。ズレてしまって申し訳ない。
0769760
2009/02/19(木) 22:42:44ID:???パラメータをディレクトリとしていたんですね。
mod_rewriteを使って解釈しないといけないので、ズレていないと思いますよ。
使わずにすむ方法は思いつかないんですが・・・。
助かりました。ありがとうございました。
0770760
2009/02/19(木) 22:50:42ID:???ダウンローダーとか、宅ファイル便とかだとファイルの公開日というのが
指定できるのですが、その指定した日時まで公開というのはどう実装するので
しょうか。ユニークキーと期日を保存して、その期日にユニークキーを
削除すると思うのですが、「その期日」に動作される方法が解らないのです。
教えて君ですみませんが、どなたかアドバイスください。お願いします。
0771760
2009/02/19(木) 22:54:01ID:???×「その期日」に動作される方法
○「その期日」に動作させる方法
でした。何卒よろしくお願いします。
0772nobodyさん
2009/02/19(木) 22:56:59ID:???データを信用するなとのことなので出力時にhtmlspecialcharsを挟んでます
しかし装飾系のタグが使いたいので以下のようにしてみました
問題ありますか?
$str = "@<b@>強調@</b@>@<span class=@”red@”@>赤色@</span@>"; //DBから取得したデータ
echo str_replace(array("@<","@>","@”"), array("<",">","\""), htmlspecialchars( $str, ENT_QUOTES, "UTF-8" ));
検索文字はすべて全角、上はあくまでサンプルで実際の検索文字は違います
0773nobodyさん
2009/02/19(木) 23:52:31ID:???ファイルそのものを削除するならcronなんかを走らせておくのでしょうが、
ファイルを直接DLではなくCGI/PHP経由でのみDL許可にすれば
期日後はユニークIDをDBから取り出せなくするだけで実現できるのでは?
0774nobodyさん
2009/02/20(金) 04:23:24ID:???閉じタグ打たなかったら、ページの最後まで
適用されてしまうんでない?
<h1>おはよう
↑こんなの。ひろゆきがあめぞうを
つぶしたときに、「スタイルシート破壊攻撃」というのを
使ったのだ。「あめぞうウイルス」でググるとわかる。
0775760
2009/02/20(金) 08:00:28ID:???アドバイスありがとうございます。
その期日後にPHPを起動(?)させる方法を知りたいのです。
だれもその期日(後)にPHPにアクセスしなければ、PHPは動作しないので。
あっ誰かがアクセスする時に、期限のチェックをすれば済む話ですね。
なんか自動的に削除処理しなきゃと思い込んでました。
超初心者ということで許してください。ありがとうございました。
0776nobodyさん
2009/02/20(金) 08:15:05ID:???PHP内でcrontabを書き換えられるかどうかは知らんけど。
0777nobodyさん
2009/02/20(金) 15:07:58ID:???0778nobodyさん
2009/02/21(土) 00:09:46ID:???scriptタグを埋め込まれると、ページ内の全表示内容、クッキーを外部のURLに送信される可能性がある。
onloadなどのJavaScriptを実行されるものは全て同じ。
多くのシステムがタグを回避するのはこの脆弱性対策のため。
imageタグによる画像貼り付けや、objectタグによるFlash貼り付けなど、考慮しないといけない事は山のようにある。
脆弱性対策ってのは、猿真似してりゃいいってもんじゃない。
「何故」HTMLタグに警戒しないといけないのかを理解し、適切な対策を自分で考える必要がある。
勘違いするといけないのではっきり言うが、その処理を挟んでもセキュリティは一切向上しない。無駄だ。
0779nobodyさん
2009/02/21(土) 06:29:21ID:wFQNH0340780nobodyさん
2009/02/21(土) 06:30:12ID:wFQNH034perl X
PHP ○
0781nobodyさん
2009/02/21(土) 07:16:06ID:???0782nobodyさん
2009/02/21(土) 07:51:36ID:???0783779
2009/02/21(土) 10:59:46ID:???ブラウザーアドベンチャーゲームなんだけど。
300行分を10本ね
連絡先 adobentya@hotmail.com
0784nobodyさん
2009/02/21(土) 11:05:48ID:???0785779
2009/02/21(土) 11:11:58ID:???0786nobodyさん
2009/02/21(土) 11:20:40ID:???入場者名と退場者名を同じ1ページ内で、上下のスパン(上半分が入場者名、下半分が退場者名)
にしてPDF出力したいと考えています。
プログラムはそれぞれ"nyuujyou.php"、"taijyou.php"が用意されています。
このように別々のプログラムの結果を、同じページ内でPDFで同時に表示させることはできますか?
共通の変数は日付$ymdだけです。
0787nobodyさん
2009/02/21(土) 11:54:46ID:???入場.php、退場.phpを、出力結果をechoするのではなく、出力結果を文字列として返す関数に書き直すのが正しい道。
こういう事は非常によくあるので、「出力結果を組み立てる」部分と「書き出す」部分は明確に分けたほうがいい。
「入場者名や属性の配列をDBから取ってくる部分」→「それを使ってHTML文字列を組み立てる部分」→「それを受け取って書き出す部分」
の三段階に分けると使い回しが効く。ロジックの殆どは最初の部分に来て、変更が多いのは簡単な後半だからな。
例えばCSVでファイルに書き出したい場合、最初の難しい部分にはノータッチで後ろの2つだけ書き換えればよくなる。
前から順に「モデル」「ビュー」「コントロール(の一部だが)」層と呼ぶ。
で、レシピだが。
<?php
$ymd = '2009/02/21';
ob_start();
require_once("入場.php");
$result1 = ob_get_flush();
ob_start();
require_once("退場.php");
$result2 = ob_get_flush();
でresult1、$result2に両phpの実行結果が文字列として入る。PDF変換はライブラリを自分で漁れ。
0788786
2009/02/21(土) 11:59:35ID:???わかりました、丁寧にありがとうございました。
0789nobodyさん
2009/02/21(土) 12:59:33ID:???厳しいご意見どうも
前段に関してはセキュリティ関連のサイトとか見てるんで
scriptを仕込まれてとかはまあ理解してます(というかこんなことがあると把握してる程度というか)。
その上で>>772が全くの無駄となるとhtmlspecialcharsが意味を成さないんでしょうか
それとも関数の後に置換をしてるからダメになるんでしょうか。
これで100%対策してるとはもともと思ってませんが、htmlspecialcharsで
ある程度の対策になるという考えは間違ってるでしょうか。
>>772も置換パターンが読まれたらアウトですが、どういった部分がだめなのか1例だけでも
教えてもらえないでしょうか。
0790nobodyさん
2009/02/21(土) 14:46:55ID:???自信ないけど、こんなの入れたらどうなるでしょうか。
0791nobodyさん
2009/02/21(土) 15:18:21ID:???つまり789の最後に言ってるように@<が<に変換されるのが
ばれているということが前提ですか?
ならば置換を行わずにhtmlspecialcharsのみなら問題ないということでしょうか。
当初の一部タグを有効にしたいというのはとりあえず置いときますが。
0793nobodyさん
2009/02/21(土) 15:51:07ID:???万一、SQLインジェクションされて、不正なデータを注入されても htmlspecialchars が出力時に噛ませてあればほんの少しダメージを軽減できる。
# まぁ、SQLインジェクションが起こった時点でいろいろ見直すべきだと思うけど。
装飾のタグが使えるのは素敵な機能だと思うけど、自力で組むのは難しいんじゃなかろうか。
自分ではどんなに完全だ、と思ってても意外なところに穴があったりするし。
ここで「大丈夫でしょうか?」って聞くくらいならば、そんなものは実装しないのが一番。
少なくとも str_replace() とかの単純な手法で実装できるような機能ではないと思う。
置換パターンが読まれてなければ云々については、
攻撃するときは攻撃者はいろんなパターンの文字列をスクリプトに投げてみて、置換や変換のルールを推測した上で攻撃するんだろうから、
あんまり考える意味がない。
0794nobodyさん
2009/02/21(土) 15:54:51ID:???ttp://phpspot.net/php/man/php/function.strip-tags.html
この関数は、allowable_tagsで許可した全てのタグ の属性を修整しません。
これには、style お よび onmouseover属性が含まれており、悪意のあるユーザが他のユーザに見せるようなテキストを投稿する際に危険な行為を行う可能性があります。
0795791
2009/02/21(土) 16:08:04ID:???ちょっと忙しくなったので夜に反応します。
0796nobodyさん
2009/02/21(土) 19:23:46ID:???設計はすでにできていてあとはコードを書くだけ?
それなら設計の読み方わかるニートがやってくれるかもね
普通の人に頼むならまぁ無理だと思ったほうがいいわ
時給換算して300行400円はわりにあわない
10分で300行かけるような超人がいたとしたら
人の○倍仕事量こなすから○倍よこせってなるのでますます無理
設計書くなら値段は跳ね上がるから設計書いらないっていうのが
PHPクライアントなわけだけど
それだとお金にならないからスルーするというのが業界の流れ
0797nobodyさん
2009/02/21(土) 21:09:34ID:1h/i9qY8<?php
$numbers = range(1, 20);
shuffle($numbers);
for($i = 0; $i < 20; $i++) {
echo $numbers[$i]."<br>\n";
}
?>
0798nobodyさん
2009/02/21(土) 21:19:21ID:???$CountLogFile = "カウントログへのファイルパスを指定";
session_save_path("セッション情報を記録するディレクトリパスを指定");
session_start();
if(!file_exists($CountLogFile))
{
touch($CountLogFile);
}
$File = fopen($CountLogFile , "r+" ) or exit("FileOpenError...");
flock($File , 2);
if(empty($_SESSION["Count"]))
{
$_SESSION["Count"] = "1";
$Count = fgets($File , 16);
$Count = $Count + $_SESSION["Count"];
}
else
{
$Count = fgets($File , 16);
}
rewind($File);
fwrite($File , $Count);
flock($File , 3);
fclose($File);
?>
<?php echo "AccessCount : $Count"; ?>
0799nobodyさん
2009/02/21(土) 21:19:50ID:???0800nobodyさん
2009/02/21(土) 21:35:22ID:???0801772
2009/02/21(土) 21:58:27ID:???wiki風なキーワード+対象文字っていうのも考えてたんですけど、それはそれで抜き出しのための正規表現とかで
>>793でも言われているどんな抜けがあるかが想像つかないものでして。
とりあえず今回はあきらめることにします。ありがとうございました。
0802nobodyさん
2009/02/21(土) 22:35:15ID:???万一、SQLインジェクションされて、不正なデータを注入されても htmlspecialchars が出力時に噛ませてあればほんの少しダメージを軽減できる。
お前、いろいろと混同してないか?
0803nobodyさん
2009/02/21(土) 22:42:59ID:q8fBHhcW<?php
if( $_POST['insert'] == 'insert' ) {
echo "インサート";
}
?>
・・・
<form action="test.html">
<input type="text" name="text">
<input type="submit" value="送信">
<input type="hidden" name="insert" value="insert">
</form>
送信を押したときにだけ、インサートを表示するようにしたいのですが、リロードした場合も表示されてしまいます。
POSTされた中身が保持されているからだと思うのですが、
送信を押したときにだけ表示するにはどうしたらよいでしょうか?
0804nobodyさん
2009/02/21(土) 22:45:45ID:???つまり、そういう事だ。
0805nobodyさん
2009/02/21(土) 23:01:17ID:???不正に注入されたデータがJSとかのスクリプトを含むもので、html..を噛ませてなかったら、出力時に実行されてScriptInsertionにならない?
そこで、データの出力時にhtml..を噛ませてあれば、JSの実行は防げるから多少は軽減できる、って意味。
別にSQLInjectionが防げるっていう意味のつもりじゃないよ。
0806nobodyさん
2009/02/21(土) 23:42:58ID:???file_get_contents()って第一引数にファイル名を指定しなければならないと聞きましたが、ファイル名を変数に代入してそれを指定しても動きますでしょうか?
0807nobodyさん
2009/02/21(土) 23:48:15ID:???0809nobodyさん
2009/02/22(日) 00:11:37ID:???いやそこでSQLインジェクションが出てくるのがおかしいよ。
意図したとおりのSQLが実行されて、意図したとおりDBに保存されるんでしょ?
文字型のカラムに入るデータがHTMLだろうとJavaScriptだろうと
DB的にはなにも問題ない。
それを取り出して表示するときにHTMLならHTML用の処理が必要ってこと。
。。。ほかのとこにいた人?
0811nobodyさん
2009/02/22(日) 00:23:28ID:???インジェクションが万一、起こってしまった場合の話。
html..が対策になるなんて思ってないよ。
データベースから引っ張ったデータでも信用せずに、出力時にhtml..をかけておけば万が一、JSとかの意図しないデータを混入させられても少しは安全になるだろう。
って言いたかった。
間違えたこと言ってたらすまない。
0812811
2009/02/22(日) 00:34:57ID:???言いたいことは>>809と同じのつもりなんだけど……。
ぐちゃぐちゃにしてしまった、申し訳ない。
IDスレのほうも似た話題になってるけど別の人です。
失礼しました。
0813nobodyさん
2009/02/22(日) 00:39:28ID:???俺に読解力がないんだろうか
0814nobodyさん
2009/02/22(日) 00:43:08ID:???配列の値をカンマで繋げたいんですがそういった関数はないでしょうか。
配列関数のところにはなさそうなんですがforeachでループさせるぐらいしかないんでしょうか。
0815nobodyさん
2009/02/22(日) 01:09:34ID:???0816nobodyさん
2009/02/22(日) 01:23:04ID:???0818nobodyさん
2009/02/22(日) 01:28:17ID:???はい、しかと覚えました。
ていうか今回はこちらの調べ方不足だったけど
関数多すぎでいまいちマニュアルから探しづらい・・・
0819nobodyさん
2009/02/22(日) 01:32:17ID:???0821nobodyさん
2009/02/22(日) 01:50:01ID:???php 配列 値 繋げる
今回は悪かったって
たいていググルで見つかるけどマニュアル内検索でヒットしたらいいんだけどね
とまた転嫁
0822nobodyさん
2009/02/22(日) 02:26:36ID:???マニュアル全部読みとか無理
0825nobodyさん
2009/02/22(日) 10:31:23ID:???私は、今のところサクラを考えていますが既に使われている方は
実際の使い勝手は如何でしょうか?
選択する上でのポイント
・月額料金が1000円未満
・ローカルで作成したphpスクリプト+DB(MySQL)を簡単に使える(UI操作でOK)
0826nobodyさん
2009/02/22(日) 10:32:38ID:???板違い
0827nobodyさん
2009/02/22(日) 15:33:49ID:???PDOもPEARもmysqliも使ってなくて、
いまだにmysql関数使っててマイッタ。
インジェクションはエスケープ文字をあらかじめ
全部全角に変換することで対応してるみたい。
これってどうよ?
0828nobodyさん
2009/02/22(日) 16:01:03ID:???0829nobodyさん
2009/02/22(日) 16:06:55ID:???どんな環境・設定でも対応できるからネイティブ関数だけで使いやすいようにクラス化しておけば使いやすいし
0830nobodyさん
2009/02/22(日) 16:14:47ID:???やっぱそういうことか。
たしかにどネイティブだからサクサク動いてるんだよな〜これが。
デグレ起こしたらいやだし、今回は実装あわせてサクッと終わらせよ。
0831nobodyさん
2009/02/22(日) 16:47:38ID:???起動しようとすると、
「指定されたファイルが見つかりません。No Installed service named "Apache2"」
となって起動できませんでした。
UACはオフにしているのですが…、どなたか教えて下さい。
0832nobodyさん
2009/02/22(日) 16:57:39ID:???0833nobodyさん
2009/02/22(日) 16:58:16ID:???PCにキックをすると直ったよ。
0834nobodyさん
2009/02/22(日) 17:15:38ID:???あ!skype起動してました!これオフラインにすると正常にインストールすることができるんですかね?
あとIISってのが分らないです。調べてみます…
0835nobodyさん
2009/02/22(日) 17:32:49ID:???0836nobodyさん
2009/02/22(日) 17:34:31ID:???皆さんのおかげです。ありがとうございました!
0837nobodyさん
2009/02/22(日) 17:39:03ID:???0838nobodyさん
2009/02/22(日) 17:54:25ID:???apacheのバージョンは2.0、PHPのバージョンは5なんですが2.0には最初から書いてないんですかね?
0839nobodyさん
2009/02/22(日) 18:06:50ID:???0840nobodyさん
2009/02/22(日) 18:10:00ID:???0841nobodyさん
2009/02/22(日) 18:11:04ID:???エスパーじゃないんだから、チミがAddModuleするかなんて
アパッチ様が知るわけないだろ
0842nobodyさん
2009/02/22(日) 18:13:45ID:???アパッチ様がエスパーじゃないという前提で、LoadModule mod_php5.cと記述してみました。これで合ってるでしょうか
0843nobodyさん
2009/02/22(日) 18:29:41ID:???0844nobodyさん
2009/02/22(日) 18:31:48ID:???AddModule mod_php5.c
いらないってことですかね?
0845838
2009/02/22(日) 23:02:42ID:???みなさんありがとうございました。自分で解決してみます
0846nobodyさん
2009/02/23(月) 01:21:02ID:???value をからにしておいて、ボタン押したら
document.forms[0].elements['insert'].value = 'insert';
document.forms[0].submit(); とか、phpじゃないけど、、
0847nobodyさん
2009/02/23(月) 09:53:42ID:???初心者用でおすすめの技術書はありますか?
できれば1行ごとに、「//変数を配列[a]にセットする」・・などといった解説がついているといいのですが。
おねがいします。
0848nobodyさん
2009/02/23(月) 12:40:12ID:???0849nobodyさん
2009/02/23(月) 12:52:59ID:???0850nobodyさん
2009/02/23(月) 14:11:13ID:???なんか他の言語でプログラムはしたことあるの?
0851nobodyさん
2009/02/23(月) 15:26:41ID:???RSSのURLをIEでクリックすると、ちゃんとitemsを拾ってXMLにしてくれるんですけど、
RSSリーダーやFirefoxでクリックするとitemsを拾ってくれません<items>要素が空になってます。
IEとFirefoxでは挙動が違うのでしょうか?
0852nobodyさん
2009/02/23(月) 15:39:23ID:???原因がわかりました。お騒がせしました。こちらのプログラム上のミスでした。
0854nobodyさん
2009/02/23(月) 16:23:08ID:frx8oxrAってありますか?
どこ調べても旧バージョンしかないんですが。
0855nobodyさん
2009/02/23(月) 16:25:24ID:???0857nobodyさん
2009/02/23(月) 16:51:00ID:???インストールはバイナリーから?ソースからビルド?
旧と手順変わらないと思うけどね。確実なのは添付されてるドキュメント
0858nobodyさん
2009/02/23(月) 16:55:07ID:???OSぐらい書いといた方がいいと思うよ。
WindowsとLinixがやり方違うし。
最新版は
Apache: 2.2系
PHP : 5.2.8
でおk?
0859nobodyさん
2009/02/23(月) 17:49:03ID:frx8oxrAそうです。OSはウィンドウズです。
0861nobodyさん
2009/02/23(月) 17:56:31ID:???XAMPP入れた方が早いよ >>windows
0862nobodyさん
2009/02/23(月) 18:01:35ID:???まったく経験なしに等しいです。
>>853
ありがとうございます。とりあえずXAMPPはインストールしました
0863nobodyさん
2009/02/23(月) 18:05:24ID:frx8oxrAありがとうございました。
0864nobodyさん
2009/02/23(月) 19:28:01ID:???0866nobodyさん
2009/02/23(月) 19:40:36ID:???じゃあ秋葉原にいくな
CPUを買うときと、ハードディスクを買うときと、
ソフトを買うときと、マウスを買うときと、
それぞれ全部違う町にいけ。
0867nobodyさん
2009/02/23(月) 19:57:12ID:???0869nobodyさん
2009/02/23(月) 21:18:58ID:???0870nobodyさん
2009/02/23(月) 21:38:57ID:???八割がた後になってハマるんだがw
必要になったらそのとき勉強する?はいはい。
0871nobodyさん
2009/02/23(月) 21:41:24ID:???どんだけものぐさなんだよ。
0872nobodyさん
2009/02/23(月) 21:52:11ID:???馬鹿か?
駄目なやつは何を使っても駄目
ようは使う人の問題だろ
それにXAMPPは何も設定できないと思ってんのか?これだから低脳は
0873nobodyさん
2009/02/23(月) 21:53:30ID:???0874nobodyさん
2009/02/24(火) 09:21:59ID:???ちょっと違うけどxamppにも当てはまる話
0876nobodyさん
2009/02/25(水) 22:54:22ID:???勿論、「ディスプレイとマウスは既存のものを使いまわすから要らないや」という事はあるが、全部必要な事のほうが世間的には圧倒的に多い。
マウスだけ使いまわすなら、ワンセット買って来てマウスだけ取り替えた方が楽だしな。
つうか、むしろBTOに近い気がする。
組み立てが面倒なので、多少コストで損をする事を承知でDellに頼むわけだ。
1台だけなら自作するだろうが、100台必要だと分かっているなら自作する馬鹿はいない。
webフレームワークは10台くらいの、自分でやるか頼むかちょっと迷うなってラインか。
0877nobodyさん
2009/02/25(水) 22:59:00ID:???後半は思いっきり忘れてくれ。
とりあえず、初心者に買わせるならメーカー品にするだろ?って話。
0878nobodyさん
2009/02/26(木) 10:25:39ID:???xamppなんて思いつきもしないな。
初心者ならそれから始めてもいいけど、何かあった時に誰かに聞くしか能がないから
決まった使い方しかできないみたいだな。
0879nobodyさん
2009/02/26(木) 11:47:43ID:???クラスやった事ないのでやったらいいですかね?
PHPマスターはオブジェクト指向ですか?
0880nobodyさん
2009/02/26(木) 11:55:18ID:???0881nobodyさん
2009/02/26(木) 12:05:11ID:???オレもまだ4ばかり使ってるけど、クラスはボチボチ使い始めてる。
0882nobodyさん
2009/02/26(木) 12:13:19ID:???よりよい制作手法を実現するための手段ならこだわる必要ない
0883nobodyさん
2009/02/26(木) 13:02:56ID:???データベースは使えるの?
オブジェクト指向はPHPで最初にやるべきではない。
不完全なPHPで最初にやると、
PHPが一般的で他の言語は特殊だという間違った認識が身につくよ。
用語なんかも一般的な他言語のものとは意味あいが違ったりするし。
0885nobodyさん
2009/02/26(木) 14:19:48ID:???CSSなども基本的は事はOK
オブジェクト思考自体初めてなので>>883な言った様な
偏った認識もしたくはないですが、PHPのオブジェクト指向ができれば
他の言語もとっつきやすいですよね?
0886nobodyさん
2009/02/26(木) 14:36:47ID:???せめてpostgres
0887nobodyさん
2009/02/26(木) 14:46:06ID:???PHPとPosgreをいつもセットで使ってますからsqlはできます。
0888nobodyさん
2009/02/26(木) 16:21:15ID:???postgreは記憶ないけど
0889nobodyさん
2009/02/26(木) 16:35:04ID:???>>883じゃないけど、オーバーロードとか。
ttp://www.php.net/manual/ja/language.oop5.overloading.php
>PHP における "オーバーロード" の解釈は、他の多くのオブジェクト指向言語とは異なります。
>一般的に「オーバーロード」とは「名前は同じだけれども引数の数や型が異なるメソッドを複数用意できる」という機能のことを指します。
0890nobodyさん
2009/02/26(木) 16:56:04ID:???次はステップはデザパタ?ぽいですね。
0892nobodyさん
2009/02/26(木) 19:06:20ID:???これみてガンガレ
0894nobodyさん
2009/02/26(木) 19:55:32ID:???やっつけ案件はPHP
0898nobodyさん
2009/02/26(木) 23:36:04ID:???なんでオーバーロードなんて名前つけたのかアホとしか思えん
0899nobodyさん
2009/02/26(木) 23:37:18ID:???0900nobodyさん
2009/02/26(木) 23:42:59ID:???PHPだけがこんな状態ならまだいいけど
他の言語がこぞってオーバーロードはこういう機能です!
って別々な実装していったらどうなるんだ?
乗り換えに苦労するだろ
0901nobodyさん
2009/02/27(金) 01:10:45ID:???飯島愛の死体を見せれば。
「これがオーバードーズという状態です」って。
0902nobodyさん
2009/02/27(金) 10:11:12ID:???仕事でPHPやりながら家でJAVAかじります。
0903nobodyさん
2009/02/27(金) 11:01:39ID:???100人↑が絡むような大規模案件はどの道仕様をカリカリにfixさせるので、Javaのような静的言語と相性がいい。
ただし、型でガチガチに固められるから、仕様変更に異常に弱いという欠点がある。
まあ、だからこそちょっとした仕様変更でも追加料金を請求できて、だからこそ儲かると言われるわけだが。
仕様がポンポン変わるようなアプリケーションには、動的言語のほうが向いている。
例えばPHPは、メソッドさえ同じならどんなオブジェクトを渡しても動くような関数が簡単に書ける。
Javaでこれをやるには専用のインターフェイス書かなきゃいけないし、新しい機能を実装すると過去のコードにまで変更が波及しがちになる。
趣味コードでJavaとか、考えるだけで恐ろしい。
仕事でPHPを使うことの次くらいにやりたくないな。
0904nobodyさん
2009/02/27(金) 13:18:50ID:???0905nobodyさん
2009/02/27(金) 18:13:37ID:???それは設計モデル次第だ
0907nobodyさん
2009/02/27(金) 23:31:53ID:???比較の話だろ。
そりゃJavaだってアセンブラよりは変更に強かろうよ。
0908nobodyさん
2009/02/28(土) 23:56:48ID:???を読んで思い切って質問してみちゃいまう
tp://hiroqli.blogspot.com/2007/12/keepass.html
にphpと書かれていたのでここで質問するんですが
これを自分のPC上で実行したい場合どうすればいいんでしょう?
IDMというアプリでエクスポートされたCVSをKeepass用に変換できるもののようなんです
よろしくお願いします
0909nobodyさん
2009/03/01(日) 00:29:41ID:???http://www.php.net/downloads.php
PHP環境を入れる
0910908
2009/03/01(日) 00:45:47ID:???XAMPPというのをインストールして
tp://www.phppro.jp/school/phpschool/vol1/4
のところまでやりましたがそこから先がさっぱり。。
0911nobodyさん
2009/03/01(日) 01:13:58ID:???0912nobodyさん
2009/03/01(日) 12:56:14ID:???「exitは終了時にメッセージを発生しない」
って書いてあるけど、
自分で実際に試したら、メッセージを表示できるんだけど、
教科書が間違っている?
<?php
exit('hello');
?>
0913nobodyさん
2009/03/01(日) 13:02:27ID:???↑パラメータの注意書きのところ
0914nobodyさん
2009/03/01(日) 13:13:51ID:???0915nobodyさん
2009/03/02(月) 02:49:22ID:???変数を入れ子で使うにはどうすれば良いのかご教授ください。
test.php
<?php
$title = "てすとぺーじ";
$hoge = $hensuu1; //変数1の中身を表示させたい
?>
<?php include('html.php'); ?>
<?php echo $html; ?>
html.php
<?php include('hensuu.php'); ?>
<?php
$html = "
<html>
<head><title>$title</title></head> ←$titleは「テストページ」となりますが
<body>
$hoge ←例えばここに「hensuu1」の中身を表示させるためには、どうすればいいですか?
</body>
</html>";
?>
hensuu.php
<?php
$hensuu1 = "実際に表示させたい内容";
?>
0917nobodyさん
2009/03/02(月) 03:10:55ID:???0918nobodyさん
2009/03/02(月) 03:30:10ID:???変なのは分かっているのですが
設計を見直そうにもphpを初めて1週間なので
何をどうしたらベストなのか計画を立てることさえできません。
現状はwindowsにApacheとPHPを入れて
表示されるかどうかを確認するのが精いっぱいです。
0919nobodyさん
2009/03/02(月) 03:34:00ID:???0920nobodyさん
2009/03/02(月) 06:04:37ID:???全然ロックされてないって本当?
0921nobodyさん
2009/03/02(月) 06:15:47ID:???0922nobodyさん
2009/03/02(月) 06:40:23ID:???開いてしまっているので、ファイルの内容が空になる。
そんときに第三者から読み込みにこられると
空のファイルを渡す
それからロックをかける
こういう仕様なので、append以外では使えない。
こういう理解にしました。
0923nobodyさん
2009/03/02(月) 06:46:28ID:???0925nobodyさん
2009/03/02(月) 06:58:05ID:???(2)w+なので、自動的にファイルの中味が空になる
(3)第三者が読み込みにくる
(4)空のファイルを渡す
(5)ここでようやくロック発動
(6)第三者が空のファイルを戻しにくる
(7)カウンタがぶっ壊れる
0926nobodyさん
2009/03/02(月) 07:19:37ID:???別な理由でカウンター壊れてんじゃないの?
カウンターにfile_put_contentsって手抜き杉で笑えるから別なところにもバグありそうだけど
0927nobodyさん
2009/03/02(月) 07:21:20ID:???fopen -> fwrite -> fclose
って3つの流れを自動でやってくれるんだけど、
この中の
fopenが、どうもw+でオープンしてるらしい。
だとしたら、ファイルの中味は問答無用で
オープン時に空になるよね。
だからappend以外では使えない。
0928nobodyさん
2009/03/02(月) 07:25:56ID:???file_put_contentsも第三引数あたりでLOCK_EX使えるでしょ
>>927
該当ファイルを読み込んで修正してファイルを空にして全て書き出すのが基本
追記も便利だけどね
0930nobodyさん
2009/03/02(月) 07:34:32ID:???ソース見てみないとどうなってるかわからないな
0931nobodyさん
2009/03/02(月) 07:36:23ID:???コマンドラインで
for($i = 0; $i < 10000; $i++) {
$data = file_get_contents("test.txt");
$data += 1;
$res = file_put_contents("test.txt", $data, LOCK_EX);
if ($res === false) {
error_log("write failed");
}
}
こんな感じのソースをシェルを複数立ち上げて実行したら、
単独なら10000になるけど、同時実行させると少なくなった。
3端末でやったら29767だった。本来なら30000になるべきだが。
しかし、もし>>925の言っている通りなら、どっかで0が戻るとすると、
こんなにきわどい値にはならない。もっと小さくなる。
排他ロックされて、書き込みに失敗していると見るべきだ。
実際、エラーログには書き込みに失敗した分のfailedが記載されたよ。
よって、LOCK_EXは正しい。
0932nobodyさん
2009/03/02(月) 07:38:18ID:???リトライするなりなんなり、自分で実装しなきゃいけない。
そこを、ミスったのをPHPの仕様漏れにしたがったってことじゃねぇか。
0933nobodyさん
2009/03/02(月) 07:44:15ID:???counter:
try {
カウンター書き込み
} catch(Exception $e) {
while($count <= 試行回数) {
$count++;
goto counter;
}
こんなんか?
0934nobodyさん
2009/03/02(月) 07:51:15ID:???誰も信じて疑っていないのか、PHP5.1.0からサポートされたという、第3引数のLOCK_EXによる排他ロック
file_put_contents( $path, $string, LOCK_EX );
これ・・・・・排他ロック・・・・・・できてません。。。
JMeterの負荷テストにて実証済みです。
具体的にどうなるかというと、書き込み時にロックがかけられないので、
書き込み時に、読み込みが行われた場合は、「空」で取得されます。
うーん。空なのか。。。
0935nobodyさん
2009/03/02(月) 08:07:09ID:???検証してねぇだろそのブログ主
0937nobodyさん
2009/03/04(水) 07:34:34ID:???print M_SQRT2;
?>
で、スクエアルートが表示できると聞いて、
さっそくいろいろ試してみたのだが、
これって結局、2と3しか対応してないのな。
0938nobodyさん
2009/03/04(水) 08:21:57ID:???0940nobodyさん
2009/03/04(水) 08:45:59ID:???crypt、またはMD5,またはsha1等で
暗号化してIDとして表示したいのだが、
安全性はどんな感じか。
0943nobodyさん
2009/03/04(水) 09:09:26ID:???複号されたところでどうなる?
暗号IPとREMOTE_HOSTで照合するわけだよね? だとしたら生IPとREMOTE_HOSTで照合するのとほとんど変わらないと思うが・・
0944nobodyさん
2009/03/04(水) 09:14:22ID:???違う。
アクセスしてきたやつのIPを
暗号化関数にぶちこんで、IDを生成して、
「今、この人達が見にきてます」
って表示するの。
0945nobodyさん
2009/03/04(水) 09:18:17ID:???0947nobodyさん
2009/03/04(水) 09:33:34ID:???文字のランダムな羅列よりも・・
0948nobodyさん
2009/03/04(水) 09:42:46ID:???破棄するのがすっごくめんどうなんだね。
<?php
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
session_destroy();
}
?>
こんなに書かないと消せないなんて、、、
0949nobodyさん
2009/03/04(水) 10:03:06ID:???ブラウザ側のクッキーの扱いなんてしょせんサーバ側でコントロールなんてできないし
0951nobodyさん
2009/03/04(水) 13:50:54ID:???判別するにはどうしたらいいかな?
0952nobodyさん
2009/03/04(水) 13:51:26ID:???ブラウザを閉じたら、ログインしてない。
これでいいのかな?
0953nobodyさん
2009/03/04(水) 15:47:05ID:???0954nobodyさん
2009/03/04(水) 21:10:09ID:???セッションの最も一般的な使い方。
自分で実装するならこんな感じ。
1.ユーザーがログインフォームにパスとIDを打ち込む
2.リクエストを受けたサーバーは、パスワードを照合。
あってたら、ランダム文字列をクッキーとしてユーザーに送りつける。
同時に、この値とユーザーのIDをセットにしてどこかに保存しておく。
一番シンプルなのは、クッキーの値をファイル名にして、中にユーザーID書き込んでおくとか。
((((((10年後))))))
3.ユーザーがアクセス時にクッキーを送りつけてくるので、そのファイルを探す。
あったらそいつはログインしているユーザー。
ファイルの中身を読み、ユーザーのIDを(=ユーザーが誰かを)特定し、処理を続ける。
この「クッキーを発行し、クッキーを送りつける」「ファイルがあるか確認する」をやってくれるのがPHPのセッション。
ファイルの中身がセッション変数に当たる。
0955nobodyさん
2009/03/05(木) 00:53:07ID:Rp65yYdP0956nobodyさん
2009/03/05(木) 01:23:02ID:???ブラウザを開いている間は、出席している。
ブラウザを閉じたら、退席した。
こういうロジックで、セッションを使って実装するのは
どうしたらいいですか?
フォームにIDとパスワード入れてログインするとかじゃなくてです。
IPアドレスだけで実現したいのです。
0957nobodyさん
2009/03/05(木) 01:53:13ID:???セッションが存在しなかったら退席
でいいんじゃないの?
0958nobodyさん
2009/03/05(木) 02:12:34ID:SpoYISjYmysql_query()とmysqli_query()を混在させたり、
mysql_query()で問い合わせてmysqli_close()でクローズしたりする事は
可能でしょうか? 教えてください。
以下のページでは、mysqli_*()ではオブジェクトAPIを使用すると説明がありますが、
mysql_connect()はコネクションを再利用するが、mysqli_connect()は常に新規にコネクションを取得するように
connect以外でもmysql_*()とmysqli_*()では、動きが異なるようなものだったりするのでしょうか?
ttp://d.hatena.ne.jp/taiju1225/20080509/1210305274
0959nobodyさん
2009/03/05(木) 08:44:27ID:???入門本に、header("location:url")のみでリダイレクトされた先のスクリプトで、
$_GET["キー"]で値をとれていますが、GET送信の場合は値を
?で付けていかなければ駄目ですよね?
送り元は自身にPOSTでは値を送っています。
そして送り元も送り先もセッションでは値を送受信していますが。
0960nobodyさん
2009/03/05(木) 08:54:13ID:???0961nobodyさん
2009/03/05(木) 08:57:21ID:???質問のふりして、入門本に文句つけてるだけじゃね?
0962nobodyさん
2009/03/05(木) 08:59:23ID:???0963nobodyさん
2009/03/05(木) 09:01:52ID:???0964nobodyさん
2009/03/05(木) 10:47:36ID:???$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
print $c;
?>
これを実行すると、
8.4E-5
とかって、出てきます。
Eとか不愉快なんで、ちゃんと数字で
結果を表示したいのですが、どうすればいいですか?
0965nobodyさん
2009/03/05(木) 10:59:16ID:???0966959
2009/03/05(木) 11:27:28ID:???header("location:url")でリダイレクトされた先のスクリプト内では、
$_GET["キー"]で値をとれています。
しかしheader内のurlの後に「?キー=値」は付けていません。
GET送信で値を送る時にはURLの後に値を付け足すとしか知識がありません。
headerで送り出す元となるスクリプトでは自身にPOST送信してあるのみです。
0967nobodyさん
2009/03/05(木) 11:30:22ID:???POSTは標準入力だから一度読み込み処理したらお終い
0968nobodyさん
2009/03/05(木) 11:43:15ID:???$a=0.97075300;
$b=0.97083700;
$c=$b-$a;
$d=sprintf("%.f", $c);
print $d;
?>
これを実行すると、
0.000084
ってなるんだけど、
0.000084秒
かかった、って理解でいいの?
0969nobodyさん
2009/03/05(木) 11:54:10ID:???質問になってないしw
0970nobodyさん
2009/03/05(木) 12:00:28ID:???0972nobodyさん
2009/03/05(木) 20:30:31ID:???ブラウザを閉じた事を検知する手段は存在しない。
無理やりやるなら、JavaScriptで10秒おきとかにリクエストを送って、それが切れたらブラウザを閉じた、という事にするくらいかな。
問題は誰かを特定するほう。一般論を言うと、IPアドレスと、それが誰かを紐付ける手段は存在しない。
つうかそんなもんあったらプライバシー上の大問題になる。
学校とかのどのPCを誰が使うか決まっている環境で、固定IPならば可能かな。
俺なら初回アクセスの1回だけログインさせてクッキー(セッション)を発行し、以降はそれで個人識別する。
成りすましが問題にならない案件ならこれでじゅうぶん。1月ごとに再ログインさせる必要はあるが。
(寿命が一ヶ月以上のクッキーは発行できないため。技術的制約)
0973nobodyさん
2009/03/05(木) 21:11:25ID:???0974nobodyさん
2009/03/06(金) 02:54:24ID:???セッションの存在を検知するには、
どの関数を使えばいい?
0975nobodyさん
2009/03/06(金) 03:31:29ID:???0976nobodyさん
2009/03/06(金) 08:41:52ID:???なんで?
0977nobodyさん
2009/03/06(金) 09:03:01ID:???ってなる
0978nobodyさん
2009/03/06(金) 09:03:57ID:???このページの通りにやっているのに、、、
なんで、、、?
0980nobodyさん
2009/03/06(金) 13:54:17ID:???(例えばテキストボックスで送った値)はそのままで、locationの値だけが変わるのですか?
0982nobodyさん
2009/03/06(金) 16:07:33ID:???ttp://www.oricon.co.jp/js/dayrank.js
から読み取りたいのですが「Resource id #3」
と出てしまいます。
どうすれば読み込めるようになるのでしょうか教えてください
0984nobodyさん
2009/03/06(金) 22:26:30ID:???fopenでもしてるの?
freadなりfgetsなりすればok
でもjavascriptの代入文のような気もするけど
0985nobodyさん
2009/03/07(土) 12:32:29ID:???サーバーがエラーを出します。2MB未満だと問題ないのですが・・・
phpinfoを見ると
post_max_size 8M 8M
upload_max_filesize 10485760 8M
にはなっています。
どうすれば2MB以上のファイルをアップロード出来るようになるのでしょうか?
0986nobodyさん
2009/03/07(土) 13:04:50ID:???なぜ書かないwwww
0988nobodyさん
2009/03/07(土) 13:16:24ID:???ちなみにIEです。
Firefoxでやっても同じ結果でした。
0989nobodyさん
2009/03/07(土) 13:28:28ID:???ここに書かれているphpの文字列はなんというソフトを使って実行するのが簡単でしょうか?
0990nobodyさん
2009/03/07(土) 19:42:34ID:???-aオプションと、-oオプションとあるじゃん。
これってどう違うの?
0991nobodyさん
2009/03/08(日) 02:10:40ID:???install all required and optional dependencies
必須モジュールとオプションモジュールまとめて全部持ってくる
-o, --onlyreqdeps
install all required dependencies
必須モジールだけもってくる
ってことじゃない?
オプションモジュールが無ければ、どっちでもかまわないんだろうね
0992nobodyさん
2009/03/08(日) 16:08:41ID:???Yahoo JAPAN ショッピングのWEB APIを扱うPHPのライブラリはないでしょうか?
・Yahoo!デベロッパーネットワーク - ショッピング
http://developer.yahoo.co.jp/webapi/shopping/
PEARにはそういうライブラリはありませんが、
・Manual :: Web サービス
http://pear.php.net/manual/ja/package.webservices.php
楽天の場合、自作して配布している人がいました。
・楽天オークション系対応−PEAR::Services_Rakuten-0.2.2リリース | Shin x blog
http://www.1x1.jp/blog/2007/12/services_rakuten_022.html
Yahoo JAPAN ショッピングで、似たようなものがあれば助かるのですが、
どなたか心当たりの方、お教えいただけないでしょうか?
0993nobodyさん
2009/03/08(日) 18:22:12ID:???オプションモジュールってのは、
つけても、つけなくても、大差ないけど、
できればあったほうがいいモジュールって意味かな?
0994nobodyさん
2009/03/08(日) 19:02:37ID:???試してみたら、すでに時代遅れで、
今は、HTML_QuickForm2になっているんだと。
0995nobodyさん
2009/03/08(日) 19:51:51ID:???発行されるもの?
0996nobodyさん
2009/03/08(日) 20:12:53ID:???0997nobodyさん
2009/03/08(日) 20:18:43ID:???そのセッションはどうなるの?
0998nobodyさん
2009/03/08(日) 20:19:28ID:???0999nobodyさん
2009/03/09(月) 10:13:44ID:???1000nobodyさん
2009/03/10(火) 09:58:21ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。