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

くだすれPHP(超初心者用)5

■ このスレッドは過去ログ倉庫に格納されています
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/
0009nobodyさん2008/11/23(日) 11:44:09ID:???
>>1
0010nobodyさん2008/11/23(日) 12:15:51ID:???
ファイルを読み込むってことはファイルを開いてるってことなんだよ
0011nobodyさん2008/11/23(日) 13:10:19ID:???
>>6
100年はえーよ
0012nobodyさん2008/11/23(日) 14:46:21ID:???
>>8
1行目は意味不明。2行目についてはログ取るなら
fopen($path, 'a');
あたりか。

$pathとしてファイル名に日付でユニークな名前付ければ良い。(例:yyyy_mm_dd.csv)
$pathのあるディレクトリのパーミッションにさえ気をつけておけば、
あとは日付が変わるたびに新しいファイルが出来てそこに追記処理が行われる。
0013nobodyさん2008/11/23(日) 16:19:53ID:/R5EIGze
C++をちょっとやった者なんですが、PHPにはインライン関数みたいなのってないのでしょうか??
0014nobodyさん2008/11/23(日) 18:06:49ID:???
>>13
関数呼び出しのコストを気にする必要がある状況でPHPを使うことが想定できない。
0015nobodyさん2008/11/23(日) 19:17:52ID:???
>>8
俺も1行目の意味がよくわからないけど、
たぶんヒントとして「cron」で検索したら思ってる情報が出るんじゃないかな?
0016nobodyさん2008/11/24(月) 00:29:44ID:???
てtest
0017nobodyさん2008/11/24(月) 11:38:04ID:???
IFを使って、A=0 かつ 文字数が8文字 かつ 文字の種類が半角英数字のみなら実行
それ以外はエラー、という条件を作りたいのですが、どうすればいいでしょうか、教えてください。
0018nobodyさん2008/11/24(月) 11:50:36ID:???
>>17
Aとはなんぞ?意味分からんがこういう事かな?

$A = 0;
$fuge = 'xyz12345';

if ($A === 0 && preg_match('/[0-9a-zA-Z]{8}/D', $fuge)) {
 // 実行処理
} else {
 // エラー処理
}
0019182008/11/24(月) 11:51:43ID:???
>>18
×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:???
読みやすさをとるかCPUの負荷軽減をとるか
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:???
あるだろw
$fuge =& $this->var;
0027nobodyさん2008/11/24(月) 15:07:27ID:iKPzd1uP
>>26
ありがとうございます。
0028nobodyさん2008/11/24(月) 15:51:52ID:???
>>25はおそらくループの中なんかでも平気で
$this->hoge[] = 何かしら;
とかやってるんだろうなw
0029nobodyさん2008/11/24(月) 15:54:29ID:???
それすると何か違いあんの?
0030nobodyさん2008/11/24(月) 15:58:45ID:???
>>29
場合によっては見通しが悪くなる。
つか普通に考えてメンバ変数をループとかやらんだろw
0031nobodyさん2008/11/24(月) 16:22:57ID:???
例えば
$this->users[] = new User(ほげほげ)
とかやらね?

見通しについては、いちいちローカル変数に代入するほうが悪くなると思うが
0032132008/11/24(月) 16:42:34ID:E3B5gNBM
>>14
ありがとうございます。
すいませんもうちょっと分かりやすく教えて頂けると・・
とりあえずインライン関数っていう概念はないってことででしょうか?
0033nobodyさん2008/11/24(月) 16:55:12ID:???
>>32
ぐぐれよ
0034nobodyさん2008/11/24(月) 17:45:35ID:???
>>32
インライン関数がどういう概念なのかを教えてくれれば答える
PHPを知らないあなたと、C++を知らない僕とで対等ではないか。
0035nobodyさん2008/11/24(月) 17:54:32ID:???
俺もC++知らないから調べてみたんだが
コンパイラがないPHPには関係ない話じゃないの?
0036132008/11/24(月) 21:35:01ID:???
>>35
>>コンパイラがないPHPには関係ない話じゃないの?
そーか汗
ありがとうございましたm(_ _)m
0037nobodyさん2008/11/24(月) 22:52:12ID:???
http://d.hatena.ne.jp/ockeghem/20081101/p1
このページに

$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:???
2chのdatファイルをPHPを使ってダウンロードしたいのですが、
どうしたらよいですか?
ブラウザを使ってアクセスするとできるのですが、PHPだとできません。
0040nobodyさん2008/11/25(火) 04:01:15ID:???
レスポンス見ろ
0041nobodyさん2008/11/25(火) 19:28:56ID:???
>>39
馬鹿発見
0042nobodyさん2008/11/25(火) 21:18:12ID:qzrO9YC/
googleみたいに、特定のサイトを自動でインデックス化して検索できるようにするスクリプトってありますか?
phpで書かれたサーバ設置型を探しています。
0043nobodyさん2008/11/25(火) 21:24:20ID:???
ありますか?ってなんだよ
そりゃ誰かが作りゃあるだろバカか?
0044nobodyさん2008/11/25(火) 22:14:09ID:???
>>42
普通そういう事は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使えば簡単楽ちん。
0045nobodyさん2008/11/25(火) 22:20:24ID:???
>>44
thx
0046nobodyさん2008/11/26(水) 17:34:56ID:???
更新ボタンを押すとおk、キャンセルの確認画面を表示させる程度のものを作りたいのですが
phpのなかでjavascript使いたいんですが書き方がわからないです・・・
どなたか教えてください
0047nobodyさん2008/11/26(水) 17:37:01ID:???
echoで出力する
<?php
echo "<script type=\"text/javascript\" src=\"hoge.js\"></script>\n";
?>

あるいは一回PHPモードから抜ける
<?php
//php script
?>
<script type="text/javascript" src="hoge.js"></script>
<?php
//php script
?>
0048372008/11/26(水) 18:03:51ID:???
>>38
>その人のは他のも動かないのあるね。
む、そうなんですか。

>>44
pdo->prepare 既に使ってたんですが、プリペアードステートメントってこれのことだったんですね。
名前だけ知ってたんですが、何のことかよく分かっていませんでした汗
ありがとうございましたm(_ _)m
0049462008/11/26(水) 18:41:54ID:???
>>47
早いレスありがとうございます。

print("<table border=\"1\">");
print("<tr><td>ISBNコード</td><td>題名</td><td>著者</td><td>出版社</td><td>出版年</td><td>更新</td><td>削除</td></tr>");
while($row=mysql_fetch_array($res)){
print("<tr>");
print("<td>".$row["bisbn"]."</td>");
print("<td>".$row["btitle"]."</td>");
print("<td>".$row["bauth"]."</td>");
print("<td>".$row["bpub"]."</td>");
print("<td>".$row["bpubyear"]."</td>");
print("<td><a href=\"update_form.php?bid=".$row["bid"]."\">更新</a></td>");
print("<td><a href=\"library_delete.php?bid=".$row[bid]."\">削除</a></td>");
print("</tr>");
}

さっきボタンと書きましたが実際ボタンじゃなかったです。すいません。
MySQLに接続した図書検索のページなんですが、更新をクリックしたときに確認画面を出したいです。
出力するのとPHPモードから抜けるの試したのですが、
前者は"更新"が表示されなくなってしまいました。
後者はページ自体表示できなくなってしまいました。。
0050nobodyさん2008/11/26(水) 19:06:12ID:???
件数0なんでは?
0051nobodyさん2008/11/26(水) 19:12:23ID:???
>>50
いえ、入れてあります。
0052nobodyさん2008/11/26(水) 19:14:40ID:???
じゃ出るはず
0053nobodyさん2008/11/26(水) 19:16:47ID:???
print("<td><a href=\"update_form.php?bid=".$row["bid"]."\"><script type=\"text/javascript\" src=\"hoge.js\">更新</script></a></td>");
だとまずいんでしょうか。。
0054初心者です2008/11/26(水) 19:52:25ID:51PdxGfY
PHPのフォームからカタカナを検索すると?????になってしまうんですが
どうしたらいいのでしょうか?
データベースはMySQLで、文字コードはUTF−8に揃えてるはずなんですが^^;
いきずまってます。色々なサイト見てますが、出来ません><
0055nobodyさん2008/11/26(水) 19:53:27ID:???
html的におかしいでしょ
更新ボタンをjavascriptで制御したいなら
<input type="button" onclick="javascript:event" value="更新">
onclickあたりでイベント発生させないと
ボタンじゃなくてアンカーだとしても同じこと
<a onclick="javascript:event">更新</a>
0056nobodyさん2008/11/26(水) 20:10:53ID:???
>>54
×揃えてるはず
○揃ってない
0057nobodyさん2008/11/26(水) 21:00:48ID:???
>>53
49のコードは嘘なん?
0058nobodyさん2008/11/26(水) 21:31:17ID:???
>>57
32行しか書き込めないようなのでテーブルのとこだけ抜き出してみました
>53のはこうしてみたけどできませんでした、みたいな感じです

>55の方が指摘してくれてるonclickというのを調べて見ていますが
htmlもjavascriptも全然なもので・・・
0059nobodyさん2008/11/26(水) 21:35:46ID:???
まずは、PHPとJSの特性を知ることからじゃないの?
どうちがうかってちゃんと把握できてるの?
0060nobodyさん2008/11/26(水) 22:12:18ID:???
<a href="update.php" onClick="return confirm('更新するぞゴルァ!');">更新</a>

PHPまったく関係ないけどこういうことがやりたいとか?
0061nobodyさん2008/11/26(水) 23:53:42ID:???
>>60
何・・・だと・・・?
phpもjavascriptもなくできるんですね・・・or2
ありがとうございます、ありがとうございます(´;ω;`)
0062nobodyさん2008/11/27(木) 00:05:14ID:???
.jsファイルを読み込むのがJavaScriptだと思ってるのか
0063nobodyさん2008/11/27(木) 00:13:42ID:???
>>60
これってjavascriptって書いてないけど、
javascriptで動いてるんだよね?
0064nobodyさん2008/11/27(木) 00:25:36ID:???
手抜きせずに基礎からちゃんと学ぼうよ
0065nobodyさん2008/11/27(木) 15:04:23ID:???
ttp://act.st/php/doc/lapis/のアクセス解析を
ttp://www.php-labo.net/download/blog/のブログにincludeを使った形で組み込みたくて
ブログのindex.phpに書いてみたんですが画面が白くなったり機能しなかったりします。

なんとか正常にinclude出来ないでしょうか。
0066nobodyさん2008/11/27(木) 15:11:21ID:???
>>65
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:???
display_errors = On
0069nobodyさん2008/11/27(木) 17:16:11ID:???
>>68
iniでやったけどやっぱり真っ白でした

最初の行に入れると真っ白だけどアクセス解析は機能しているようです。
0070初心者です。助けてください2008/11/27(木) 21:17:24ID:7UVbMsyC
>>56
PHPinfo()でdefault_charsetってとこを見たらnovalueとかなってたんだけど
そこもUTF-8とかにしないといけないのかな?
MySQLの方もUTF-8にしてるんですが…
それとも、SQL文を送信するとこで何か他の方法があるんですか?
文字コードで気をつけないといけないところは他にもあるんですか?
漢字とアルファベットは検索出来ます。
0071nobodyさん2008/11/27(木) 21:22:32ID:???
mbstringの設定しろよ
0072nobodyさん2008/11/28(金) 02:13:04ID:6eZt1xO+
ttp://www.s-memo.net/blog/2006/12/pear.php
を参考にしてPEARを導入しようと思ってたのですが
go-pear.batをダブルクリックしても何もでません
よろしくおねがいします
0073nobodyさん2008/11/28(金) 10:03:58ID:???
http://pear.php.net/go-pearを保存して実行でおk
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:???
ID無し質問スレで書いた者だけど
マルチは最悪だな
0076nobodyさん2008/12/02(火) 21:54:03ID:???
マルチとかはどうでもいいが
コピペで我が物顔で提出されるかと思うと、教える気失せるな。
せめて、ここまでやってみましたけどうまくできなせん、とか
努力を見せてほしいね。
講義をちゃんと聴いてない74が悪い
0077nobodyさん2008/12/02(火) 21:55:58ID:ZnEnsvHS
ユーザーIDとパスワードのとこの配列の使い方が分からないです
0078nobodyさん2008/12/02(火) 22:40:15ID:???
「ここから先ぜんぶわからないんだけど〜」
0079nobodyさん2008/12/03(水) 06:17:09ID:???
>>74
PHP Tutorial #2 - Login form
http://jp.youtube.com/watch?v=7JmSf9JfQjY
0080nobodyさん2008/12/03(水) 20:41:42ID:SBXcaNw7
fputcsvを使って入力データの保存を行おうと思ったのですが、
こういうのってトランザクションはどうするべきなのでしょうか?
0081nobodyさん2008/12/03(水) 20:43:40ID:???
ロックかければ?
0082nobodyさん2008/12/04(木) 01:40:03ID:???
ロック
ロック
ここでロック
あなたから
ロック
手を伸ばして
受け取ってよ
0083nobodyさん2008/12/04(木) 02:49:51ID:6sD/pbke
pecl4winが落ちてるからimagick.dllがダウンロードできないんだけどどっかにないかな?
0084nobodyさん2008/12/04(木) 10:12:39ID:???
自分でビルドすれば?
0085nobodyさん2008/12/04(木) 14:10:31ID:???
$arr=array(15,34,10)
配列の要素の和を求める関数ありますか?
echo 59 の様な感じです。
0086nobodyさん2008/12/04(木) 14:19:24ID:???
>>85
array_sum
0087nobodyさん2008/12/04(木) 14:21:17ID:???
>>86
ありがとうございます。
0088nobodyさん2008/12/04(木) 18:07:23ID:???
PHPは本当にどんな関数でもあるな
perlだったら、いちいち自分で書かないといけない。
0089nobodyさん2008/12/04(木) 18:20:27ID:???
>>88
世の中はPHPとPerlだけではないのだよ?
0090nobodyさん2008/12/04(木) 18:24:46ID:???
PHPはウェブありきで設計された言語だからな
つーか関数多過ぎ
0091nobodyさん2008/12/04(木) 18:26:39ID:???
いやいや少ないだろ・・・
0092nobodyさん2008/12/04(木) 22:46:59ID:???
多いから何なんだろう
学習コストが高い?
優秀な言語?
0093nobodyさん2008/12/04(木) 23:39:39ID:ge2NtuW2
formタグを使って配列を受け渡したいのですが、そういうのってどうしたら良いのでしょうか?
0094nobodyさん2008/12/05(金) 01:26:39ID:zoYImp6K
配列で0〜99まで格納ってわざわざ全部array(で打ち込んでいくしかないですか!?
0095nobodyさん2008/12/05(金) 01:33:39ID:jMVHCYUr
>>94
意図がわからんが、rangeとか?
0096nobodyさん2008/12/05(金) 01:37:35ID:???
日本語でOK
どういう値を渡したいのだ?
0097nobodyさん2008/12/05(金) 04:44:41ID:???
$a=(0-99);

とかでしょ?
0098nobodyさん2008/12/05(金) 09:25:55ID:???
rangeだろ
0099nobodyさん2008/12/05(金) 16:28:02ID:fefynmKZ
csvファイルの15行目から25行目を読み込むみたいな処理をしたいんですが、
こういうファイルの途中から途中までの読み込みって出来ますか?
あるいは、やっぱり一行目から読んでいって、
目的のデータにくるまでは捨てていくしかないでしょうか?
0100nobodyさん2008/12/05(金) 16:31:02ID:???
捨てていくっていう表現はおかしいな
例えばfileで配列に読み込んで
[14]〜[24]までを取り出せばいい
ファイルの中身が膨大でメモリの負担を考えるなら
また別の方法を考えるべきだが
0101nobodyさん2008/12/05(金) 17:33:46ID:???
読み込み位置を変えるseekというものはあるが、
テキストファイルのように1行の長さが不定なものには使えない。
0102nobodyさん2008/12/05(金) 18:34:07ID:???
Googleのように、ログインした後はブラウザを一回閉じても
再度開いたらログイン済になっているような機能を実装したいんですが、
参考になるサイトなど教えて貰えませんでしょうか?

クッキーを使うのかと思ったらGoogleはクッキーオフでも上記動作をしているようです。

こういう機能をなんと呼ぶのかも判らないので名前を教えて貰えるだけでも結構です。

よろしくお願いします。
0103nobodyさん2008/12/05(金) 19:22:16ID:???
>>102
うそつけw
Cookieオンにしろといわれたぞ
IPやホスト名を鯖側で記録しておいて
変化するまで有効にする手なんてのも考えられるが
一般的じゃないしセキュリティ的にも危険
01041012008/12/05(金) 19:38:49ID:???
>>103
すいません、Firefoxでやったらエラーでました。

IEでクッキーを受信するときにダイアログを表示するように設定して、
僕のサイトで警告が出るのを確認してからGoogleにログオンしたんですけど
何故かオンになってたみたいです。

クッキー使うって事はユーザー名とか暗号化して記録すれば良いんですね。
ありがとうございました。
0105nobodyさん2008/12/05(金) 19:53:32ID:???
Cookieを使ったセッションだと思うぞ。
0106nobodyさん2008/12/05(金) 20:20:33ID:???
セッションでブラウザ閉じた後情報が保持されるかアフォ
0107nobodyさん2008/12/05(金) 21:13:25ID:???
Cookieの中身を見てみりゃいいのに…
0108nobodyさん2008/12/05(金) 21:45:22ID:jMVHCYUr
>>106
セッションID持たせて有効期限。
■ このスレッドは過去ログ倉庫に格納されています