3 :
nobodyさん :2008/06/17(火) 20:01:46 ID:Xhinm60Q
あげとく
超初心者用と普通のくだすれの切り分けが難しいね。
5 :
919です。 :2008/06/18(水) 00:58:52 ID:eWKB+6dR
書籍本から来ました。
大角本でわからないところがあり質問です。
カテゴリーのところがよくわかりません。
一応カテゴリーに関するところのソースをUPしたんですが
http://gichioka.web.fc2.com/document.rar 誰か説明してください。
よろしくお願いします。
特になんでこれでcategoryが作られるのかわかりません。
新しくカテゴリーが、これであとなんで商品登録ができるのでしょうか?
7 :
919です。 :2008/06/19(木) 01:07:52 ID:uVAJKLwk
いや、なんでそれでカテゴリーが作成されるのかが わからない。
8 :
919です。 :2008/06/19(木) 01:11:28 ID:uVAJKLwk
もしかしてSQLの知識がたりないのかもです。
9 :
nobodyさん :2008/06/19(木) 15:20:33 ID:byCSm/Ip
ケータイとPCで自作した掲示板の処理を確認しています。 PCだと、 コメントを削除→元の画面 →コメントが削除されている ケータイだと、 コメントを削除→元の画面 →コメントが表示されたまま(実際にはデータは消えいてる) 更新すると、コメントが削除されている画面が表示される。 どうも、ケータイだと前の画面の情報を掴んだままの状態があるようです。 cache-control などをやっていますが、効果はないようです。 ケータイのブラウザに、昔の情報を表示させない方法はご存知ありませんか?
URLのうしろに毎回変わる無意味な変数入れとけば
11 :
nobodyさん :2008/06/19(木) 15:35:08 ID:byCSm/Ip
>>10 あっ、なるほどURLと画面が紐づいているなら有効そうですね。
試してみます。
>>10 上手くいったみたいです。
ありがとうございました。
>>8 じゃぁ、逆にSQLって何するもんだと思ってる?
レッツPHP!の新着ブロガー
ttp://php.s3.to/net/ を使いたいのですが、下記のようなエラーが出てきます。
なんとか自分のHPに設置したいのですが、どこをどう直せばいいのやら
わかりません。
Warning: main(XML/RSS.php) [function.main]: failed to open stream:
No such file or directory in /home/sites/lolipop.jp/users/main.jp-
○○○/web/allblog/rssup.php on line 5
Fatal error: main() [function.require]: Failed opening required
'XML/RSS.php' (include_path='.:/usr/local/lib/php:/usr/local/lib/php/Smarty')
in /home/sites/lolipop.jp/users/main.jp-○○○/web/allblog/rssup.php on line 5
レンタルサーバーはロリポップ
サブドメインでallblog.ドメインとしてます。
ファイルは
allblog
├reeup.php
├RSS.php
├PEAR.php
├Parser.php
├index.html(このHTMLに<?php include("rssup.php"); ?>を貼ってます)
├.htaccess(中にAddType application/x-httpd-php .htmlと書き込んだだけ)
なんとか動かしたいのですがどなたか親切な方教えていただけないでしょうか?
>>15 今、reeup.phpの5行目が有効になってると思う。
ソレをコメントアウトして、
3行目をコメントインしたら、動くんじゃないかなぁ。
17 :
15 :2008/06/21(土) 01:38:50 ID:???
>>16 動きました。ありがとうございました。2日ぐらい悩んでたのでうれしいです。
ほんとうにありがとうございました。
>>17 今後も似たようなエラー出てくると思うから、
思い立ったときにでも、エラーメッセージをそのまま検索とかして、何のエラーかとか、
少し学習するのもいいと思う。
がんばって下さい。
19 :
nobodyさん :2008/06/22(日) 13:25:43 ID:PqDX8Tuj
php勉強したいんですが お勧めのHPとかありますか。
>>19 PHP 入門
でググって出てきたサイトを上から眺めていけばいいんじゃないかな。
ほでなすPHPとかでも勉強にはなった。
まぁ、入門っていうなら、PHP関連の書籍スレでも眺めて、初心者向けでいい本を読むのがいいかな。
あのすいません。質問です。
基礎からのPHPでの質問ですが、admin.phpのところで、
if (isSet($_GET['tab']) && $_GET['tab'] == 'conf')
{
require('adminConfig.php');
}
else if (isSet($_GET['tab']) && $_GET['tab'] == 'edit')
{
require('adminEdit.php');
}
else if (isSet($_GET['tab']) && $_GET['tab'] == 'list')
{
require('adminList.php');
}
else
{
require('adminConfig.php');
の部分でisSet($_GET['tab']) の意味がわかりません。
どっからtabはでてきたんですか?
http://gichioka.web.fc2.com/blog.rar ここにソースを保存したので、よろしくです。
>>22 GETメソッドと、POSTメソッド、って言うものを理解しないと正直きつい。
まぁ、とにかく、
このadmin.phpにアクセスするときに、
ttp://www.example.com/admin.php?tab=conf とか、って書いた場合、これはGETメソッドで、そのadmin.php以下のプロパティを渡すんだ。
で、ソレはPHPが自動的に、$_GETっていう連想配列に渡される。
上の例だと、$_GET['tab']に、'conf'が渡されるわけだ。
POSTメソッドで渡されたものは、$_POSTに渡されてくる感じ。
で、分かるかな。
適当な回答なので突っ込みあれば宜しく。
>>21 PHP関連の書籍スレってひどくね?
基地外しかいないみたい
23へ よくわかりました。 ありがとうございます
26 :
nobodyさん :2008/06/25(水) 21:01:39 ID:57l0ft98
すいません。質問です。
大角本で質問なんですが、
?
if ( $_SESSION['checked_item'] != '' ) {
foreach( $_SESSION['checked_item'] as $value ) {
$sql = "select * from item
left join author on item.author_id = author.author_id
where item_id = '$value'";
$result = mysql_query( $sql );
while ( $item = mysql_fetch_array( $result ) ) {
?>
の部分の$_SESSION['checked_item']の'checked_item'はどこからきたの?
あと$sql = "select * from item
left join author on item.author_id = author.author_id
where item_id = '$value'";
このsql文はなんでしょうか?
教えてください。
ソースはこちらにあります。
http://gichioka.web.fc2.com/sample-ec101.zip
検索しない理由は?
なんで自分で考えないんだろうね
29 :
nobodyさん :2008/06/25(水) 21:18:57 ID:57l0ft98
検索したんですが、 sessionとmysql見てみたんですが、 sqlに関しては左側の部分をとりだすとのことなんですが、 いまいち意味がわかりません。 よろしくお願いします。 author.author_id ここの部分とか.... わかりません。
30 :
nobodyさん :2008/06/25(水) 21:22:09 ID:57l0ft98
質問してはだめですか? もしだけならここ見たらいいよとかのURLやここに聞いたらいいよ とかのヒントだけでもお願いします。
1.ググれ 2.本読め 3.リファレンス読め
>>27 ,
>>28 まぁ、超初心者スレだから、そういうなよ。何をどう検索したら良いかとかいまいちピンと着てないだけかもしれないでしょ。
とりあえず、
>>26 は、そのSQL文の何がどうわからないのか教えてよ。
$_SESSIONは、セッション変数って奴で、多分別のファイル見れば、セッション変数に値入れてる行があると思うよ。
詳しくは、
http://jp2.php.net/session
33 :
32 :2008/06/25(水) 21:26:52 ID:???
亀レス過ぎたww
恥ずかしい。
>>29 item.author_idってのは、itemテーブルのauthor_idフィールドのこと。
author.author_idってのは、authorテーブルのauthor_idフィールドのこと。
文字化けのことで困っています。 ・PHP 5.26 @ WinXP SP2 ・ファイルは BOM無しのUTF8 で保存 ・mbstring.internal_encoding = UTF-8 ・mbstring.http_output = pass ・mbstring.http_input = auto 以上の環境にて、以下のようなスクリプトを動作させたとき、 <?php var_dump($_GET); ?> $_GET に日本語が含まれると文字化けを起こしてしまいます。 mb_detect_encoding を使ってみた結果、$_GET が SJIS で渡されており、これがファイル保存時の文字コードと異なるために、 文字化けを起こすものと思われます。 これをどうにか解消したい($_GETをUTF8で受け取ってほしい)のですが、どのようにすればよいか検討がつきかねます。 どなたか、ご助力いただけると幸いです。よろしくお願いします。
35 :
34 :2008/06/25(水) 22:11:44 ID:???
ミスです。 ・PHP 5.2.6 @ WinXP SP2 です。
htmlをutf-8にする
37 :
nobodyさん :2008/06/25(水) 22:23:08 ID:6PfOtUiM
>>36 ・ファイルは BOM無しのUTF8 で保存 に含めたつもりでしたが、
HTMLもUTF8になっています。
>>37 HTMLの<head>タグに、
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
を突っ込んだらどうよ。
39 :
34 :2008/06/25(水) 22:48:25 ID:???
追記です。 同じように $_POST も試してみましたが、こちらは文字化けは起こらず、mb_detect_encodingの結果も UTF-8 でした。 発生するのは $_GET のときのみのようです。
>>38 ありがとうございます。
meta に入れるのもやってみました。
やはり、$_GET で受け取った文字列だけが文字化けが起こします。
ああアドレスバーに直接打ち込んでんの?
>>42 情報小出しになってしまってごめんなさい。
はい、アドレスバーに直接打ち込んでテストしています。
あきらめて、SJISでプログラムしたほうがいいのでしょうか……。
そういう特殊なことしてるんなら先に言ってくれないとわかんねーよ・・・ んでもって、本番でもアドレスバーから直接入力するんですか?それともページ中にリンク張るんですか???
>>44 本当に申し訳ないです。
もちろん、ページ中からリンクを貼りますが、$_GET から値を持ってきて、HTML中で表示させたときに文字化けしてしまうとなると、
form などから get で送って、次のページで受け取り表示する、ということができないので、何とか解決したいと思っています。
>>45 form から get で送ればURLエンコードされるよ
?hoge=あいうえおの部分はinput type=hiddlenで指定する
>>46 スペル間違えた
<A>だとURLエンコードする必要があるな
>>45 よく分からん。
HTML中に<a href="hoge.php?q=あいうえお">とか書くってこと?
それともフォームでmethod="get"でinput type="text"に日本語入力してもらうってこと?
いずれも適切にエンコード設定すれば文字化けなんかしないから大丈夫
>>46 あれれれ……?
そのとおりです。formから送ったらgetでも正常でした。
ってことは、「アドレスバーから直接打ち込んでいた」ことが原因だったようですね……。
これだけのために、本当にご迷惑をおかけしました。
情報の小出し、気をつけます。
ありがとうございました。
最初から書いていれば1レスで終わったのにね。まぁ頑張ってください。
>>26 「item.php」のこの部分みたい
if ( ++ $_SESSION['checked_item_num'] > 4 ) $_SESSION['checked_item_num'] = 1;
if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) )
$_SESSION['checked_item'][$_SESSION['checked_item_num']] = $_GET['item_id'];
ところで二行目の (array) ってなんの意味があるの?
だれか教えて下さい。
よくわからない・・・ こういう使い方なら理解できるんだけど function foo($value) { $array = (array) $value; print_r($array); } なんでif()の条件に if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) ) こういう使い方をするんだろ。
>>53 $_SESSION['checked_item']が配列じゃなかったときにエラーはかれるのを回避したかったんじゃないの?
(array)で型キャストすれば単一文字列が入ってても、配列に変換されるし。
$_SESSIONはそれ自体で配列じゃないの? 要素が一つでも配列は配列だし。 うーん。 眠いから明日また考えてみる。 ありがとう。
>>56 $_SESSIONは配列かもしれないけど、
$_SESSION['checked_item']は、配列じゃないかもしれないだろ?
(array)取ってどんなエラーが出るか動作確かめればいいのに。。
59 :
nobodyさん :2008/06/27(金) 04:01:35 ID:XEI5jC31
if ( ++ $_SESSION['checked_item_num'] > 4 ) $_SESSION['checked_item_num'] = 1; if ( ! in_array( $_GET['item_id'], (array)$_SESSION['checked_item'] ) ) $_SESSION['checked_item'][$_SESSION['checked_item_num']] = $_GET['item_id']; 僕もわかりません。 (array)と結局なんの処理なんでしょうか?
これはひどい自演
in_arrayを使ってる時点では$_SESSION['checked_item']が配列若しくはnullの可能性があって item_idがその中に無ければ配列として追加してってる感じ? その配列キーは$_SESSION['checked_item_num']で最大4まで それ以上の場合は1に戻す
63 :
56 :2008/06/27(金) 22:24:17 ID:???
>>57 やっと理解できました。
array型へのキャストは、スカラならその値をひとつの要素とした配列に
配列ならそのままの状態、というふうに切り替わるんですね。
そこを知らなかったから余計に混乱してました。
ありがとうございます。
だから何でマニュアルすら読まないのか
>>64 型キャストって言葉が出てこなかったら、(array)で何が起こってるかっていうのは、
検索しづらいんじゃない?
きっかけとかとっかかり掴みづらい内容ではあったと思う。
超初心者スレだし、多めに見てやりなよ。
算数解らないのに数学やろうとしても解るわけ内じゃん
キャスト自体は知ってたんだろよく読め あとマニュアルが一番基礎の教科書
知ってることと理解してることは別
なら尚更マニュアル読むかググれって感じ
70 :
nobodyさん :2008/06/28(土) 07:49:57 ID:9QUTsyON
質問です。 $str = <<<EOM あああ<br /> いいい<br /> ううう<br /> <!--S--> えええ<br /> おおお<br /> <!--E--> EOM; このうち<!--S-->と<!--E-->で囲まれている<br />だけを削除したいのですが、 正規表現を使って綺麗に書けるでしょうか? 以下のように試したのですが、<!--S-->と<!--E-->が消えるだけでした。 $str = preg_replace("/<!--S-->([\W\w]+)<!--E-->/",str_replace("<br />","","\\1"),$str); また、<!--S(E)-->で囲まれている部分は改行や半角英数字などが含まれる場合があります。 どなたかご教示いただけますでしょうか。よろしくお願いいたします。
正規表現スレでどうぞ
72 :
70 :2008/06/28(土) 08:34:53 ID:???
73 :
nobodyさん :2008/06/29(日) 10:08:17 ID:l4KJ7KZ4
あいうえお眉幅はEUCを判別させるために有効みたいだけど 同じ方法でUTF-8を判別させる方法てありますか?BOMは 考慮にいれたくないです。
3バイトならutf-8なんじゃね
75 :
nobodyさん :2008/06/29(日) 18:23:50 ID:hneArZSD
あのすいません。質問です。
基礎からのPHPからの質問なんですが、
自分のサーバーに移行して実行したところ、
loginForm.phpでIDとパスワードを聞かれて入力したいのですが、
うごきません。というかIDとパスワードはなんなんでしょうか?
本にはroot,rootpassと書いてあったんですが、動きません。
すべてデータベースも起動させているのですが、pearも入っています。
http://gichioka.web.fc2.com/blog.rar ここにソースを保存したので、よろしくです。
書いてあるURLは403で落とせないんだが・・・ それよりおまえ、>5で>26だろ? SQLを基礎から勉強してこいって。
77 :
nobodyさん :2008/06/29(日) 18:41:10 ID:hneArZSD
落とせるようになりました。 よろしくです。 SQLの勉強もします。 お願いします
では身に付いたら知らせて下さい
79 :
nobodyさん :2008/06/29(日) 19:07:35 ID:hneArZSD
教えてもらえないんですか?
SQLの勉強はいつするんですか?
81 :
nobodyさん :2008/06/29(日) 19:14:08 ID:hneArZSD
初めてのPHP+MYSQLの本も買いましたし、読んでいます。 今回これがなぜうごかないのかわかりません。 この板ではだめですか?
82 :
nobodyさん :2008/06/29(日) 19:15:56 ID:hneArZSD
あと あと、ログイン画面は表示されるのですが、 下のトップページに戻るは真白です。 よろしくお願いします。
アクセスするDBサーバのIDとパスワードを入れればいいんではないでしょうか
84 :
nobodyさん :2008/06/29(日) 20:50:46 ID:hneArZSD
DBサーバのIDとパスワードもだめでした。
じゃエラー表示するようにして見れ
ID:hneArZSDを「画伯」と呼びたくなる
これはもうだめかもわからんね
こんな奴が中途で入社してきたら最低だろうな…
SQLの文字コードって全部合わせておけばいいのかな……? テーブル、カラム、データベース全体……個別個別で細かく設定できすぎてよくわからない。
PHPでスタックとキューを表現するコードを書きたいのですが、 どこか参考になるサイトありますか? /* PUSH */ $arr = array(); $num = 5; //意味ないかもしれませんが・・・ for($i = 0;$i < $num;$i++) { $arr[] = $i; //array_push($arr,$i); とやろうとしたけど、これは無理でしょうか。 } $ct = count($arr); echo "要素数:$ct\n"); ・ ・ ・ ・ てな感じで書いてるんです。 本当はarray_pushやarray_pop、unshiftやらを使いたいのですが、 これら全てが上手く動いてくれません。助言お願いします。
上手く動いてくれないって?
>>91 for文の中身は確か、
$arr[] = $i + 1;
の間違いでした、スイマセン。
echoで$arrの中身を順番に表示させると、
1
2
3
4
5
という風になるんですが、array_pushで
>>90 のコメントで書いている通りのコードで
実行させると、配列から何も取り出せてなかったんです。
コード見せてみ?
見せることが出来ません・・・持って帰ってこれない決まりになっているので。 実は入社してから、初めてPHPを触りまして、まだ2日目です。
いや問題が再現する部分だけでいいからw
>>90 array_push array_pop
>>95 pushの部分では、
>>90 の通りです。
後は、echoで&arrの中身5つを順に表示させて終わりです。
$arr[] = $i + 1;
の下に、
echo = "$arr[i]\n";
これだけです。
ちなみにstackクラスの中でpushとpopの関数を作っています。
$arr[$i]ぢゃないでしょうか
>>98 ああ・・そうです、すいません
まだ$つけるの慣れてないものでつけ忘れました・・・
実際のコードではつけてますので。
なんかよく分からんけどとりあえずはい $arr = array(); for($i=0; $i<5; $i++) { array_push($arr,$i); echo "$arr[$i] "; } 結果 0 1 2 3 4
>>100 ええ・・・出来るんですか
あと、
>>97 でecho = ...とかやってますね、もう間違い酷すぎます・・・。
自分の環境では、
PHP5
apache 2.2
eclipse(PDT) 3.3
なんですけど、array_push等が使えないはずはないと思うんですけどね。
メモらせていただきます、ありがとうございます。
PHPの勉強を兼ねて、投票CGIを作っています A〜Eの5つの投票対象(固定)に対して1票と1行コメントを同時送信できるスタンダードな(?)ものです A.txt 〜 E.txtまでを作成し、そこから票数を読んで加算、上書きするという形で一応投票の基本的な部分までは作成することが出来ました またコメントも別にA_comment.txt 〜 E_comment.txtを用意し、そこの最後の行に追記していくことで保存できるようにしました そして今、現在の各アイテム票数をランキングにして表示できるようにしたいのです 具体的には、例えばAに15票、Bに20票、Cに5票、Dに1票、Eに50票入っていたとしたら 1位 E(50票) 2位 B(20票) 3位 A(15票) 4位 C(5票) 5位 D(1票) という風に表示したいのです またそれに関連して各項目をクリックするとコメントを見られるページに飛ぶという仕様を考えましたが、これはリンクでGETを使ってパラメータで分岐すればいいと考えています 肝心のランキング表示部分をどう作っていいのか分からないので、どなたか教えていただけないでしょうか ソートについても色々調べてみましたが、票数を並べ替えた後の項目との関連付けをどうやっていいかよく分かりませんでしたorz
>>102 rsort (krsort/arsort)
104 :
75です。 :2008/07/02(水) 02:21:42 ID:/ZwHa0Ji
レスくれた方シカトしてしまってすいません。 今勉強をして、なんとか自己解決できるように したいと思います。 SQL勉強中です。 亀レスすいません。
>>104 一回、PHPから離れて、MysqlとかでDB構築して、コマンドラインでいろんなSQL実行してみればいいと思うよ。
がんばれ。
107 :
102 :2008/07/02(水) 06:34:22 ID:???
>>103 解決しました!ありがとうございました!
>>106 Host: www.example.com →HTTP_HOST
User-Agent: PHP →HTTP_USER_AGENT
X-MyCustomHeader: Foo →HTTP_X_MYCUSTOMHEADER
つまりはそういうこと。
109 :
nobodyさん :2008/07/04(金) 00:37:52 ID:q3bb7c0a
8953201 や 3545 や 156783 などの数字を 89.53201 35.45 15.6783にしたいのですがどうしたらいいのでしょうか?
110 :
nobodyさん :2008/07/04(金) 00:38:48 ID:q3bb7c0a
あ、すいません。三つをつなげたいわけじゃなくて2桁目に.を入れたいという意味です。
二桁目じゃなくて右から2つ目にですね… すいません…
>>109 $a = 8953201
$a = preg_replace('/^([0-9]{2})([0-9]+)$/', '$1.$2', $a);
つまり正規表現を使えばよいのではないか。
おお、できました!ありがとうございます!! ちなみにこれは、前半部分が$1に、後半部分が$2になってるって解釈でいいんでしょうか?
あ。うそ。ごめそ。
mssqlに接続をやってみようと思い <?php $link = dbx_connect(DBX_SYBASECT, "localhost", "db", "username", "password"); dbx_close($link); ?> とりあえずこれで、dbx関数とsybasect周りが使えるかどうかチェックしたんですけど エラーが出てしまいました。 Warning: dbx_connect() [function.dbx-connect]: dbx: module '7' not loaded or not supported 環境はxampp1.6.6 for linuxで、apacheは2.2.8、PHPは4.4.8です。 extensionに設定されたディレクトリに、php_dbx.dllとともに、php_sybase_ct.dllを配置してあるので 読み込まれていない・・・ということは無いと思いますし(apacheの再起動は何度もかけています。) php.iniの設定も問題なさそうです。 PHPのバージョンも、4.2.0より後発のもので、サポートもしていると思うのですが どなたか、なにとぞ助力をお願いできないでしょうか。
linuxでMSSQLでdll???
あ、ごめん 間違えてた windows機のほうでした・・・。 マシン入れ替えていろいろ試してたら混乱してしまった。
phpinfoで確認
120 :
nobodyさん :2008/07/04(金) 16:50:08 ID:4Xa3cuiv
PHPスクリプト内の文字列の扱いについて質問なのですが PHPバージョンは5 自動変換系は全てパス、スクリプトはUTF-8で記述、 internal_encodingもutf-8とします。 スクリプトの処理内容は UTF−8エンコードで送られてくる文字列”あいうえお” を受け取りそれをスクリプト内で ”あいうえお”か判断して”あいうえお” なら真を返すてだけの単純なものなのですが ”あいうえお”を送っても真を返してくれません。 それで今度はポストするデータをEUCエンコードで送ってみると あらふしぎ真を返してくれるんです。 PHPスクリプト内に書いてある文字列たとえば <?php $a="あいうえお";←ここの部分 ?> はロケールのエンコードで解釈されてる気がするのですが (OSのロケールはEUC−JPだった) どうなんでしょうか?舌ったらずで申し訳ありません。。。
121 :
75です。 :2008/07/05(土) 00:32:52 ID:MACe5BF6
euc-jpでやれば。 なんかutf-8にしないといけない理由とかあるの?
wordpressとか?
>>120 送られてくるデータってのは、GETしてるの?
POSTしてるの?
ついでに、どちらでもいいけど、ブラウザがGETorPOSTしたデータを、echoしたら文字化けするの?
真偽値取る前に、そこらへん確認してみては。
>>120 ソースの文字コードがeuc-jpだったというオチでは?
euc-jpの「あいうえお」とutf-8の「あいうえお」じゃ当然マッチしないわ。
125 :
nobodyさん :2008/07/08(火) 22:48:01 ID:nzIgHbiU
exif_read_dataってちゃんと画像の形になってないと読んでくれないんですかね? mail_mimedecodeで添付付きメールを分解したんですが、その添付ファイルを撮影時間の名前で保存したいんです おそらく、一度保存してからexifデータを読み込み、その後名前を変えるって形ならいけるとは思うんですが 二度手間になってしまうのでもし出来るのならと思いまして
126 :
nobodyさん :2008/07/09(水) 01:55:27 ID:U9Y+NLIi
そうだね
どなたか、解決に力をお貸し願えないでしょうか。 postfixを使って、phpからメールを送りたいのですが うまく動作していない状態です。 環境はCentOS5上、Apache2.2.9 PHP-4.4.8 postfix-2.5.2で 全てソースからインストールしています。 直接、mailコマンドでgmailにテストメールを送信したら、正常に送信されたので ポートの開放や、postfixそのものの設定は問題なさそうなのですが PHPからmb_send_mailを使用して送信した場合、gmailに送信されずにいます。 php.iniのsendmail_pathには「/usr/sbin/sendmail.postfix -t -i」と 設定しているのですが、エラーログに以下の内容が出力されていました。 Jul 11 11:52:42 localhost postfix/local[31480]: fatal: open database /etc/aliases.db: No such file or directory Jul 11 11:52:43 localhost postfix/master[23909]: warning: process /usr/libexec/postfix/local pid 31480 exit status 1 Jul 11 11:52:43 localhost postfix/master[23909]: warning: /usr/libexec/postfix/local: bad command startup -- throttling 問題点が思い当たる方いらっしゃいましたら、何卒ご助言をお願いいたします。
別にsendmail_path通さなくても alternatives --config mtaでpostfix選択するか system-switch-mailで切り替える方が良いよ
なんかDB周りの設定とかindex.phpとsideBar.phpとentryView.phpとadmin.phpと
loginform.phpの部分とかがおかしいみたいです。
Windowsでは動くらしいけどlinuxでは動かないとかなんとか。
もうくそ本でした。
くやしい.....
誰かなんとか動くようにはできないでしょうか。
ソースは
http://gichioka.web.fc2.com/blog.rar です。
マルチ失礼しました。
報告までです
130 :
75です。 :2008/07/11(金) 19:49:15 ID:???
すいません。 129=75です。あのときブログのことで質問しました。 あの時はいろいろ教えていただきありがとうございました。
まだやってたのか ログインできたの?
loginformはだめですが。 admin.phpはいけます
誰か助けてくれ---------------------
何を?
あんた向いてないから諦めろ
あきらめきれない。 3000もしたんだよ
画伯も大変だな 3000は大金だもんな 元気出せよ
買った本をあきらめろってことじゃなくて、 PHPの勉強をあきらめろってことじゃあ…
139 :
nobodyさん :2008/07/15(火) 03:16:57 ID:YrbWt9It
この本返そうかと思ったぜ。 ソフトバンクの本はもう買わん
140 :
nobodyさん :2008/07/15(火) 15:59:19 ID:px8EuhxF
simplexmlについて質問です。 以下のようなXMLからCountの値を取得したいのですが、 取得できません。 $string = <<<XML <?xml version="1.0" ?> <document> <Hoges> <Count>2</Count> <Hoge> <aa label="monar" /> <name>モナー</name> </Hoge> <Hoge> <aa label="yaruo" /> <name>やる男</name> </Hoge> </Hoges> </document> XML; $xml = simplexml_load_string($string); foreach($xml->Hoges as $key => $tmp){ /* ここでCountの値を取ろうとしていますが $keyが'Hoges'になっていて取得できません。 */ } ↑のforeach内で取得する方法を教えてください。 ちなみに、$xml->Hoges->Countでは正常に取得できます。 どうかよろしくお願いします。
foreach($xml->Hoges as $key => $tmp){ echo $tmp->Count; }
142 :
nobodyさん :2008/07/16(水) 01:29:04 ID:yQh99k9k
掲示板作ってるんですが最近英語表記のみ url大量に含まれた書き込みが大量に送り込まれ処理に困っております。 POSTで受け取っている$_POST['text']に日本語が含まれていないものを除外、urlが2つ以上含まれているものを除外したいのですが どのようにしたらよいのでしょうか? あと似たような問題は他にもいくらでも出てくると思うので、SPAM書き込み対策 掲示板作成の参考になるようなHPとかあるようでしたら教えてください。 よろしくお願いいたします。
ひとつはjavascriptで制御だな。 javascriptでこの文字が入っていたら除くとか 検索すれbないいよ。 もうひとつはapacheのところで、どこからきているか を解析してそいつらはみられないようにするんだ。
<?php $baseball = array('鈴木'=>16, '松井'=>55, '清原'=>5); foreach ($baseball as $key => $val){ print ($key." : ".$val."<br />"); } ?> これの $key の後ろの . って何のために必要なんでしょうか?
文字連結のため。
連結をしないとエラーになってしまいますが、なぜエラーになるのかがわかりません。 連結をしなければいけないときとしなくてもいいときがわからないというか?
>>147 お前はいったい何がしたいんだ?
>>145 のソースでは当該箇所はどう見ても文字列を連結しようとしている
わけだから、連結演算子(.)は省けないだろう。
どうしても連結したくないなら
print $key;
print " : ";
print $val;
print "<br />";
とでもしておけ。
普通なら
print "{$key} : {$val}<br />";
で終わりだがな。
>>148 なるほど。
意味がわかったような気がします。
ありがとうございました。
150 :
nobodyさん :2008/07/16(水) 13:20:58 ID:JWV92MXF
. で連結するより、変数を{ }で囲った方が処理的負荷が少ないの? たしか、 .で連結するより ,で連結した方が、処理的に早いって聞いた 処理速度 { } > , > . これであってるかな?
PHPの質問とはちょっと違うと思いますが、
例えば、a8等のアフィリエイトの場合、広告主がサンクスページ(購入完了画面) に申し込み確定タグを
imgタグで仕込みます。
流れ的には、
サイトオーナー番号の付いた a8 のタグをクリックし、クッキーを発行
http://aaaa.com/in.php?s=001 ↓
広告主サイト
http://bbbb.com/ ↓
商品購入完了画面で、imgタグにより a8 へ通知
<img src="
http://aaaa.com/check.php ">
という流れだと思うのですが、この時、最初に発行されたクッキーは a8 の名前で作成されるのですが、
これを商品購入完了画面の imgタグで、a8に通知した時、クッキーはa8へ渡るのでしょうか?
上記のような流れのものをPHPで作って試してみましたが、ドメインが違うためクッキーは受け取れませんでした。
もちろん、同ドメインの場合では正常に受け取れます。
サイトが違っても、imgによる呼び出し先が、発行元と同じなため、受け取れるんじゃないかと思ったのですが…
何か特別な事をしているのか、私の勘違いなのか、お知恵を貸しください。
よろしくお願いいたします。
何が?
echo ereg_replace("[a-z]|[0-9]","",$message); これでアルファベットと記号を消そうと思うんですが、 ' とか " とか [ とか も消したいときはどんな風に表記したらいいんでしょうか。
>>156 例えばこんな感じ?
$message = preg_replace('/[0-9A-Za-z@!"#$%&,_=\|\{\}\[\]\(\)\x27\x2f\x3f\x5c\x60:;\.\*\+\-]/','',$message);
echo $message;
>>156 >>157 は個別に書いたけど、単純に数字〜英記号を一括削除するなら
$message = preg_replace('/[\x21-\x7e]/','',$message);
echo $message;
の方が簡単。
詳しくはPerl正規表現とそのエスケープ文字を調べること。
ereg系正規表現は日本語が混じると誤動作するし、mb_ereg系もイマイチ不安定で
パフォーマンスも低いので、文字コードに拘らないのであればperl互換正規表現
を使う方が何かと便利だと思うよ。
perl の正規表現はいろいろ調べてみましたがあんまり良いウェブサイトが見つかりませんでした。今度、本を探してみます。 ところで、 $old = array("a","b","c"); $new = array("<strong>a</strong>","。<strong>b</strong>","<strong>c</strong>"); $wrdst = str_replace($old,$new,$wrdbr); こんな感じで置換しているんですが、これを 「最初の10個だけ置換」 したいんですが、良い方法がないでしょうか。
preg_replace('/[a-c]/', '<strong>\\0</strong>', $str, 10)
>161 ありがとうございます!
配列の中身を 5の倍数の場合だけ<h1>を入れて返すにはどうしたらいいんでしょうか。 ifで5で割り切れるときだけどかいろいろ考えてみたんですが、いまいちうまくできません。
>>163 5の倍数の時だけあほになる方法は知ってるんだけどなあ…
答えが0か5の時はってことね
>>163 >ifで5で割り切れるときだけどかいろいろ考えてみたんですが
いやそれでok
% を知らない予感
mod を知らない予感
% は知ってまましたがmodは知らなかったっす。今から調べてみるっす!
170 :
nobodyさん :2008/07/31(木) 13:54:43 ID:F87Ghxji
文字コードのことで質問があるのですが 基本的にSJISで作ったフォームからはSJISで EUCで作ったフォームからはEUCで文字コードが 送られてきますよね。だけど送り手が意図的 に文字コードを変えて送ってきたりブラウザ が勝手に他の文字コードで送ってしまう場合が あるようなのですがその場合文字コードを 適切にスクリプト内部で使用したい文字コードに 変換する方法てどんなものが考えられるでしょうか。 またみなさんはどうやってますか?
>>170 mb_convert_encoding
iteteki ni okutte kuru you na yatsu ha mushi 諢丞峙逧?縺ォ騾√▲縺ヲ縺上k繧医≧縺ェ螂エ縺ッ辟。隕悶☆繧翫c濶ッ縺?縺倥c繧薙Χ縺√?シ縺仇ww
173 :
nobodyさん :2008/08/01(金) 01:13:57 ID:/2mMDjbG
レッツPHP!
ttp://php.s3.to/bbs/bbs7.php の「写メール掲示板」を使っているのですが、
借りているサーバーの関係でphp4からphp5にバージョンアップしたら、
写真をパソコンで表示させるページ(mailbbs.php)でエラーが出てしまい、閲覧できなくなりました。
簡単に付け足す記述があれば、是非教えていただけないでしょうか?
よろしくお願いします。 m(_ _)m
そんなのはない
>>173 まずはその問題を作成者に問い合わせろ
または、エラーを自分で読んで解決しろ
176 :
nobodyさん :2008/08/01(金) 02:51:47 ID:3wWMq3LY
とある就職支援のPHP講座について調べていたのですが、 Web申込フォーム、管理画面(データベース連携、検索など)を作成可能なレベルを目指す という文章に対して (つд⊂)ゴシゴシ _, ._ (;゚ Д゚) とレスが返されていました。 これはどういうことなのでしょうか? 基本的なレベルだということですか?
177 :
nobodyさん :2008/08/01(金) 03:01:39 ID:cc3Gba10
まあ基本といえば基本ですな ヌルポ
>>176 すごい基本
できても自慢できないぐらい基本
そのレスの意図なんざ知ったことではないが
>>177 >>178 なるほど。
2週間の講座なので、基本なのはまあしょうがないですね。
どうもありがとうございました。
180 :
nobodyさん :2008/08/02(土) 17:48:44 ID:qYvqcpCs
レンタルサーバーにPHPで組んだ自作画像UPローダー を設置しようと思ってるのですが、画像をUPロードする 時に画像に関する情報(画像の説明、名前など) をログファイルに同時に書き込む仕様になっているんです。 とりあえずテストでは問題なく動いてるのですが もしスクリプトがなんらかの理由で途中で止まってしまったり した場合、画像だけUPロードされてしまって ログファイルには書き込みされない(または逆も考えられる) ことになってしまいますよね。 こういう事態に陥らないためにはどうしたらいいでしょうか?
両方オッケーだなと判断したら保存&書き込む
182 :
nobodyさん :2008/08/02(土) 18:16:17 ID:QOTyBDTF
そんなこと考えないで、プログラム書いて 不具合がでるかどうか確かめろ。 まずはそっちだな
183 :
nobodyさん :2008/08/02(土) 18:41:09 ID:qYvqcpCs
>>181 >>182 ご返事ありがとうございます。
とりあえず不都合はまだないのですが
タイムアウト(レンタルサーバーだと30秒)
の問題もあるので結構悩んでます;;
184 :
nobodyさん :2008/08/03(日) 01:05:38 ID:a0x+ZsCK
186 :
nobodyさん :2008/08/03(日) 01:25:55 ID:tLdg0T4F
mkdirやunlinkなんかのファイルシステム関数で 渡すパスは自動でエスケープされるようだけど これは実際どういう文字がエスケープされるんでしょうか? escapeshellcmdと同じ?マニュアルに特に書いてないで分かりません。
エスケープされるって何を根拠に?
188 :
184 :2008/08/03(日) 01:52:39 ID:a0x+ZsCK
189 :
184 :2008/08/03(日) 02:02:51 ID:a0x+ZsCK
PDTなんていらない
191 :
184 :2008/08/03(日) 02:09:54 ID:a0x+ZsCK
>>190 そうですか…
では
>>188 に書いてあるように実行できなかったんでしょうか?
違うサイトを見てしまうと挫折してしまう気がして
よろしくお願いします
そもそも、XAMPP(ry 単純に一つ一つインストールしたほうが早くて確実だと思うけど。
ほんとXAMPPは弊害招きまくりだな
194 :
nobodyさん :2008/08/03(日) 07:55:45 ID:T3jYftlq
静岡の有名なよしのりお爺さんみたいに、IDかえまくり二十四時間打ちまくり
195 :
nobodyさん :2008/08/03(日) 10:31:52 ID:9C4HZHI8
ubuntu使うとLAMPインストール楽だよ
196 :
nobodyさん :2008/08/03(日) 18:50:36 ID:RMhtfFUN
XAMPPは使いたくない
宗教上の理由で
死んだじぃちゃんの遺言で
199 :
nobodyさん :2008/08/04(月) 02:38:05 ID:LmctVFYq
ダサさ加減で
PHP5でGDを使ってEXIFが入っているjpegをリサイズするときにEXIFを保ったままにする方法はありますか?
201 :
nobodyさん :2008/08/07(木) 01:15:21 ID:ASRrNjKq
すいません。ちょっと教えてください。 スレ違いかもしれませんが、PHPの呼び出しをしたいので、こちらで質問させていただきます。 サーバーのcronでサーバー内のPHPを毎分実行する時は、 */1 * * * * /usr/local/bin/php /home/サーバー会社名/public_html/ドメイン名/△△.php なのですが、 同じように毎分他サーバーのPHPファイルを指定する時はの記述を教えてください。 よろしくお願いします。
無理
203 :
nobodyさん :2008/08/07(木) 02:51:36 ID:GqYvn9Ij
質問です php5を使って、XMLの内容を並び替える方法を教えてください。
>>201 HTTP経由で他サーバーのPHPスクリプトを呼び出すPHPスクリプトをcronする
206 :
201 :2008/08/07(木) 12:39:10 ID:???
レスありがとうございます。 PHPスクリプトをcronすることにしました。 ありがとうございました。
普通にcronでwgetとか
初心者なんですけど 独習PHP山田 祥寛 まずこれやればいいですか? 自分のwebサーバーでphp使ったサイトとか作れるようになりたいです
まずマニュアルに目を通す
じゃ諦める
入門系のサイトに目を通してみたらどうか 検索すりゃ役に立つサイトから立たないサイトまでわんさか出る マニュアルも早いうちから目を通せ 本やサイトは主観で書いてある記事だから誤解もある
213 :
nobodyさん :2008/08/21(木) 18:25:36 ID:CIze4FXP
MySQLのデータベースからデータを取り出そうとしてます データベースはUTF8で作成しています select文を実行する前に、 $sql = "SET NAMES utf8"; mysql_query($sql); を実行してデータを取り出しましたが、日本語文字は『utf8』なのですが、 半角英数字は全部『ASCII』になっています なぜでしょうか?
ASCII だから
>>215 そんな感じ
文法や基本的な命令語を覚えれば後は使いたい関数やクラスを都度調べればいい
使う機会の多いものは自然に身についていくから
一通りのことが出来るようになった後に効率や最適化を考えればいい
あくまで趣味の一環として習得する場合だけどな
>>213 ASCIIしかないなら保存形式が何であれASCII
utf8と判断する材料がないからな
217 :
nobodyさん :2008/08/21(木) 23:55:32 ID:2yWxB/YG
PHPってばかが使う言語だろ?
釣られちゃダメだ釣られちゃダメだ釣られちゃダメだ!
ちなみにphpの本買ったけど書いてることが意味不明すぎてもう読むのやめたよww そこらへんから完成品見つけてきてそれ改造してる方がよほど身につくと思う
おれも買った本はリファレンスくらいだな ごちゃごちゃ解説読むの面倒だから辞書のように使ってた それでもバージョン変われば役に立たんから直ぐにマニュアル見ることになるっと 完成品やサンプルソースを読んで動きを理解できるようになればいいな パターンを覚えていけば応用が利いてくる そのうち別パターンを自分で書けるようなるんじゃね?
222 :
213 :2008/08/25(月) 20:42:58 ID:???
>>214 >>216 ご返答ありがとうございます。
phpファイルはUTF8で保存して、metaタグでもUTF8を指定しています。
そういうことでは無いんでしょうか?
>>222 違う
phpのscript_encodingとかmeta(HTMLタグかよ)は関係ない
asciiはあくまでascii
>>222 大雑把かつ乱暴に言うと
半角英数と一部の記号はどのエンコード方法だろうと内部での表現方法が同じ
だから半角英数だけだと区別のつけようがないしつける必要もない
UTFとかeucとかは、日本語とかはいってくるときだけ
xamppでwebサーバー作るならphp使うのが一番簡単ですかね? pealもつかえるようですが
何を持って簡単としてるのか分からん
余計にインストールとかしないですむという意味で
xamppは開発用で、そのためにセキュリティゆるゆるだから まともに公開しようと思うと一から一づつ入れるより設定面倒だよ 設定に詳しくない限り止めておけ
入手する手段、パッケージの違い、適切なコンフィグ、文字コード等の環境依存要素の調整、など 全部すっとばしても構わないと思うならxamppで良いかと。
条件を言えばそのPHPを探してきてもらえる スレがあったら誘導お願いします
自分で探せアホ
>>229 サーバの構築関連は、どのようにして知識を得るのがいいんですかね。
やっぱり書籍ですか?
ネットは断片的になりがちなので本がいいよね。 で、仮想マシンや引退したボロPCあたりで環境作っていじり倒す
本なんて著者によって偏るし古いし訂正も効かないしノウハウもTipsも無いぞ。 それでも良ければご自由に。
>>234 じゃぁ、どんな風に勉強していけばいいですか?
>>233 が言っているようにネットだと情報がかなり断片的で、
しかも、本と同じでネットで情報公開している人によって偏ってたり、訂正もされないまま放置されていたりするわけなんだけど。
糞ブログでたまにある詳しくはこちらとか言って別のアドレス貼り付けるだけのやる気のない馬鹿は死んでしまえ。
ブログだけは世の中から消滅して欲しい
検索の邪魔なだけだ。中途半端なことばかりしやがって。
>>235 確かにネットも本と同じで書き手次第だが
本と違うのは書き手の数
より多くの情報を知ることで信頼出来る情報や誤解を判断出来る
(本では数読むには金がががががが)
それに基本はオープンソースなのだから、公式のドキュメントもネットにある、
ある程度の認識が身についたら、公式を押さえることを忘れるな
そして糞ブログ滅べ(特に半端な日記系)
昨日VistaにApache2.2とPHP5をいれ、
DocumentRootにphpinfo関数が書かれたindex.phpファイルを置き
PHPの情報をブラウザで表示させるところまで成功しました。
次にPOSTの勉強のために以下のform.htmlファイルをつくり
<html><head>
<title>テキスト送信のテスト</title>
<META http-equiv="Content-Type" content="text/html;
charset=Shift_JIS"></head>
<body bgcolor="#FFFFFF" text="#000000">
<font size="4">テキスト送信のテスト</font>
<form name="form1" method="post" action="view.php">
名前:<br>
<input type="text" name="onamae"><br>
<input type="submit" value="送信">
</form>
</body>
</html>
以下の内容のview.phpと一緒にDocumetRootにつっこんで
<html><head>
<title>PHPによるテキスト送信・受信・表示</title></head>
<body>
<?php
print $_POST["onamae"];
?>
</body>
</html>
ブラウザで
http://localhost/form.htmlを表示させ名前を入力し送信ボタンを押したのですが IEの"WEBページが見つかりません"のHTTP404エラーが出ます。
ネットで調べて色々php.ini、httpd.confの設定を書き換えてやっているのですが解決しません。。
どこの設定を直せばいいのでしょうか。お助けください。
>>242 直接view.php呼び出しても404エラーが出ます。
設置場所はDocumentRootに指定してあるC:\Apache2.2\htdocsの中に
form.htmlとview.php二つつっこんでます。
action指定については間違ってないと思うのですが。。
>>242 htmlとphpが同じ場所にあって、htmlしか呼び出せないってのは変
(header関数でどこかに飛ばしてない限り)
htmlとphpを削除して、ブラウザで両方404になるか見てから、もう一度設置してみて
view.php.html view.php.txt 大丈夫そうなんだけど、こういう事例も多いからいちおう。
246 :
242 :2008/08/29(金) 16:21:02 ID:???
245さんの言うとおりview.php.txtになってました^^; phpファイルに変更したらちゃんと呼び出せました。 どうも皆さんすいません。
これはひどい
248 :
nobodyさん :2008/08/30(土) 01:23:15 ID:xhTnmRsd
内容: ランダムテキストを使い「random.php」に例えば10個のリンク先を設定し、 ページの上中下で <?php require "random.php"; ?>で呼び出して使いたいんですが ページの広告全てが同じものが表示されてしまいます。 ランダムテキストをcgiで作り、SHTMLファイルで呼び出してた時には すべてきちんと違う広告がランダムに表示されてました・・。 1っのrandom.phpできちんとページ内の広告がバラバラに出るにはどうすればいいでしょうか?
249 :
248 :2008/08/30(土) 01:23:35 ID:???
ちなみにrandom.phpは検索で拾ったソースです。 ↓ <?php // hitには相対確率を入れる。完全にランダムにするなら全部"1"にする // rtxtには、テキストを入れる。改行はしないようにする // テキストを増やしたりする場合は、"[ ]"の数字が0から順になるようにする $hit[0] = 1; $rtxt[0] = '<a href="...">1</a>'; $hit[1] = 1; $rtxt[1] = '<a href="...">2</a>'; $hit[2] = 1; $rtxt[2] = ''<a href="...">3</a>'; $length = count($hit) - 1; for($i=0; $i<=$length; $i++) { $m += $hit[$i]; } srand( (double)microtime()*1000000 ); $n = round(rand(1,$m) ); for($i=0; $i<=$length; $i++) { $x = $y; $y += $hit[$i]; if($x<$n && $n<=$y) $ad = $rtxt[$i]; } print("$ad"); ?> よろしくお願いします。
やってみたけどランダムで出るよ一応
>>249 別の方法として
簡単にやりたければshuffleで配列($rtxt)をシャッフルしてarray_shiftで配列の先頭を取り出せばいい
array_shiftで取ると配列は1つ減るから2回目、3回目で重複することはない(同セッション内)
252 :
250 :2008/08/30(土) 04:09:13 ID:???
もしかして (double)microtime()*1000000 が同じ値をシードに与えてんじゃないの?
253 :
235 :2008/08/31(日) 18:33:17 ID:???
遅レスすみません。
>>240 レスありがとうございます。
ネット上は断片化された情報が多くて、取捨選択が難しい上に、
あっちの情報とそっちの情報での差異が出る理由が明確に分からなくて悩ましいです。
それを調べるってことが、公式ドキュメントを読めっていうということなんですかね。
技術情報を読める程度には英語勉強しろってところですね。
板違いですんませんでした。
SQLから取り出したデータをテーブルに表示させる際にhtmlタグを無効にしたいのですが、どうしたら良いでしょうか。 今のままだと例えば<b>文字</b>で登録されているデータは太字で表示されてしまいます。 SQLはpostgresです。 現在のコード↓ $passmd5 = md5('$pass'); $sql = htmlspecialchars("SELECT * FROM table1 INNER JOIN table2 ON table1.id=teble2.id WHERE table1.id='$id' AND table1.pwd='$passmd5';"); $rs = pg_query($conn, $sql); $rows = pg_num_rows($rs); if($rows==0){ print("IDかパスワードが正しくありません。<br />"); print('<a href="#" onclick="history.back(); return false;">戻る</a>'); exit; } print("<table border=\"1\">"); print("<tr><td>ID</td><td>パスワード</td><td>項目1</td><td>項目2</td><td>項目3</td></tr>"); while($row = pg_fetch_array($rs)) { print("<tr>"); print("<td>".$row["id"]."</td>"); print("<td>".$row["pwd"]."</td>"); print("<td>".$row["koumoku1"]."</td>"); print("<td>".$row["koumoku2"]."</td>"); print("<td>".$row["koumoku3"]."</td>"); print("</tr>"); } print("</table>");
htmlspecialchars
>>255 htmlspecialcharsを使うんだろうなとは思うんですけれど、何処につけたら良いんでしょうか。
print〜〜htmlspecialchars($row["koumoku1"].)〜〜 だな 出力の直前にやるのがいい それ以前は加工する可能性があるからな
258 :
254 :2008/09/12(金) 16:18:13 ID:???
で〜き〜た〜!!!! 本当にありがとうございました!!
259 :
nobodyさん :2008/09/14(日) 09:44:04 ID:B7I6GMpn
プログラムじゃない質問で恐縮なのですが、質問させていただきます。 phpを勉強するのに何をしたら「俺すげぇ進化したぁ」と感じたかを教えてください。
楽して身に付けようなんて甘い考えが通用しないことを実感したときかな
PHPとか言語は関係ないが、再帰的アルゴリズムがバシッとはまると、俺すげえって思うw
フレームワークを作った時かな 車輪の〜って言われるだろうが、利用するかはともかく仕組みを考えて実装することに意味がある と、言いつつ愛用してるが・・・
263 :
nobodyさん :2008/09/14(日) 21:23:06 ID:jIYlcJD1
phpでもなんでもそうだけど、本の書いてあること が理解できるようになったとき。 あとショッピングカートとかブログとかその辺 のアプリができたとき。
264 :
nobodyさん :2008/09/14(日) 22:46:57 ID:B7I6GMpn
>>260 ,261,262,263
観念的で曖昧な質問に答えてくださってありがとうございます。
ちょっと(いや、かなり)質問の仕方が悪かったかもしれません。
「コレを頑張ったら結果をより早く導出できるようになった」という体験を伺ったのです。
「頭打ち状態からブレイクスルーした」という体験はありませんでしょうか?
>>262 さんのレスを参考に「フレームワーク 車輪の」でググってみました。
「車輪の再発明」ということですね。
自分でもそういうことをしてしまっている可能性があるので参考になりました。
ありがとうございます。
その段階だと・・・ひたすら作ってひたすら無駄な労力にorzするのが一番さ
イヒ体験ってことか メール送信でPHPが標準でsendmailしか使わんことに気付いた時 大量に送信するにはオーバーヘッドがウザいからSMTP送信をしたいのに出来ない・・・ 仕方なくpopenで実装って時にSMTPっつうプロトコルの仕組みを知ってて良かった〜ってことはあった
しかし、みんな頑張り過ぎw
誤爆、失礼><
効率の良いプログラミングをしようと思ったらLL言語使いだろうと 中の仕組みを知っていたほうが良いのは当然だな。 ある程度理解していればプロトコルの詳細はRFC斜め読みでなんとかなる。
270 :
nobodyさん :2008/09/17(水) 12:48:50 ID:JTQWTwl/
理解したつもりの関数とか1日で忘れてしまう substrとか これなんだっけ ってなる
それはヤバイな
学校の勉強はノートに書いて覚えていくけど プログラミングの勉強となると紙のノートじゃなくPCに依存して勉強したくなるよね でもメモソフトと紙のノートには雲泥の差の自由度があるから勉強のためのメモとしてはあまり利用出来ないよね
プログラミングの勉強ってどんなことしてんの
プログラミングの勉強ってひたすらソース書いてナンボっしょ
275 :
Noone :2008/09/17(水) 16:59:26 ID:???
276 :
nobodyさん :2008/09/18(木) 00:02:52 ID:X0thX7wZ
あげ
277 :
nobodyさん :2008/09/18(木) 07:48:56 ID:eOfu22hG
レンタルサーバでPHPの勉強中です。 ファイルのアップロードをしているんですが、php.iniやhttpd.confが直接いじれなくて .htaccessに php_value post_max_size 100M php_value upload_max_filesize 100M php_value memory_limit 100M と書いてそれぞれの値を変更しています。 問題は、これらの値がページをリロードする度にサーバのデフォルト値である post_max_size 32M upload_max_filesize 32M memory_limit 90M になったり、 post_max_size 100M upload_max_filesize 100M memory_limit 100M になったりすることです。 こういった現象を経験された方いらっしゃいませんか? 各値の確認は、 ini_get()関数で確認しています。
共用サーバーはリソースも共用です。
279 :
nobodyさん :2008/09/18(木) 09:48:54 ID:eOfu22hG
>>278 レンタルサーバが、リソースが不足している場合.htaccessが有効にならないような設定がされているということでしょうか?
リソースが共有されてるのはいいが関係はないな プロセスが別なのにPARDIRのディレクティブが上書きされるなんて聞いたことがない
if(!isset($_GET['aaa']) || !isset($_GET['bbb'])) これの真ん中の||とissetの前の!はどういう意味?
|| は OR と同じ、ちなみに && は AND と同じ「かつ」「または」ってヤツだな ! は反転を意味する。 issetは「初期化されていればtrue」で調べたいことは「定義されていない場合」だからfalseとなるところを!で反転して評価してるんだな
なるほど。 !は反転するということなんですね。
反転ではなく否定な
if(!isset($_GET['aaa'])) { // 値がセットされてなければecho echo ''; } こういうことですよね?
もうちょっと基礎から学習したほうがいいと思うよ
! の解釈はそれで合ってるけど(まぬあるの「論理演算子」のところを読もう) > // 値がセットされてなければ empty() と isset() の説明や比較例を見ると良いです。 ?aaa=&bbb=hoge というクエリが飛んできた場合、isset($_GET['aaa'])==TRUE。 言われてるように急がずにゆっくり取り組めばいいと思うよ。
> isset($_GET['aaa'])==TRUE isset($_GET['aaa'])がTRUEだと言いたいんだろうがその説明の仕方はだめだw
あっ、まずかったですか。 言いたかったことはその通りなので、「isset($_GET['aaa']) は TRUE を返す」に訂正します。
age
292 :
nobodyさん :2008/09/18(木) 14:42:09 ID:eOfu22hG
>>280 レンタルサーバの会社に問い合わせたところ詳しくは教えてもらえませんでしたが
>>277 で書いたような負荷がかかることはことはしないでくれとのことでした。
根本的な解決はできませんでしたが、こういった現象もあるってことで・・・
しかし、今度はどうやって高負荷時は.htaccessを無視するようなことができるのか
そっちに興味がわいてきました。
Apacheの設定にそういうことができるようなオプションがあるのかな?
単に違う設定の鯖をロードバランスしてるだけとか
すいません... 基礎を勉強したいと思います
珍しく伸びてるな
そりゃあ鯖のリミッタを外したら怒られるにきまっているだろ
>>292 だから、
>>278 って書いたでしょ。
興味を持つのは良い事だけど、
実験したければ、自鯖立ててやってね。
こんにちわ。 サーバー側が php4 → php5 にしますよ と言ってきました。 バグってどれくらい出るものでしょうか。 移行された人いらっしゃいますか?
バグっていうか対応度合いの問題だろ そんなんアプリによってまちまちとしか言えん ていうか手元で移行検証くらいしようよ
300 :
nobodyさん :2008/09/21(日) 15:55:59 ID:G8wZRX1E
すいません、知っている方がいたら教えてください。 strip_tags()を使用してコメントタグだけを残したい場合はどうしたらよいでしょうか? $html = strip_tags($html, "<!---->"); という書き方だとコメントタグも削除されてしまいます。
質問というかアドバイスをください。 プログラミング経験は無いわけではなくC,C++でマルコフ連鎖モンテカルロ法 の実験などを大学の研究でしたりもしているのですが、最近なんとなく PHPのようなウェブアプリを簡単に作れる言語に興味があります。 が何を作ったらいいかわかりません。 自作で、実用レベルまで比較的に簡単に作れるもの、 というとどういうものがあるでしょうか。お願いいたします。
掲示板でも作ってみたら? まぁ何にするにせよ実用性とは程遠いだろうが気にするな
>>301 何かのウェブアプリを作りたいからphp学びたいんじゃないの?
せめて作りたいものの目標くらい無いとモチベーション続かないと思うんだけど。
なんか目的と手段が逆になってるような気がする。
>>301 有能な君にはphpbb並の国産高機能BBSをぜひ作ってほしい
>>301 隠れマルコフモデルを応用して、
形態素解析でインターネット上の情報サンプル集積でもやってみてくれ
>>300 マニュアルに書いてあるぞ、無理ってな
strip_tagsの前後でHTMLコメントの置き換えて逃げるしかないだろうな
誤字った 誤:strip_tagsの前後でHTMLコメントの置き換えて逃げるしかないだろうな 正:strip_tagsの前後でHTMLコメントを置き換えて逃げるしかないだろうな
308 :
nobodyさん :2008/09/21(日) 20:19:14 ID:uUB1weY6
すみません、ほんとに基本の質問だと思いますが .htmlファイルの中に <?php include('file.php?pass=123'); ?> としましたが、includeが実行されません 拡張子は常に.phpでなければいけないんでしょうか?前に試した出来たような気がしたんですが、、 また、上記のようなインクルードファイルに引数をつけた場合、 file.phpの中で$_GET['pass']としてを解釈することは出来るでしょうか? どなたかご回答お願いします
無理
>>308 俺の経験では出来ない。
file.phpの中に関数f_fileを書いて以下の様にすればいい。
<?php
include('file.php'); f_file('123');
?>
311 :
308 :2008/09/21(日) 20:49:34 ID:uUB1weY6
313 :
300 :2008/09/21(日) 22:14:17 ID:G8wZRX1E
>>306 ありがとうございます。
自分の持ってるPHP辞典には記載されてなかったでわかりませんでした。
なんとも中途半端な仕様ですね。
314 :
nobodyさん :2008/09/21(日) 22:33:44 ID:aDAFCUyF
しつもーん。
ttp://jp.php.net/manual/ja/functions.arguments.php > 注意: PHP 5以降、デフォルトで値はリファレンス渡しとなります。
の、主語というか目的語というか、ナニのデフォルトが参照渡しになるんでしょか。
function alter($str){
$str = $str . '!';
}
$nya = 'nya';
alter($nya);
echo $nya;
は PHP 5.2.0-8+etch9~bpo31+1 (cli) では $strを 変更せずに nya が表示されました。
引数がデフォルトでリファレンスよ やってみれば分かるが&付けなくても参照元の値も変わるぜ 余談だが PHP4では 「&$arg=null」なんてデフォルト引数が使えないんだが、PHP5から問題なく通る 呼び出し時に引数指定したかどうかでスイッチしてんだろうなぁ
PHPで逆IP制限ってできる・・・? 変数$aに1が入ってる時だけ変数$bに入ってるIP以外からのアクセスがあった場合にifコマンド使って、 他の内容を表示するの。
IP見て比較すれば普通にできるんでない?
320 :
318 :2008/09/22(月) 01:10:00 ID:???
if ( !strcmp ( $ip_address, $list_ip ) ) これ使っていけるかな・・・・・・?
321 :
318 :2008/09/22(月) 01:10:58 ID:???
>>319 それなぜか思いつかなかった。トンクス。
322 :
318 :2008/09/22(月) 02:51:53 ID:???
txtファイルから文字列読み込んだときに改行まで読み込まれて比較ができない。 どうすればよいですか?
改行文字を除いてから比較すれば?
324 :
318 :2008/09/22(月) 03:15:17 ID:???
>>323 どうもうまくいかなかった.........
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$str = "$ip";
$len = strlen($str);
$handle = fopen('ip.txt','r');
$contents = fread( $handle, $len );
fclose( $handle );
echo $contents."<br />\n";
if($ip==$contents){
echo "成功";
}
else{
echo "失敗";
}
?>
ipアドレスの文字数分引っ張り出して比較することで回避できた。
ip.txtに入ってるIPの方が今アクセスしてる人のIPより長かったらどうすんの?
326 :
318 :2008/09/22(月) 03:24:26 ID:???
>>325 したら絶対IP違うからエラーでていいんでない?
327 :
318 :2008/09/22(月) 03:27:42 ID:???
一時的にip.txtの中に入ってる一番最初のIPの人以外見せたくないものを作るんだ。 処理が終われば解除されるようなかんじで。
212.134.32.14 と 212.134.32.143
PerlのNet-CIDRを移植したら?
331 :
nobodyさん :2008/09/22(月) 15:10:26 ID:EKIEGJ69
phpでカート作成のHP教えて
333 :
nobodyさん :2008/09/22(月) 15:19:02 ID:EKIEGJ69
ありがとう><;
ワラタ
>>331 ショッピングカートの基本はセッションを上手く扱うことだと思う
具体的なカート作成のサイトはなくてもセッションに関する記事は多いから、そこから学べば良いかと
どうせ学習目的とかでしょ?
336 :
nobodyさん :2008/09/23(火) 01:10:46 ID:KzC+qHTk
>>312 ありがとうございます! 助かりました!
337 :
nobodyさん :2008/09/23(火) 12:55:10 ID:BK/ZFWc8
ちょっとまてよ、
>>331 はPHPを使ってカートを作るHPというのを教えて欲しいんじゃないか?
さあ?
>>318 は日本語の勉強から始めないと意図が伝わりにくいと思うが
まず何が目的で特定IP以外からのアクセスを制限したいかが不透明
内容からするに何らかの処理をしている期間は別の接続者を拒否したいって意味のようだが
その処理ってのが何度もリクエストを受けて完了するもだとしたら
---
アクセスがある
↓
閲覧者IPのデータを確認する─(IP記録なし)→閲覧者IPを記録し結果表示
↓<(IP記録がある)
IP比較─(一致)→結果表示
└(不一致)→拒否
---
こんな感じでコード書けばいいだろ
記録IPをいつ削除するかは知らんけど、この処理書くどこで詰まってるの?
もし、一回のリクエストの結果表示までにすべて処理が終わってしまうようなものだったら
ファイルロックとかの方法でも調べれれ。IPを比較する意味ない
あとどうでもいいけど改行の削除は置換を使えよ
echoで括弧を付けるのはダサい
echoはカッコ付けなくてもエェ子やで
PHPなんて久しぶりに書いたから忘れてたわw えーこと聞いた
fopenを使ってURLを開くとき 複数のURLに対して並列に処理を行いたいんだけど どういう風にやればいいですかね? 最悪参考になりそうなサイト教えてください。
fopenはブロックするから並列処理には向かない
>>346 ブロック?とはどういうことでしょうか?
並列処理に向いているfopenに代わる関数を
教えていただけるとありがたいです。
そんなのない
じゃあfopenでがんばるとして 並列処理を行うにはどうすればよいでしょうか? というかPHPでそんなことするなってことでしょうか?
>>345 ちなみにPHPではマルチスレッドはできない。
プロセスで何とかする。
なるほどプロセスを複数起動ですか とりあえずその方向でググったりしてなんとかしてみます ありがとうございました
$a=1; $b=9; $c=3; 「bが一番大きいです。」 と表示させたいのですが、maxだと数値しか返ってこないし・・・ 教えていただけると幸いです。
>>353 変数名を取得することは出来ないから値の管理方法を変えよう
出来ないなら諦めるしかないと思う
例: 連想配列
$var = array(
'a' => 1,
'b' => 9,
'c' => 3,
);
ありがとうございます!
いいてことよ
ちょっと疑問に思ったんだけど、 連想配列の場合、 $var = array( 'a' => 1, 'b' => 9, 'c' => 3, 'd' => 9, ); この場合、どうなるんだろ?
何がどうなるんだろなのかわからないけどこういうこと? $var = array('a'=>1, 'b'=>9, 'c'=>3, 'd'=>9); $keys = array_keys($var, max($var)); var_dump($keys);
>>358 この出力結果ってb dってなるのかな?
お前は何を言ってるんだ
361 :
テスト :2008/09/25(木) 23:34:41 ID:???
てす
362 :
あ :2008/09/25(木) 23:39:24 ID:???
てすと
363 :
nobodyさん :2008/09/27(土) 20:36:51 ID:Zle5Z5JO
return文と返り値がよく分からないんですが PHPのマニュアルを見てもさっぱりです どなたかreturn文が詳しく書いてあるサイト知っていたら教えてください
>>363 returnについてなんてマニュアル以上のことが書いてあるサイトはないと思うぞ
何が分からなくて、何が知りたいんだ?言ってくれれば答えるが
function hoge() {
$a = 'a';
return $a;
}
$huga = hoge();
この場合、$hugaには 「ああ゛っでるっ…!!たまみるくでるっ!! でっでるうっブリジットのこくまろミルクぅ」 が入ります
371 :
nobodyさん :2008/09/28(日) 21:34:07 ID:+UcDtbz0
PHPの動作確認のページが Not Found The requested URL /phpinfo.php was not found on this server. Apache/2.0.63 (Win32) PHP/5.2.6 Server at localhost Port 80 と出てしまいます。どなたか教えていただけませんか?
マルチ乙
>>371 「/phpinfo.phpが無い」って書いてあるじゃないか。
これ以上何を教えろというのか
マンモス本2冊買った。1回一通り読んだけど、インストールからわけわからん。 なにをDLしたらいいのかさっぱりぜよ・・・。
それはプログラミング以外に問題がありそうだが・・・
376 :
nobodyさん :2008/09/29(月) 22:54:33 ID:ex4B3ZuI
PHPの確認動作で、phpinfo.php.txtとアドレスに表示されたまま、 画面には<? phpinfo(); ?> と出てしまいます。 明らかに間違いですが、何がおかしいと思いますか? どなたか教えてください。
誰か、華麗に答えてやってくれ。華麗にだぞ?
>>376 拡張子txtがPHPのファイルとして定義されていないから。
381 :
nobodyさん :2008/10/01(水) 05:38:30 ID:ggjV1Mvy
require_once 'DB.php'; してるから
383 :
nobodyさん :2008/10/01(水) 09:00:47 ID:12eBxrbJ
mb_ereg_match
できました! ありがとうございます。 もうひとつ合わせて質問なのですが、 完全に一致するものを、$a == "アメリカ"として 部分的に一致するのを、mb_ereg_match("[日本]",$a)として、 それぞれ処理をしようとしています。 else ifでつなげたほうがいいのですか? 別のifとして分けたほうがいいですか? それとも、どっちでもいいですか?
>>385 分けるかどうかはやりたいことによって違うからなんともいえないけど、
今回の場合は分けなくていいでしょ。
分けちゃうと一回アメリカと完全一致したものをもう一回日本が含まれてるか
判定することになるから余計な処理になる。
なるほどー! では、どんどんつなげていくことにしますね。 よく判る説明で、助かりました。ありがとうございます!
すみません、参照先を見たけど、書き方がよくわかりませんでした。 $aに入る文字列は数十文字くらいの短いもので、それを見ています。 早さはそんなに変わらないと思うので、このままで大丈夫ですよね?
390 :
nobodyさん :2008/10/01(水) 22:32:30 ID:HCEY5R1b
質問させて頂きます。 基礎からのPHPorやさしいPHPを買おうか迷ってるのですが、 基礎からのPHPはアプリが動作しないと聞きました。 自分は、アプリの有無よりも文法やクラス(?)、データベースの基礎を学びたい と思っているのですが、そのような場合はアプリの動作は気にしなくてもよいでしょうか? その他の面(参考書としての面)では良いと聞くので。 書籍スレでの質問はナンセンスだと感じたのでこちらでさせて頂きました。 ご教授願います。
動作しないわけないだろ
マジレスすると(ry
オライリーの初めてのPHP+mysqlがいいと思います。 もしくは実践マスターか。 基礎からのPHPorやさしいPHPは意味がないと思います。 特に基礎からのPHPはアプリが動作しませんでした。 びっくりです。 これは捨てました。 アプリを改造していくといろいろスキルがあがってくるので、 ただ本見てもおもしろくないと思いますし。 アプリが動くやつがいいと思います。 では
394 :
nobodyさん :2008/10/02(木) 10:20:57 ID:Qa3+G5H3
あるphpで、別のphpを呼び出すのに、こうやって書いています。
<?php include('ini.php'); ?>
この、ini.phpを、別のサーバにおいて呼び出したいのですが、
<?php include('
http://別のサーバ/ディレクトリ名/ini.php '); ?>
みたいにやっても、うまくいきません。
どこでつまづいていて、どうすればいいのか、教えてください。
> どこでつまづいていて
基礎的な理解からつまづいてる
http://...をinclude = webサーバ経由でinclude
= ini.phpの「実行結果」をinclude
ini.phpの「内容」をincludeしたいなら、ftp経由にするとか、
ini.phpをincludeしたい内容の文字列を返すものにするとか。
396 :
nobodyさん :2008/10/02(木) 10:59:48 ID:Qa3+G5H3
ありがとうございます。もうちょっと勉強してみます。
うまくいかないといってもパースエラーが出るのか空文字が返ってくるのか接続できないとWarningが返ってくるのか によって全く違う。 こういうのが「うまくいかない」しか書かない心理って何なの?
考えるのすら面倒なんでしょ
399 :
nobodyさん :2008/10/02(木) 20:57:18 ID:JC9hPbTs
>>393 ありがとうございます。オライリーですか、参考にしてみます。
にしても、やさしいPHPのレビューってないですね。
あと基礎PHPとかはもう古いのかな‥
400 :
nobodyさん :2008/10/02(木) 21:31:32 ID:PvYZxYkH
変数のスコープについての質問です。 mona.php <?php $a = 1; include("giko.php"); include("fusa.php"); ?> giko.php <?php $b = 2+$a; ?> ってあったときに$aがincludeされたファイル内でも利用だというのはわかったのですが giko.phpの$bはmona.phpやfusa.phpで見れるのでしょうか? ユーザー定義の関数の予定はないです。
100回includeのページを読め
402 :
nobodyさん :2008/10/02(木) 21:55:19 ID:PvYZxYkH
>>401 スコープの方を必死に検索かけてました
includeの方で調べればよかったんですね
ありがとうございます
403 :
nobodyさん :2008/10/06(月) 07:28:33 ID:eMKnyKHT
>PEAR インストールのアップデートを行うには、
http://pear.php.net/go-pear をブラウザで表示してその出力をローカルファイル
> go-pear.php に保存します。そして次のコマンドを Windows のコマンドプロンプトで実行してください。
405 :
403 :2008/10/06(月) 07:56:08 ID:eMKnyKHT
レスありがとうです 多分その上の行らへんでつまずいていると思います >PHP をダウンロードしインストールが完了したら、 >バッチファイルを実行します。 というのはダブルクリックだけでいいんでしょうか? するとコマンドプロンプトが出てくるだけですが >インストールしたフォルダへのパスを >PATH 環境変数に追加します。 手動で追加する > (スタート > コントロールパネル > システム > 環境変数) >以上で、Windows のコマンドプロンプトから pear コマンドを使い PEAR パッケージマネージャを実行できるようになります。 pealパッケージとは PHPをインストールした時点で使用できるわけではないと思うので 多分ここでつまずいてます よろしくおねがいします
バッチファイルの方はやらなくていいよ go-pearの方保存して実行すればおk
407 :
403 :2008/10/06(月) 08:13:05 ID:eMKnyKHT
ありがとうございます
確認させてください
go-pear.phpというファイルを作ってそこに
http://pear.php.net/go-pearのソースをコピペ そのあと保存先はC:\phpで
コマンドプロンプトで php go-pear.php
を実行するんですよね?
実行すると『内部コマンドや外部コマンド バッチファイルなどと認識されませんでした』
と表示されます
C:\PHP\PHP-pear.phpを実行しても
エディタが起動するだけでした
よろしくお願いします
phpの実行ファイルがある場所に移動してから実行すべし
> 実行すると『内部コマンドや外部コマンド バッチファイルなどと認識されませんでした』 C:\Documents and Settings\username> で実行してるので php.exe が見つからないとかそういうオチなのかな。
410 :
403 :2008/10/06(月) 08:38:03 ID:eMKnyKHT
>>408-409 その通りです。。。
もう少しコマンドプロンプトの使い方勉強してきます
今から学校なので ありがとうございました
411 :
nobodyさん :2008/10/07(火) 10:08:44 ID:rx4j8OHY
PDT + xDebugはここで大丈夫かなぁ? どっちもインスコ、php.iniを書き換えるがうまくいかない。 下のように、extensionだと、phpinfo()にxDebugの項目が現れるけど、 extension=php_xdebug-2.0.3-5.2.5.dll 下のようにzend_extension_tsの指定ではうまくいかない。 [xdebug] zend_extension_ts = c:\php\ext\php_xdebug-2.0.3-5.2.5.dll DebugBuildはnoで、ThreadSaftyはenabledだから、後者の書き方の筈なのだが。 で、まぁ前者で行くとして、問題は、[xdebug]の中に書いた設定が全然反映されない...orz xdebug.remote_enable=true とかやっても、phpinfo()で見ると、offになってる。 他の設定も同じ。 なので、eclipseでブレークポイントで止まってくれない...orz 誰かお助けを〜
zend_extension_tsじゃないとダメよん
413 :
nobodyさん :2008/10/07(火) 12:35:01 ID:rx4j8OHY
>> 412 どうもありがとうございます〜。
414 :
nobodyさん :2008/10/07(火) 13:15:45 ID:2lCZsXeT
PHPではサーブレットやmod_*、あるいはrailsなどのWebアプリのように URIにコントローラやアクションを含めるような設計ってできるんでしょうか。 PHPのインスコ状況によるのかもしれませんが、どうも情報見つかりません。
コントローラーからビューに変数を渡したいのですが、 コントローラーで$this->set('test', 10);と書くと exception 'Zend_Controller_Action_Exception' with message 'Method "set" does not exist and was not trapped in __call()' 〜 とエラーがでてしまいます。 setを使うのに宣言か何かが必要かと思い、調べたのですが何処を見てもsetを使えばできるとしか書いていません。 コントローラーで$test;や$test=3;はエラーが出なく、エラー文を見てもsetに原因がある気がするのですが、何が原因なのでしょうか?
>>415 フレームワークのこと知らないので適当だけど、
メッセージを見るとsetが未定義で、call(多分ビルトインの)で
トラップ(多分、未定義のメソッドが呼ばれたときに適当なメソッドを割り当てる)もできないと言ってる。
多分$thisはControllerクラスのことだと思うので(多分ばっかですんまそ)
要するにControllerクラスにsetが定義されてないんじゃないかと思います。
クラス定義やメソッド一覧するメソッドがあると思うので、確認してみては?
ちなみに今気づいたんですが、フレームワークを使ってると
>>414 の質問の答えはYesでしょうか?
>>414 「?name=value」が嫌ならmod_rewrite(Apache)で出来る
>>415 コントローラにsetがないってことじゃないか?
$thisじゃなくてビューのオブジェクトのsetを呼べばいいような気がする
ZendFWは使ったことないが、普通はそうだと思うぞ
>>415 もしかしてキャメルケースのアクションで引っかかってない?
419 :
415 :2008/10/07(火) 14:44:42 ID:???
>>415 ご指摘どおり、thisはコントローラーでsetがありませんでしたので、
中身のないsetを作ってみたところエラーは出なくなりましたが、変数の受け渡しはうまくいきませんでした(空なので当たり前ですね)
これでエラーそのもの原因は分かったので次は変数が受け渡せるように頑張ります。
>>417 確かにコントローラーに無いのでthisだと自分で処理を書くか、何処かからコピーしてこないといけないようです。
何処かからコピーしてくるんならそれを使えよって話なので、まずビューからそれらしいのがないか探して見ます。
>>418 キャメルケースが何なのか分からないのでぐぐってみましたが、命名規則(camelCaps?)の事でしょうか。
とりあえず命名規則はチェックしましたが大丈夫でした。
すまん先走ってた。俺が自分修正してるZFの不具合かと思った。 メソッド書いてないからメソッド無いと言われたっていう話ですか。(´Д`;)
421 :
416 :2008/10/07(火) 15:26:57 ID:???
>>415 今、どんなかなと思って近所でZendの本(緑のやつ)見てきました。
それで思ったんですが、set(value,value)って
Controllerクラスじゃなくレジスタクラス(?)のメソッドじゃないかな?
コントローラで
require "Zend::Registry" <-これ正確じゃないです。これ的な名前。
regist = new Zend::Registry(); #レジスタオブジェクト
regist.set('test', 10);
じゃないかと思います。
ただ、これはアプリ全体で共有したい変数を記憶しておくクラスということなので
このメソッドで即ビューに値が渡るかは分かりません。
Controllerクラスには$this->setBody(value)的なメソッド群がある模様。
しかし、フレームワークでの制作をコピペ等でこなすのは逆にけっこうな大冒険なのでは・・・
422 :
416 :2008/10/07(火) 15:32:59 ID:???
>>417 どもです。それ自分もやったことあります(CGIでw)
Apacheモジュールとして動作してるなら他といっしょかなと思ったのですが
経験者の方が耳にしたことないってことは、
少なくとも基本機能ではないってことですもんね。
参考になりました!
423 :
414 :2008/10/07(火) 15:34:14 ID:???
↑間違えた。414です。
424 :
403 :2008/10/09(木) 04:27:43 ID:???
あれからやってみたのですが
>>408-409 さんの言ったとおりに
C:\>php\go-pear.phpを実行してみたのですが
go-pear.phpのエディタが出てきただけでした
それで完了されているとは思えないのですが
どこが間違っているのでしょうか?
よろしくお願いします
425 :
403 :2008/10/09(木) 04:52:41 ID:Sz+W15yD
追記 自分が持っている本ではgo-pear.batをコマンドプロンプトで実行すると いくつかの質問が出てきて 最後にPHP.iniにパスを通す動作が出てくるようなのですが それらしき質問もでません よろしくお願いします
ドキュメントルートにアップしてブラウザからアクセスしてみ phpが動いてるか確認してな
427 :
403 :2008/10/09(木) 05:21:50 ID:Sz+W15yD
だめだこりゃ 先に基礎的な知識を身に付けてからのほうがいいと思うよ
430 :
403 :2008/10/09(木) 05:30:32 ID:Sz+W15yD
>>428 さん
そういう意味だったんですか
表示されました
go-pear.phpをapacheの中に入れたら
>>429 さん
そのことは十分理解しております
ここで聞いてたときも何度も言われました
そのため基礎的な本を買ってこの様です
頑張りたいと思うのでよろしくお願いします
431 :
403 :2008/10/09(木) 05:42:21 ID:Sz+W15yD
432 :
403 :2008/10/10(金) 15:39:02 ID:6TTacjje
どなたかよろしくお願いします php.iniを見てもパスが通っている気配がないです コマンドプロンプトを使用してもエディタしか起動しない…
どこまでやって何が分からないん? ブラウザでgo-pear.phpにアクセス出来たならその画面から操作するわけだが?
434 :
403 :2008/10/10(金) 17:16:06 ID:/lY+1YLG
>>433 さん
おお そんなことだったんですか
今やってみました
ですが最後のページの
http://index.php/ が開けれないんですが
pearが導入されたことを確認する方法ってありますか?
またphp.iniにパスが通ってないようなのですが
勝手に書き込まれるわけではないのでしょうか?
よろしくお願いします
>
http://index.php/ そりゃムリだろ
最初にgo-pear.phpにアクセスした際に環境設定するじゃん
そこにインストールされる
パスが通ってるかどうかはphp.ini次第だから、そんなのあとあと
まずはファイルが配置されたかを確認
436 :
403 :2008/10/10(金) 21:45:20 ID:/lY+1YLG
>>435 さん
レスサンクス
PHPの中のpearというフォルダにはたくさんファイルが入っていました
さらにその中のpearというフォルダにも入っていました
インストールは完了したっぽいです
これで最後にphp.iniにinclude_path=".;C:\php\pear"と最後に書いたら完了でしょうか?
>頑張りたいと思うのでよろしくお願いします どの辺が頑張ってんだ。
画伯まだやってんのかw
この調子じゃ、この先も質問連発だね。
440 :
403 :2008/10/11(土) 07:52:03 ID:IbH29Qlb
>>437-439 とりあえず環境設定でいつもつまずくので
環境設定だけ完了したいんでよろしくおねがいします
頑張りたいと思ってんだろ? 頑張れ。
442 :
403 :2008/10/11(土) 10:04:59 ID:IbH29Qlb
試しにindex.phpをしてみたら こんなのが出ました Notice: Use of undefined constant PEAR_CONFIG_SYSCONFDIR - assumed 'PEAR_CONFIG_SYSCONFDIR' in C:\Program Files\Apache Group\Apache2\htdocs\PEAR\pearfrontendweb.php on line 72 Warning: Can not find config file, please specify the $pear_user_config variable in /index.php Error: the template directory (C:\php5\pear\data\PEAR_Frontend_Web\data\templates) is not a directory, or not readable. Make sure the 'data_dir' of your config file (C:\php5\pear\data) points to the correct location ! これはインストールされてないってことでしょうか?
通知: 未定義の一定の_PEAR_CONFIG SYSCONFDIR--Cで'PEAR_CONFIG_SYSCONFDIR'を仮定することの使用: 線72の上の\Program Files\アパッチGroup\Apache2\htdocs\PEAR\pearfrontendweb.php 警告: コンフィグがファイルであることを見つけることができないで、/index.phpの$洋梨_ユーザ_コンフィ グ変数を指定してください。 誤り: テンプレートディレクトリ(C: \php5\洋梨\データ\PEAR_Frontend_ウェブ\データ\テンプレート)は、ディレクトリ、または読み込み可能です。 あなたのコンフィグファイル(C: \php5\洋梨\データ)の'データ_dir'が正しい位置を示すのを確実にしてください! という意味だよ
444 :
nobodyさん :2008/10/11(土) 14:23:21 ID:8EU/X1Q4
教えてください。 print(mb_strwidth("※",'UTF-8')); これををUTF-8でテキストとして保存して実行すると答えが1とでます。 なんとか正しく判定させて2と出させたいのですが、どうすればいいのでしょうか。 ちなみにSJISやEUCで試してもやはり1でした。
正しくの根拠は?
446 :
nobodyさん :2008/10/11(土) 20:36:15 ID:mQFhChia
MagpieRSSでrssを取得したくて、
http://www.vipper.org/vip951655.txt.html のコードを動かしてみたんですが、
Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in /virtual/boon/public_html/2ch/rss.php on line 28
が帰ってきます。。
よかったら、原因を教えて下さい。。
ある文字列から <h1>と</h1> で囲まれた部分だけを抽出して配列に格納したいのですが、どのような方法があるでしょうか。
postしてprintしただけなのに ある日突然 "の前に\が入るようになってしまいました。これはなぜなのでしょうか?
451 :
403 :2008/10/12(日) 16:56:29 ID:5ipLjJfb
>>443 さん
レスサンクスです
翻訳サイトで僕も翻訳してましたw
Error: the template directory (C:\php5\pear\data\PEAR_Frontend_Web\data\templates) is not a directory, or not readable. Make sure the 'data_dir' of your config file (C:\php5\pear\data) points to the correct location !
という部分なのですが
C:\php5\pear\data\PEAR_Frontend_Web\data\templatesというファイルを作っても動きませんでした
これはパスを通せという注意だと思うのですが
なんのデータに何をすればいいのでしょうか?
Error: the template directory (C:\php5\pear\data\PEAR_Frontend_Web\data\templates) is not a directory, or not readable. Make sure the 'data_dir' of your config file (C:\php5\pear\data) points to the correct location ! ってことだよ
453 :
403 :2008/10/12(日) 17:36:26 ID:5ipLjJfb
>>450 magic_quote の設定をどう変更しても¥が出てしまいます。
>>456 onにしたりoffにしたりして試してみました。
apache再起動すれ
>>454 ゆとり的な回答もしておくね。
つ[stripslashes]
460 :
nobodyさん :2008/10/12(日) 22:42:57 ID:B6zhuvJO
apache再起動か。 なんでできないんだろうなと思った。 こういうところまで教えないといけないのか。
461 :
403 :2008/10/13(月) 03:01:56 ID:5FVzcFud
ttp://www.s-memo.net/blog/2006/12/pear.php を見て途中までインストールしたのですが
>試しにPEAR::HTTP_Downloadをインストールしてみましょう。
というとこでコマンドプロンプトを使ってダウンロードしようとしたら
最後の行で
No valid packages found
install failed
と出ました
これはC:\php\pearをコマンドプロンプトで実行したら
Usage: pear [options] command [command-options]
Type "pear help options" to list all options.
Type "pear help " to get the help for the specified command.
Commands:
という部分は出こなかったことと関係しているのでしょうか?
上のサイトにも書いてあったのですが
pear.batというファイルが出てきたらインストールできたということ
と書いてあったのでインストールは出来ていると思います
なんにせよ インストールは完了したことを確認できました
みなさんありがとうございます
http://www.pachiweb.com/futaba.txt これはとある画像掲示板の画像削除時のスクリプトなんですが
これは1行ずつ削除該当ナンバーか照らしあわしつつ$lineに格納していって
該当ナンバーならその行は空白にすると言うスクリプトでいいのでしょうか?
fputs($fp, implode('', $line));
この部分のimplodeは要素間に改行を入れた後、
書き込みということですか?
465 :
nobodyさん :2008/10/13(月) 09:31:48 ID:5FVzcFud
apacheを利用しているんですが localhostでPHPの状態を見れるようにしたのですが Notice: Use of undefined constant PEAR_CONFIG_SYSCONFDIR - assumed 'PEAR_CONFIG_SYSCONFDIR' in C:\Program Files\Apache Group\Apache2\htdocs\PEAR\pearfrontendweb.php on line 72 Warning: Can not find config file, please specify the $pear_user_config variable in /index.php Error: the template directory (C:\php5\pear\data\PEAR_Frontend_Web\data\templates) is not a directory, or not readable. Make sure the 'data_dir' of your config file (C:\php5\pear\data) points to the correct location ! と出てきました pearfrontendweb.phpの問題の行には // find other config file location $default_config_dirs = array( substr(dirname(__FILE__), 0, strrpos(dirname(__FILE__), DIRECTORY_SEPARATOR)), // strip eg PEAR from .../example/PEAR(/pearfrontendweb.php) dirname($_SERVER['SCRIPT_FILENAME']), PEAR_CONFIG_SYSCONFDIR, と出てきました これはpearをダウンロードした場所が悪かったのでしょうか? この場合はC:\Program Files\Apache Group\Apache2\htdocs\pearにダウンロードしなければならなかったのでしょうか? あと気になったのがC:\php5\pear\data\PEAR_Frontend_Web\data\templatesという部分です php5\とありますがphp5はありません PHPという名前に変えたので これが原因でしょうか?
466 :
463 :2008/10/13(月) 09:38:47 ID:???
か、解説ありがとうございます、 人の癖がついたスクリプトをいじるのはほんと大変ですね。 ほんとに改造できるか心配になってきました。 プロフィールとかは気にしないで下さいw それですごい基本的な事で申し訳ないんですが $log = fopen('access.log','w'); fopen関数のファイルの内容をクリアする(w)などのモードの場合、 ログ内容をこの例だと$logに格納した後ログ消去するのでしょうか?
>>465 自分でテンプレートディレクトリ設定すりゃええんちゃうん?
468 :
465 :2008/10/13(月) 12:18:31 ID:5FVzcFud
テンプレートディレクトリってのはtempletsというディレクトリをどう設定したらいいのですか?
知るかよ何のスクリプト使ってるかも書いてないのに
470 :
465 :2008/10/13(月) 12:55:01 ID:5FVzcFud
>>469 すいません
スクリプト自体がどれか分からないんですが
エディタならPHPエディタです
すいません 用語をよく知らないので
じゃ調べろよ・・・
もうPEARのエラーメッセージはおなかいっぱい 冷静になって環境見直せよ、画伯
473 :
465 :2008/10/13(月) 13:20:54 ID:5FVzcFud
画伯って何?
475 :
nobodyさん :2008/10/13(月) 13:41:35 ID:CGfh2V74
>>901 ディレクトリについて少し質問
C:\php\pear\DBだった場合 (DBはフォルダ)
C:\php\pearでもいいんでしょうか?
476 :
nobodyさん :2008/10/13(月) 13:43:52 ID:CGfh2V74
書くとこ間違えました 申し訳ないです
477 :
463 :2008/10/13(月) 19:28:39 ID:???
俺と間違えられてた?
478 :
nobodyさん :2008/10/14(火) 00:30:55 ID:z+viMTEc
PHP4てまだ使ってる人いるんでしょうか
479 :
KYOO ◆1C9DnWzrKw :2008/10/14(火) 00:34:16 ID:IZm37X9Z
>>478 サポートは終了しても現行システムを移行させるまでは使うしかない
新たに始めるならPHP5だろう
dev版PHP6を見てると・・・また互換性のないUPがたんまり・・・
>>480 メジャーバージョン違いはもう別言語と思ったほうがいいよな。マイナーアップでさえry
482 :
465 :2008/10/14(火) 08:40:33 ID:OazE8u18
どなたか
>>467 をphp触って一ヶ月の俺に分かりやすく詳しく教えて下さい
>>482 PEAR_Frontend_Webの設定でテンプレートパスを正しく変更する
これでFA
FAかな…。
>>442 と同じことを
>>465 で訊いてしまう感覚とか、
C:\php\pear(
>>436 等) or C:\php5\pear のどっちに PEAR を入れたのか本人もよくわかってないとか、
目先の対症療法では解決しない根深いものを感じるよ。
意識の低さが問題を深くしているんですね、この1ヶ月は無駄だったと、わかります
487 :
nobodyさん :2008/10/14(火) 12:30:14 ID:PhS+pU3S
超初心者的な質問ですいません phpを使ったwebサイト作成の勉強をしているのですが C:\Users\ユーザー名\Documents\サンプルサイトの中でwebサイトを作っているのですが C:\xamppの中にあるhtdocs内にあるphpを読み込もうとしても上手くいきません。 phpの初心者なんで概念自体があやふやなので変な質問でしたらごめんなさい<(._.)>
apache 動かしてるのにドキュメントルートの外でサイト作らなくてもいいと思うのよ。
Cドライブ開くの面倒ならショートカット作ればいいしな
初心者はxamppやめれ
491 :
nobodyさん :2008/10/15(水) 15:36:31 ID:jArJnvnC
平分のIDとmd5で暗号化したパスワードをtxtファイルにして それを.htaccess下のフォルダに入れました。 メインのPHPでそのファイルを読み取り認証 その後、ID.datファイルを外部から読込んで IDごとに違うページを表示させているのですが セキュリティ的に問題などあるでしょうか? 補足 ID.datも.htaccess下に入れてあります。 ちょっとした顧客の納期表示に使おうと思っています。
htaccess下って何だよ
493 :
nobodyさん :2008/10/15(水) 15:42:31 ID:jArJnvnC
>>492 すいません
.htaccess .htpasswordファイルを置いてアクセス制限かけたフォルダです。
>>492 「.htaccessでアクセス制限しているディレクトリ配下」くらい予測しろ
>>491 .htaccessでdeny from allしてるなら直リン出来ないからまぁ安全じゃないか?
出来ればルート外に置くのがベストだが
495 :
nobodyさん :2008/10/15(水) 15:56:52 ID:jArJnvnC
わかりづらい文章で申し訳ありません
>>494 ありがとうございました。
ルート内にあったのでルート外に置くようにしてみます。
496 :
nobodyさん :2008/10/15(水) 17:58:29 ID:9ioAzBde
PEARってセーフモードの鯖にはインストールできないんですか?
インストールはできる。 使えるかどうかはともかく。
>>499 いやそれなりに使うだろ
開発でFTPとかNFSが面倒な時
開発用、テスト用の鯖作るの面倒な時もか
うん、そんなものをWebProgのWの字も知らない初心者が使うってのがそもそもおかしいだろ、な?
それもそうか じゃぁ普通にレン鯖か しかしレン鯖だとセーフモードやらパーミッションやら意識することが多いよな ・・・そうかそれも勉強か!
ApacheとPHPとMySQLをインストールすればいいと思うよ。
んだんだ
phpinfo()などではき出される全項目の意味を説明してあるサイトなどを、ご存じな方 教えて頂けませんでしょうか。
個別に調べればいいんでないの? コアの部分はPHPまぬある必見 PECLの分まで纏めたサイトなんてある意味マゾだ
507 :
nobodyさん :2008/10/18(土) 00:42:37 ID:VyIaaBn5
496です。
>>497 有難うございます。
只今、PHPと共にモバイルサイト構築を勉強中で、
Net_UserAgent_Mobileがどんな具合なのか使ってみたかったんですが
自分の力では無料サーバのセーフモード下にPEARを
インストールすることが出来ませんでした…orz
・無料サーバ
・php5.25
・セーフモード下
では、やはり不可能なのでしょうか。
どなたかご教授頂ければ幸いです。
PEARをインストール・・・ ぶっちゃけ依存PEARも含めてアップロードしてパスを通せば使える (共有ライブラリに依存しないなら) インストーラでなければならないわけじゃない(依存が面倒なだけ)
サーバでPHP実行中に、クライアントのブラウザを閉じた若しくは別ページに移動した等の場合、 サーバ側の処理はどうなりますか?
あの〜、すみません。 メール送信フォームのフォーム入力の所についてなんですけど 間違ってたら警告出して 間違ってなければ確認画面に飛ばすように書きたいんですけど 飛ばすと入力情報が消えてしまいます。 if (isset($_POST['oshibotan'])){ if (isset($_POST['namae']=="")){ echo "名前書いて<br>"; } }else{ $url = "kakunin.php"; header("Location:$url"); } } なんとなく「そりゃ飛ばないわな」って思うんですが わからない〜( p_q)
513 :
511 :2008/10/20(月) 14:03:24 ID:???
ああ・・その前にフォー文がわからなくなった・・・・ 上の通り書いてもエラー(「名前書いて」)が出ない・・すぐに飛んでしまう( p_q)
まずissetの使い方が違う issetはその変数がセットされているかどうか その中に==とか入れてる時点で間違ってる 次にecho "名前書いて<br>"; と飛ばす処理は同階層なので 今の書き方だとどちらかしか発生しない あとLocationの使い方がその書き方でも飛ばしてくれるブラウザは多いが 書き方は間違っている 正しくはhttpとかスキーマからはじめないとだめ
あ、すまん 次にecho "名前書いて<br>"; と飛ばす処理は同階層なので 今の書き方だとどちらかしか発生しない これ忘れて1個}が多いので読み間違った まぁどちらにせよどちらかしか発生しないが・・・
nullの時と同じ扱いだから別に間違っちゃいない思う
>>516 どう見ても間違いだろうが
if ($_POST['namae']==""){
これなら使っているWebアプリ等は多々あるが
if (isset($_POST['namae']=="")){
これはまず無い
というかこういう書き方出来るのかと思って
さっき試したらParse error出たし
ああそもそも括弧付いてなかったのね
519 :
511 :2008/10/20(月) 18:00:40 ID:???
>>514 、
>>516 あんがと!!
自分で色々やってたらなんか出来た。
「なんか出来た」だからちゃんとわかってないかも
明日もまた質問するかもしれないけど
ありがとね!
issetはstrlenにしたよ。
よくわかってないのに見よう見まねで使ってる。
たぶんまだバグだらけ。
strlen($_POST['namae']=="") にしたのかな。
質問させてください。 webサイトの作成に役立てようと、phpを勉強しはじめました。 入門書を一通り読んだのですが、webサイトにどう役立てるかわかりません。 テンプレート的なものをイメージしていました。 次に具体的に何を学べばよいのでしょうか?
phpをちゃんと理解してから次行ってくれ
523 :
511 :2008/10/21(火) 11:17:14 ID:???
なぜに strlen($_POST['namae']=="") w
525 :
nobodyさん :2008/10/21(火) 13:43:59 ID:5M3hbzoP
やるなら if (isset($_POST['namae']) && strlen($_POST['namae']) == 0) { echo "名前書いて<br>"; } かな・・・
テキストファイルを書き換えたくてスクリプトを作ったのですが windows上では動作するのにレンタルスペースで動かすと ファイル削除、コピー、書き込みができません。どうしてですか?
windowsのレンタルスペースじゃないからじゃない?
質問させてください。 人生に役立てようと、女心を勉強しはじめました。 入門書を一通り読んだのですが、人生にどう役立てるかわかりません。 テンプレート的なものをイメージしていました。 次に具体的に何を学べばよいのでしょうか?
531 :
nobodyさん :2008/10/21(火) 16:50:07 ID:FLMyajbO
532 :
511 :2008/10/21(火) 17:39:59 ID:???
ちょっとPHPとはあまり関係ないんだけど 原因わかる人教えて テーブルタグ使ってて <table> <tr><td>ユーザID</td><td><input type="text" name="userid" maxlength="10" size=20></td> <tr><td>パスワード</td><td><input type="password" name="pswd" maxlength="10" size=20></td></tr> </table> ってやってるんだけど フォームの長さがサイズ指定しても変わってしまう。 input typeをpasswordにしてから。 これは直せないのかなぁ?
なんでそこだけダブルクオーテーションがないんだ コピペPGの悪例だな
よくみりゃ<tr>も閉じてないな
よくみた<tr>は閉じてない
・SQLインジェクションという言葉を知らない ・コメント欄を読まない ・問題の詳細についてググりすらしない ・未知の脆弱性に対して敏感でない ・精神的に幼稚である
php入門系/phpリファレンス系のサイトでサイト内コンテンツを一括ダウンロードできるようにしてある サイトはどこかにないですかね? 社内LAN環境で鯖を立ててphpを動かそうと思っていますが NETにつなげないため調べ物ができず困っています… サイトダウンローダー等も試してみたのですが CGIに対応しているダウンローダーが無くうまく落とせませんでした
543 :
nobodyさん :2008/10/22(水) 08:23:23 ID:P24H2Ub2
>>539 一通りの攻撃の手法と防御法は覚えたけど未知の脆弱性に対してどうすればいいか正直わからない。
この機会に教えてください。
544 :
511 :2008/10/22(水) 09:39:01 ID:???
""ってつけるのとつけないのはどっちがいいんでしょうか? コピペではないのですが、つけたりつけなかったりです。 CSS、今から調べてみます。 調べるのが遅いんですよね・・・効率悪い探し方をしているのかも。
546 :
511 :2008/10/22(水) 09:55:50 ID:???
わかりました。
547 :
511 :2008/10/22(水) 13:49:18 ID:???
DBからID、PWを取り出して認証するログインスクリプトなんですが 認証実行(ログインボタンを押した時)した際 DBからID、PWを全て取り出して 1つ1つ合っているかどうか検証するのですよね。 if($user==(DBから取り出したID) && $pswd==(DBから取り出したPW)){ $url = "index.php"; header("Location:$url"); }else{ echo "ちがうがな!"; } } こんな感じですよね? この(DBから取り出した・・)の部分にどう書けばいいのかわからなくて・・ いっぱいあるわけですよね 複数のID&PWを1つにまとめて出して確認する方法が良くわからない
>>547 どんだけ無駄な
DBならSQLのWHEREでIDとパスワードを照合しろよ
結果の行数が1か0かで判断出来るじゃん
先輩が最初そうやってるのを見た 意外と陥りやすい罠かもしれない
まじかよ・・・ DBを使ってる理由を問いたいくらいだ
551 :
547 :2008/10/22(水) 14:27:34 ID:???
なるほど、WHEREで照合ですか・・・
だいぶググってみましたが
よくわからないです。
入門サイト見ながらやってるんですが
>>548 ,549
のっけから間違っちゃってるってことでしょうか?
DBとPHPの入門書を各々一冊ちゃんと読んでからのほうがいいと思うよ
553 :
547 :2008/10/22(水) 14:40:12 ID:???
先輩にも「そういう質問が来るとは思わなかった」と言われました。 先輩2人は参考書も買わずに半日かからずに出来たそうです。 僕は2日かかってます。 自分でも何故こんなに理解力が無いのかと思うと嫌になります。 今日は帰りに入門書を買って帰ります。 ありがとうございました。
>>553 認証部分なんて30分もかからん、多分その先輩もそうだろう
理解力ではなくて基礎が足りん
PHPの文法やアルゴリズム、DBの基礎とSQL構文、知っておくべきことを知らないから時間がかかる
知った後は早いもんだ
556 :
553 :2008/10/22(水) 15:44:06 ID:???
ログインが出来ればハッシュ化してやり直すつもりですが とりあえずログインをやろうと思って DBに追加したIDとPWをちゃんと読み込めるかどうか試そうと思って。 それでずっとつまづいてます。 自分でもすぐ出来ると思ったんですが・・・ 今日中に終わらせると言ったもんだから今日中に終わらせないと
そしてSQLインジェクション可能なのをまた1つ生み出すと・・・
558 :
553 :2008/10/22(水) 16:03:03 ID:???
if ($_SERVER["REQUEST_METHOD"]=="POST"){ $user = $_POST['userid']; $pswd = $_POST['pswd']; if($user==$row['name'] && $pswd==$row['pass']){ $url = "index.php"; header("Location:$url"); }else{ echo $error; } この$row['name']ってところは配列ですよね。 ここに配列の中身全部出せばいいんじゃないかと思ってます。 「やさしいPHP」という本を見てるんですが、詳しくは載ってなくて
というかDBの用意はできてるの? mysql_connect()とかで接続できてるの? SQLの構文は知ってるの? 君がどこまで理解してるのかが全然わからないw AUTHとか使って簡単に済ませちゃえば?
560 :
553 :2008/10/22(水) 16:21:52 ID:???
DBにはアクセスできてます。 構文はスコシしか知らないと思います。 追加や一覧表示、削除は出来ました。
>>560 >>558 で$rowを事前に用意しようとするのが間違い
postのuseridとpswdでDBに対してSQL発行(SELECT文)して存在するかチェック
(
>>555 の点を注意するならハッシュ化したpswdで比較)
で、結果に応じて表示を行う
な?単純なものならこれだけだ
562 :
553 :2008/10/22(水) 17:27:48 ID:???
>>561 ありがとう、わかったようなわからないような
でもなんとなく・・・いや、とりあえずもう少し頑張ってみる。
またきます。
564 :
562 :2008/10/22(水) 19:58:59 ID:???
AmazonでMySQLとPHPの参考書 人気高いやつを注文したっす 金曜日には届きますけど、それまで教えて貰いたいです。 あの・・・もしよければソースそのまま どこかのアップローダにアップするので 訂正もしくは、ここは訂正すべき、という部分を指摘してもらえないでしょうか?
>>511 を見る限り、DBとの連携に手を出すにはまだ早い気がする。
この程度でも手出せるのがPHP
>>564 表面だけ取り繕っても大抵上手くいかないからやめとけ
568 :
nobodyさん :2008/10/22(水) 21:46:42 ID:Qg6SK/1U
初心者です。 <?php echo"<〜>" ?> <?php if(〜) { echo"<iframe src〜 />"; } ?> と、あって、3行目のecho(iframe)が表示される時1行目の <?php ?>を丸ごと消去したいのですが、どうしたらいいですか?
elseに書くか変数に入れりゃよかろ
570 :
564 :2008/10/23(木) 04:51:02 ID:???
そこ取り繕っても後が続かないんじゃないかな。 その後、たぶんセッション引き回すんだろうし。
>>570 $sql = "SELECT * FROM user_pwd WHERE user ='$user'and pass = '$pswd'";
$res = mysql_query($sql,$conn);
$resになにが入ってるか理解できてないと思う
$resにはDBのuser_pwdテーブルのuser列が$userで更にpass列が$pswdのオブジェクトが入ってる
言い換えると
$userと$pswdが一致してるレコードがあれば$resに格納
つまり君の言う認証はSQL文を発行した時点で完了してる
ま
>>561 さんが言ってるんだけどねw
>>573 おまいも理解してねぇのか
結果セットはレコードそのものじゃねぇ、発行結果のオブジェクトだ
あとこの場合のSELECTはCOUNTで行数数えるだけでいい
で、結果セットからnum_rowsして1か0かで判断
576 :
570 :2008/10/23(木) 09:37:43 ID:???
どうも。 今からやります。 できるかなあ。
577 :
570 :2008/10/23(木) 10:23:21 ID:???
ひとつずつ取得すればいいと言われたのですが $kekka="SELECT pass FROM user_pwd WHERE user=".$userid; if ($_SERVER["REQUEST_METHOD"]=="POST"){ if($kekka=$pswd){ echo "Okie."; } elseif($kekka!=$pswd){ echo "bad."; } else{ echo "noID."; } } こうですか・・??
>>577 ダァァーー理解してねぇ
$kekkaにはSQL文が入るのに、なぜ$pswdと比較出来る!
動作だけならこう
$uid // POSTからとったユーザIDとする
$passwd // POSTからとったパスワードとする
$sql = "SELECT COUNT(*) FROM tablename WHERE userid='$uid' AND passwd='$passwd'"
$res = mysql_query($sql);
list($nums) = mysql_fetch_assoc($res);
if ($nums == 0){
//NG
}else{
//OK
}
データベースどこ行ったんだよ。
581 :
577 :2008/10/23(木) 10:49:49 ID:???
$userid = $_POST['userid']; $pswd = $_POST['pswd']; $sql = "SELECT COUNT(*) FROM user_pwd WHERE user='$user' AND pass='$pswd'"; $res = mysql_query($sql); list($nums) = mysql_fetch_assoc($res); if ($_SERVER["REQUEST_METHOD"]=="POST"){ if($nums==0){ echo "bad"; }else{ echo "okie"; } } こうですか? 出来ないよーーーーーーーーーーーーーーーーーーーーわからない 焦る 軽いノイローゼ状態だー
>>570 を見た.結論からいうと
>>552 何も分かってないのに偶然うまく動くとかえって自分の首を絞めるよ.
>>570 のコードも addtest.php って本人が書いたわけじゃなくて
職場の既存コードのコピペじゃないの?
SQLインジェクション脆弱性あるよ.
>>578 $uid と $passwd をエスケープしないのは初心者にとって有害な例示だと思うよ.
@接続する。 ASQL文を作る。 ユーザーリクエストを含めるときはインジェクション対策のために専用エスケープを忘れずに。 B発行する。 C結果セットを受けとる。 Dループさせるなり取り出すなりして表示。 E接続を切る。
584 :
570 :2008/10/23(木) 10:55:53 ID:???
職場のではないですが、解説サイトのを少し見よう見まねしてます。 といってもSQL構文のところだけです。 他はナントナクはわかって書いてます。 「とりあえず動かしてミロ」とのことなので セキュリティの事は後に言われると思います。
>>579 そこからなのか・・・
>>580 そんなこと言ったら「担当替えろ」で終わりだ
そもそもモデル化してないのにゴチャゴチャやったら
>>581 みたいなことになる
まずは最低限の動作、そこから拡張しかないのだ、この場合
>>581 DBのオープンすらやってないってことでFA?
そのスクリプトには事前処理とかないわけ?
mysql_connectはどこかで使ってるか?(認証処理より前の段階で)
それと認証して一致するユーザーは1人だろうから if($nums==1){ //OK }else{ //NG } のほうがいいような。
先輩のチェックが入るんだから、 まずは動くところまで持っていくしかないな そこから先輩もツッコミや指導を予定してるんだろうし
>>585 モデル化とか関係ないし
とりあえずの動作も必要だが
それ以上にSQLインジェクションの事を考えさせる事の方が重要
589 :
581 :2008/10/23(木) 11:13:20 ID:???
>>588 考えさせる・対策させる大切さは重々わかっとるが、
さすがに手順を踏まないと
>>570 がハゲないか?
>>589 見た
WHEREのところで「user=」ってなってるけど、
user_pwdテーブルはIDとpassフィールドなんだよな?
じゃぁ「ID=」にしないと
4行目から10行目までは認証処理だから、 11行目のifの中に入れたほうがいい 理由は、今のままじゃ毎回SQL発行しちゃうから
593 :
589 :2008/10/23(木) 11:52:15 ID:???
今先輩が来て「こうすんだよ」と言って
ささっと解決しました。情けない。
たぶん「あらら、出来てないのね」と思われたと思います。
>>591 そう訂正されました。はい。
>>592 その通りでした。
そう訂正されました。
みなさん、ありがとうございます。
だけど、まだまだわかってないなぁ。
次はMD5化して登録と、ログインです。
これは出来そうな気がする・・・。
594 :
589 :2008/10/23(木) 13:06:38 ID:???
if ($_SERVER["REQUEST_METHOD"]=="POST"){ $userid = $_POST['userid']; $pswd = $_POST['pswd']; $pswd2= md5($pswd); $host = "localhost"; $conn = mysql_connect($host, "root", ""); $db_selected = mysql_select_db('webauth', $conn); $sql = "SELECT * FROM user_pwd WHERE name='".$userid."' AND pass='".$pswd2."'"; $res = mysql_query($sql); if(mysql_fetch_assoc($res)){ $url = "index.php"; header("Location:$url"); }else{ echo "エラー"; } } 一応のせときます。 結局こうしました。
お前な、まずココで聞く前に先輩に聞けよ。 2chで聞いてるなんてバレたら首にされかねんぞ。
596 :
594 :2008/10/23(木) 15:03:26 ID:???
それもそうですね・・・確かに。 家だけにしときます。 忠告ありがとうございます。
597 :
nobodyさん :2008/10/23(木) 15:56:27 ID:vhIkvqq/
でもさ。こんなのも教えられない先輩は間違いなく無能。 ここで聞くのもわるくない。 客先行く前にきちんと疑問点は解消しておけ。 出て行って大変だよ。
それは違くね。 「とりあえず自力でやってみろ、教えるのはそれからだ」ってことじゃない? 何でもほいほい教えちゃうのはよくない。
俺が先輩でも多分最初は突き放すな。検索すりゃ少なくとも動くもの作れるし、 作れないってことは検索力が欠けてるってことがわかるし。 ま、2chとか掲示板で聞いてたらぶん殴るがw
まったく基礎が無いように見えるが、 どうしてそんな職に就いたかねぇ・・・
>>600 そんなもんさ
俺の下についてる連中もやる気だけある素人だし
その方が変なクセとか勘違いとか腐ったプライドとかなくていいがの
602 :
nobodyさん :2008/10/23(木) 19:27:42 ID:vhIkvqq/
がんばってほしいな
それは同意だが頑張り方が間違ってる気もするけどな 都合が悪い意見は無視とかいい性格してるし
mysqlのインストールがうまくいかない・・・ verは5.0.5なんですけど、インストールが終わって設定もやって、最後のチェックで、必ず一番下の Apply security settingsでエラーになります 大学の研究でPHPはじめたのですが、環境そろえる段階でこけています。 どなたかお力をお貸しください
インストールされてね?プログラムからチェックしてみ それとなんでわざわざ古いの使うのか
606 :
nobodyさん :2008/10/23(木) 21:53:51 ID:LaxpC4NS
先輩方おねがいしマス。 掲示板 / 問い合わせフォーム / UPロダ / ショッピングカート PHPを独学で↑を0から作成できるレベルになりましたが、実際の PHPプログラマとして就職するには、次に何を作れたら良いでしょう? どれ位のレベルになれば、PHPプログラマとして雇ってもらえますか? ちなみに今は、本屋のバイト(23歳)です。
作った奴見せてみ
自動車メーカーに就職するのに、自動車が作れる必要はないと思います。 本当の勉強は就職してから始まるので、いまは面接のレベルを上げた方がいいと思います。
面接のレベルだけ上げても薄っぺらい人間ができあがるだけだと思うが
>>605 一度アンインスコしてから入れなおしましたが、必ず上記の項目でエラーが出ます
原因わからず・・・
verですが、研究室で使用しているのがこれなんで、使えとのことです
611 :
606 :2008/10/23(木) 22:10:01 ID:LaxpC4NS
知り合いに頼まれて問い合わせフォームを1万円でつくりました。 feiz−design.コム/inquiry.ピエチピ
>>606 ん、十分じゃね。本屋のバイトなら対人もある程度大丈夫だろうし。
技術的な部分は就職してからでいいし。自信もってGo。
>>611 見たけど、漏れなら雇わないかな。。
valueの値をクォーテーションで囲ってないのと、
メールアドレスバレバレ。。
これで30歳超えならアウトだが23歳なら全然おk
でもお金もらってんだぜ?
>>611 というか、ここに自分のつくったページの URL を掲載する時点で……
これで16歳女子高生ならおkだけど、23歳だと厳しいかも。 バカ専門学校出ててもこんなふうには作らない。 でも、こういうことは独学じゃわからないことだから、 まず就職した方がいいよ。2ちゃんでぐだぐだ言い合ってるより。
618 :
606 :2008/10/23(木) 22:39:41 ID:LaxpC4NS
>>613 『htmlspecialchars』でやれば上手くでしょうか・・・
『’』なしてもテスト送信できたのでスルーしてしまいました(汗
そんで、私はどーすれば・・・
今後の目標なんかを・・・
まぁ ここでいうのもなんだがPHP以外の事を勉強するのが一番だと思う
俺22だけどなんか凄い安心した
624 :
606さんへ :2008/10/24(金) 00:15:22 ID:wH/GxTYw
phpで作るのはもういいから。十分とはいわないけど。 基本はわかっていそう。 次はそうだな。サーバー立てて自分でUPしてみて。 もちろんここにさらす必要はないから。 でその作った掲示板とショッピングカートをのせる。 後HTML+CSSの練習かな? feiz−design.コム/inquiry.ピエチピ って自分で全部は作っていないんでしょう?
画伯に慰められるならもうおしまいだ
626 :
nobodyさん :2008/10/24(金) 01:01:51 ID:wH/GxTYw
すいません。 俺の責任でつね
PHP である文字列が正当な書式にのっとったメールアドレスかどうか判定するような関数はありますか?
>>627 無い
正規表現でチェックするのが一般的
>>628 やっぱりそうなのですね。ありがとうございました。
だが厳密に判定しようとするとえらいことになる。 うちでは@数えるだけ。
>>630 そうですね。ごく簡単に判定することにします。
CPAN の Email::Valid や Mail::CheckUser みたいなものが提供されているかと期待したのですが。
>>632 そんな実力あったらいいですけどねーっw
中見て置き換えるだけじゃん
じゃあお前がやれと
なんでだよwどんな必要性がw
そういうライブラリがあるかと思ったって話じゃないのか 移植すれば?とかアホかと
ライブラリならZFとかPEARとかに多分あるだろ
function f($text, $num) { if (mb_strlen($text) > $num) { $after = mb_substr($text, 0, num); return $after.'<略>'; } else { return $text; } } という,文字列が一定以上の長さならそこで切って、 語を付加する関数を作ろうとしたのですがうまくいきません なぜなのか分かる方いらっしゃいませんか?
num
642 :
nobodyさん :2008/10/24(金) 17:48:45 ID:45nbMWSd
$url = "
http://localhost/test.xml ";
$xml = simplexml_load_file($url);
var_dump($xml);
↑この結果が↓このようになります。
objet(SimpleXMLElement)#1 (2) { ["社員番号"]=> string(5) "00001" ["氏名"]=> string(7) "ABC DEF" }
社員番号を表示したいのですが
echo($xml->社員番号);
とやっても表示されませんでした。
XMLの要素名が日本語なのが問題なのでしょうか?
>>641 さ、さすがphp・・・
どうもありがとうございました
>>642 どうせソースの文字コードとXMLの文字コードが違うとかいうオチだろ
646 :
nobodyさん :2008/10/25(土) 09:29:46 ID:hQkPyR+6
社員番号の要素をIDにして $xml->IDだと表示されたので 要素名が日本語だとまずいのかなと思ったです。
そうか
fopenじゃだめなのか?
fopenで他鯖にアクセスできたっけ?
できなかったっけ?
httpラッパーが有効なら出来るよ レン鯖では無効にしてる場合も多いけど
file_get_contentsじゃだめなの?
file_get_contentsで他鯖にアクセスできたっけ?
できなかったっけ?
httpラッパーが有効なら出来るよ レン鯖では無効にしてる場合も多いけど
657 :
648 :2008/10/27(月) 13:18:28 ID:???
$fp = @fopen("http***********", "r"); でできるようです Anhttpdでローカルテストしてたんですが、実はAnhttpdだと上のような外部fopenが強制終了されてしまうというオチでした file_get_contentsも同じく さーてこまった
できるんならいいじゃん
anhttpd使わなきゃいいから困らない
自分で「AnHTTPd を捨てれば解決しそうです」って書いてるんだから 困ってるように見えない。 ところでよその鯖から取って来るときってあんまりファイルポインタの操作に 用事はないような。たいてい file_get_contents() な感じの用事じゃないのかな。
661 :
587 :2008/10/27(月) 15:48:44 ID:???
アパッチ2.2.10入れたもののサードパーティ製のphp4apache2.dllないとPHP4が動かない仕様らしくしかもそのサードパーティサイトが死んでて何もできなそうです PHP5入れてみます やりたいことは他鯖からとってきたHTMLデータから特定の部分を抽出して、置換して整形してから表示したいっていう感じです
今更PHP4使うこともない、最初からPHP5でGO
レンタ鯖かなんかが4なんだろ
そこはPHP4対応箇所と5対応箇所を確認すれば問題なさそう Zend1互換モード使えばクラス関係以外はPHP4として動作するしな あとHTMLを改変する場合コピーライト注意な、公開してると無断転記となる場合も・・・
php4にapache2.2になにが問題あるのかと思ったら難解だなこりゃ。 30分粘ったが投げた。
PHP5にて、以下のような何十行かの文字列が入った配列から>>を探しだし、 マッチしたらマッチしたのが後から何番目の配列か知りたいのですが何か良い方法はないでしょうか? >>はかならず配列の後から数えて数番目という位置にあり、前から順にマッチさせていくとすごく時間がかかってしまいます。 aaa bbb ccc ddd eee ff>>f ggg
>>666 配列の要素数を求めて、for で後ろから検索する。
str_replaceで全部まとめて変換すりゃいいんじゃないの?
669 :
666 :2008/10/27(月) 21:42:44 ID:???
035 0430 みたいな数桁の数字の、頭のゼロを一律に削除する方法はないでしょうか
(int)でキャストしてしまえ
PHPの入門書を読んでいて次のプログラムの「&」の意味がわかりません。 $mdb = &MDB2::factory($DSN); どなたか教えてください。
参照返しでぐぐれ
>>670 str_replace("^0+","",$str)
>>676 str_replaceで正規表現ですか、そうですか
ereg_replaceですよねもちろん
pregの方が良い
大抵はpregの方が速い
と言うか
>>671 のが一番速そうに思う
速さうんぬんの処理内容じゃないが・・・
"^0+" この正規表現の場合は多分eregの方が早い
sendmailの使い方が分からない… 大学の研究でPHP使うことになったんだが、俺プログラムなんてシタコトナイシ… この機能はPHPとアパッチ入れただけでは動かんとですか? なにがなんやら… 出来ましたら詳しく解説しているサイト、もしくは書籍を紹介してもらえると助かります
暇だからテストしてみた preg match :0.0012149810791016 ereg match :0.0011699199676514 preg replace :0.0017139911651611 ereg replace :0.0032238960266113 ltrim :0.00061607360839844 cast :0.00018191337585449 +=0 :3.2901763916016E-05
桁を合わせてくれw
(誰も指摘してないが、
>>670 は8進数だったりして)
見た感じキャストじゃね? PHPコアでも当たり前のように自動キャストしてるから、実装が最適化されてて速いのかな
684 名前:nobodyさん[sage] 投稿日:2008/10/30(木) 11:04:19 ID:???
桁を合わせてくれw
686 名前:nobodyさん[sage] 投稿日:2008/10/30(木) 16:17:42 ID:???
>>683 で、どれが早いの?
687 名前:nobodyさん[sage] 投稿日:2008/10/30(木) 16:48:27 ID:???
見た感じキャストじゃね?
PHPコアでも当たり前のように自動キャストしてるから、実装が最適化されてて速いのかな
php.iniのsmtpの設定をサービスプロバイダのSMTPに書き換えているのに Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in このエラーが出るのっておかしいですよね?PHPのインストールがまずいのでしょうか?
違うphp.ini読んでるんじゃね
あとはサーバを再起動してないとか(モジュール版
なんで684がだめなんだ
683のは1000回まわした時のデータ 1回の時はこんなんになった 正直な話どれを使おうが気にするレベルでも無い preg match :1.0013580322266E-05 ereg match :1.7166137695312E-05 preg replace :6.9141387939453E-06 ereg replace :1.4781951904297E-05 ltrim :4.0531158447266E-06 cast :3.0994415283203E-06 +=0 :3.0994415283203E-06
じゃあ気にせずこんな処理してみた。 $v = '0430'; $num = 0; $a = array_reverse(str_split($v)); for($i=0;isset($a[$i]);$i++)$num+=is_numeric($a[$i])?pow(10,$i)*$a[$i]:0; echo $num;
PHPで1日一回、毎日同じ時刻に処理をするってできるんでしょうか? 具体的には、1日一回、データベースにあるデータを取り出してメールを送信したいんですが……
くだ質スレのテンプレに載ってる
>>697 こう書くのが定石
for ( ;; ) {
if ( date( 'His' ) == '000000' ) mail( ... );
}
こらこら
複数行の変数内に現れる>と<の間に挟まれた文字列内にある"だけを全角に変える方法はないでしょうか 配列展開してからのforでの処理でもかまいません 例) たちつ>てとなに"ぬね<のはひふへほ ↓ たちつ>てとなに”ぬねのはひ<ふへほ PHP5.25
素直にDOM使えw
PHPでリダイレクトする際にRefererを指定する方法はありますか?
>>701 preg_replace('/(?<=>)(.*?)(?=<)/se', 'preg_replace("/\\"/", "”", "$1")', $str);
>>703 任意に指定するのは不可能。
Location の代わりに Refresh でジャンプさせれば、ブラウザによっては Referer が空になる。
706 :
703 :2008/11/01(土) 14:09:59 ID:???
>>705 回答くださり、ありがとうございます。
確認ですが、サイトBから以下のようにサイトCへリダイレクトした場合、
サイトCから見たリンク元はサイトBになるということですよね?
サイトA→サイトB→サイトC
707 :
701 :2008/11/01(土) 14:46:02 ID:???
>>705 ありがとうございます。うまくいきました。
神を見ました。来世までに解読できるようがんばります。
708 :
705 :2008/11/01(土) 18:38:19 ID:???
>>706 リダイレクトしても普通はリンクを踏んだページが Referer になる。
サイト B で Location を出した場合 → サイト C から見たリンク元はサイト A
サイト B で Refresh を出した場合 → 送信されない
サイト C から見たリンク元をサイト B にしたければ JavaScript を使うか、
もう一度リンクを踏んでもらうしかないと思う。
>>705 >preg_replace('/(?<=>)(.*?)(?=<)/se', 'preg_replace("/\\"/", "”", "$1")', $str)
当方もHTMLタグ内以外の"を全角かなんかに置換したくてこれ応用したいんですけど自分の場合、
$str = <a href=
http://aaa.html >宇宙"人</a><a href=
http://aaa.html >未来"人</a><a href=
http://aaa.html >超能力"者</a>;
みたく連続で並んでいるデータに対して置換を行いたいんです。
>>705 のままだとふたつめ以降の<a>タグの"が全部全角に置き換わっちゃうので試行錯誤してみたんですがうまくいきませんでした。
解決のすべはあるでしょうか?PHP 5.26です。
711 :
705 :2008/11/02(日) 16:38:15 ID:???
>>709 タグの間には <> が出てこないから、単純にこれでいいかも。
アサーション使わずに > < 込みで二番目の置換に渡しても結果は同じになるし、
二番目の置換は正規表現使わない方が高速だわ。
preg_replace('/>[^<>]*</se', 'str_replace("\\"", "”", "$0")', $str);
712 :
nobodyさん :2008/11/02(日) 17:50:57 ID:tL8xHBO4
すごいね 俺昔タグ内のname=""の中にさらに"があるアホデータの置換断念したことあるわ
713 :
nobodyさん :2008/11/02(日) 18:29:46 ID:6l/MEBbz
翔泳社の「独習PHP」読んでるんだけど 代数演算子の記述が変な気がする。 前置加算→ $i++ 後置加算→ ++$i 前置減算→ $i-- 後置減算→ --$i 前置と後置が逆になってるような・・・
記述が間違ってることに気付くことこそがその本の狙いなんだよ
そだうったのか!!!1!
716 :
nobodyさん :2008/11/03(月) 02:43:21 ID:q5+iesG+
PHP5以降でセッションデータをデータベースに入れて管理したいのですが、どのようにするのが王道なのでしょうか?? PEARのHTTP_Session と PEAR_DB を使う方法でしょうか?? 他にセオリー的なものがあれば教えて頂けると幸いです。
つマニュアル
関数多過ぎだろPHP どんだけぇ〜
低能乙
>>716 ここは素直に session_set_save_handler でいいんじゃない?
session_start を使った既存のコードを変更したくない場合はおすすめ。
マニュアルでは全く触れてないけど、書くときはロックに気を付けろ。
本来はセッションに限ったことじゃないんだけど、セッションはフレーム
ページとかで読み書きのタイミングが重なりやすいので、特に同時接続を
意識して書かないと再現しにくいバグに悩まされる。
>>716 自分でcookie発行して管理してもいいと思われ
722 :
nobodyさん :2008/11/05(水) 21:07:53 ID:5ZwaVGRj
name="upfile" を name="upfile[]" にしただけでWarning: htmlspecialchars() expects parameteが出たんだけど 解決方法を教えて下さい
配列のそれぞれの要素に対してエンティティ化するように変える
724 :
nobodyさん :2008/11/05(水) 22:36:27 ID:vFTAkKc1
Apacheのhttp.confで設定したSetEnvの値をPHPで取得するときの方法を教えてください apache_getenvはブラウザ経由で取れるのはわかったんですが、 コンソールで取得できないものでしょうか?
コンソールって?
>>723 配列って何?ってレベル
エンティティ化ってレベル
配列も知らんのか そりゃもう無理だ
プチ
729 :
724 :2008/11/05(水) 23:30:40 ID:???
>>725 Linuxなどのシェルで、
% php hoge.php
とか実行したときに取得できないのかな、と。
それにApacheがどう関係してんの?
731 :
724 :2008/11/05(水) 23:38:38 ID:???
Apacheのサブプロセスの環境変数はブラウザからアクセスしないとapache_getenv()が実行できないらしくて。 シェルから実行したときにApacheの環境変数を取得したいということです。
>>731 apache経由してないのにどうやって取得するんだよ
724「だからそれを聞いてるんだろう!!」
>>731 % su - apache
% env
cliとmod_phpの区別がついてないんだろうなぁ・・・
738 :
nobodyさん :2008/11/06(木) 12:35:47 ID:xueniZPL
$tinko=50; $unko=30; if($unko=30 && $tinko=50) { $tunko=100;} else { $youko=1;} $tinko=50 && $unko=30 ? $tunko=100:$youko=1;
フォームを使わずにファイルをアップデートする方法はありますか? どのあたりの勉強をすればよいか、キーワードだけでも教えてもらえませんか?
意味がわからんのだが・・・。 リンククリックだけでローカルのファイルをアップロードさせるっつー話なら無理。
http://php.birdlab.com/freephpscript007.html ここのスクリプトが使いたくて、書いてある通りにやってみたら
display(1); ?> … display(2); ?> … display(3); ?> … 設定ファイルがうまく書けていたら
このような結果になりました。
phpの埋め込みで失敗しているのか、私本人がよくわかってないのか、
鯖がCentos5 で Mysql のコードはutf8 だからmb_encodingとか
やってeucにしなきゃいけないのか、もう気絶しそうです。
>ここのスクリプトが使いたくて、書いてある通りにやってみたら >display(1); ?> … display(2); ?> … display(3); ?> … 設定ファイルがうまく書けていたら >このような結果になりました。 何を言っているのか良く分からん
>>743 配布サイトの説明文の通りにやってみた結果です。
いや日本語が良く分かりません。自分で読んでみてください
> 設定ファイルがうまく書けていたら これも結果の一部って、写す範囲広すぎだろう。ここは説明だぞ。 > <? $vote->display(1); ?> こんな風に書かれてるんだから、自分が short open tag を通す設定にしてるかどうかぐらい 把握してから気絶してほしい。
まさか説明文までプログラムに書いてたのかw んでもってshort_open_tagが有効にされてないせいで全文表示されてたとw
だからタイトルどおり、実にくだらんですゃ
749 :
nobodyさん :2008/11/08(土) 20:32:38 ID:f7jJ+9vB
-> って何ですか?
htmlコメントのなれの果て
マニュアルには 1-4-2. 携帯対応 携帯用のページを用意するには、option/ディレクトリ内のkt.php,ktchat.php,ktin.php,ktout.php,ktset.phpをindex.phpと同じ場所にアップロードします。 携帯用のトップページはkt.phpとなります。 携帯用の設定はktset.phpで行います。 ってあるけどこのあたりはちゃんとやってるのか?
一応 携帯用のページを用意するには、option/ディレクトリ内のkt.php,ktchat.php,ktin.php,ktout.php,ktset.phpをindex.phpと同じ場所にアップロードします。 ↑確実にやった 携帯用のトップページはkt.phpとなります。 ↑よくわからない 携帯用の設定はktset.phpで行います。 ↑設定画面を開いたら以下記述のとこだけ書き換えるみたいだったけどなにを書けばいいかわかんなかったお・・・ ## 設定項目 ここから↓ -------------------------------------------- # ## チャットルームからの戻り先URL(絶対パスまたは相対パスで指定) $BURL = "./kt.php"; ## 戻り先URLへのリンク文字列 $BMES = "戻る"; ## ROM表示行数 $ROMSL = 5; ## 設定項目 ここまで↑ -------------------------------------------- #
とりあえずふざけた語尾をやめてくれ
ごめん(;ω;)
>携帯用のトップページはkt.phpとなります。 がわからん時点でもうダメなんじゃないのか。 要するに携帯でアクセスするときはこっちじゃないとダメってことだろ。
>>753 滅茶苦茶詳しく書いてあるじゃねーかw
php以前に日本語の勉強しろよwwww
え、そうなの?でもkt.phpのほうにアクセスしても携帯用に表示されないんだが・・・ トップページを二つ作らなきゃ駄目なのか?
759 :
740 :2008/11/08(土) 23:30:32 ID:???
>>741 わかりにくくてすみません。
ブラウザ経由ではなく、サーバでPHPプログラムを実行しただけで、
他サーバの画像を落としたいのです。
現在、cronで自動実行したプログラムでRSSを取得していて、
そのなかの画像ファイルをローカルに保存したいです。
file_get_contents(URL)
ちなみにkt.phpにアクセスすると以下みたいに表示される Warning: include(set.php) [function.include]: failed to open stream: No such file or directory in /usr/local/www/htdocs/naritya/public_html/pbschat25/kt.php on line 11 Warning: include() [function.include]: Failed opening 'set.php' for inclusion (include_path='.:/usr/local/lib/php') in /usr/local/www/htdocs/naritya/public_html/pbschat25/kt.php on line 11
ファイルがないよ
というか
>>761 はとんでもないことをやらかしたって自覚はあるのだろうかw
どうでもいいがfusianasanは名前欄に入力してくれ
アッー!!! ウラルでとるがな・・・まぁいいや ファイルってなんぞ?
766 :
740 :2008/11/08(土) 23:53:08 ID:???
>>760 回答ありがとうございます。
色々調べて実装してみます!
>>765 kt.phpの11行目がエラー吐いてるから見てみろよ
>>765 お前本当にphp勉強してたのか? 基本が全然ダメっぽいが。
で、「set.phpが開けねーぞボケ」ってエラーなんだがset.phpはどこに置いたのさ。
パッケージ見る限りちゃんと入ってるから正常にアップロードできてりゃ問題ないはずなんだが。
設置スレに行くべきお客さんが間違ってここに来ただけのような。
勉強したって言っておけば誘導されなくて済むと思ったんだろう
ラーメンを食いたいのに間違って吉兆に行ったようなもんか
残りもん食わされんぞ、それw
773 :
765 :2008/11/09(日) 17:25:53 ID:???
いやいや、設置に関しては出来てんだよ。ただ携帯からアクセスすると変になるんだよ。 質問の仕方が悪かったかもしれん。すまん。 このチャットを携帯からも使用出来るようにしたいんだが、どうすればいいのだろうか・・・というのが聞きたかっただけで。 違うスレで質問した方がいいなら移動します
質問させてください。 SQLiteを使っていて、UNIQUEなフィールド"hoge"からある値のレコードを抽出しています。 $db = sqlite_open("hogehoge.sqlite"); $command = "SELECT * FROM articles WHERE hoge = 'ある値'"; $query = sqlite_query($db,$command); この時、ある値のレコードが存在する場合の処理と存在しない場合の処理を分けたいのですが、 どのように条件文を設定すればよいでしょうか? if($query){ }else{ } で分けようとしたのですが、うまくいきませんでした・・・
777 :
774 :2008/11/09(日) 17:57:16 ID:???
>>776 なんだかよくわからないんです、
常にNULLみたいで・・・
sqlite_fetch_allをした後に判断するしかないということでしょうか?
どうでもいい指摘だけどそこで$queryって変数名はおかしい $resultとかにしてよ$rowsとかにしてください
commandかぁ。懐かしい感じだ。 常にnullって値入れてないんじゃないのかw
780 :
778 :2008/11/09(日) 18:10:22 ID:???
ああ $queryに結果が入ってるのかと思ってた じゃあ$stmtとかかなあ
781 :
774 :2008/11/09(日) 18:39:25 ID:???
ごめんなさい。 動作確認したつもりだったんですが、ソースにバグがありました。 修正後にechoで中身を見てみたところ、 中身があるときには、 Resource id #148 ないときには何も表示されませんでした。 これは先ほどの if($query){ }else{ } で処理がわけられるということでしょうか?
is_null($query)でいいんじゃね?
783 :
774 :2008/11/09(日) 19:11:21 ID:???
なんだか混乱していて申し訳ないです。 中身があるときもないときも Resource id #148 のようなものが入っているみたいです。 その後のsqlite_fetch_allをした後なら空の配列ができるようですが、 空の配列かどうかを調べる関数はありますでしょうか?
784 :
774 :2008/11/09(日) 19:16:48 ID:???
自己レスすみません。 empty関数を使って場合わけできました。 結局、sqlite_fetch_allを行った後の返り値で行いました。 みなさんありがとうございました。
empty使うくらいなら変数そのままでいいだろw
786 :
774 :2008/11/09(日) 19:53:29 ID:???
>>785 そうだったんですか・・・
アホですみません
あとわざわざfetchしなくてもsqlite_queryの結果でいいじゃん
788 :
774 :2008/11/09(日) 20:05:13 ID:???
>>787 ごめんなさい
781では中身がないときは何も表示されないと書いたのですが、
基本的にはResource idとかいうのが入っていたみたいです。
空に見えたのはなにかのソースバグだったのかもしれません。
なんでJavaScriptじゃなくてわざわざPHPでやってるのかは置いといて 敬語使ってても「><」が入ると舐め腐ってるようにしか見えないのも置いといて 文字のエンコード確認しろ茄子
>>790 全然なめてなんかないんですが、
文字のエンコードですか??アップするファイルはSHIFT-JISです。
サーバはxrea使ってるのでわかりません。
&ie=UTF-8 これは何を意味してんの?
793 :
789 :2008/11/09(日) 21:38:23 ID:???
>>792 あそっか!
$txt=mb_convert_encoding($txt, "UTF-8", "auto");
を付け加えたら治りましたwありがとうございます
>>790 >敬語使ってても「><」が入ると舐め腐ってるようにしか見えないのも
同意します><
795 :
789 :2008/11/09(日) 22:01:55 ID:???
やっぱ何かうまくいってないみたいなのでjavascriptにします
Web制作板から流れてきました。 Windows Vista Ultimate でXAMPPを使用を試みています。 Apacheが起動できておりません。 (以下のようになってしまいます) E:\xampp>apache_start.bat Diese Eingabeforderung nicht waehrend des Running beenden Bitte erst bei einem gewollten Shutdown schliessen Please close this command only for Shutdown Apache 2 is starting ... (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、ま たはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to addr ess 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs Apache konnte nicht gestartet werden Apache could not be started 続行するには何かキーを押してください . . . port443が使用されているということは分かったのですが、 何のソフトが使用しているのか判断ができません。 どうしたらポートを使っているソフトが分かりますでしょうか?
初心者がxamppはやめなさい
>>797 助言ありがとうございます。
了解しました。
使用しない方がいい理由を教えていただけますか?
想像しているのは
・初期構築のスキルが付かない
・Windows上に構築するよりLinux上の方が楽
等ですが正しいでしょうか?
443ってのはSSLだろうな 既にwww鯖が入ってる とかでは?
>>798 さん
>port443が使用されているということは分かったのですが、
>何のソフトが使用しているのか判断ができません。
>どうしたらポートを使っているソフトが分かりますでしょうか?
「セキュリティが強化されたwindowsファイアウォール」を見て一歩前進です。
Secure Socket トンネリング プロトコル (SSTP 受信)
が受信でport443を使用している模様です。
jpg画像をリサイズしたいのですが、 以下のように実装したら色がかなり落ちてしまいました。 $img = file_get_contents("他サイトのURL"); $im = imagecreatefromstring($img); $outputResourse = fopen("保存先パス","w"); flock($outputResourse,LOCK_EX); fwrite($outputResourse,$img); list($width , $height) = getimagesize(保存先パス); $dstImage = imagecreate(100,100); imagecopyresampled($dstImage, $im, 0, 0, 0, 0, 100, 100, $width, $height); fclose($outputResourse); $outputResourse = fopen("保存先パス2","w"); flock($outputResourse,LOCK_EX); imagejpeg($dstImage,"保存先パス2"); 調べてみるとimagecopyresampled関数にはパレットイメージの制限(255+1色)による問題というのがあることが分かったのですが、 そのせいなのでしょうか? だとすればどのように対処したらよいかアドバイスをいただけませんか?
803 :
716 :2008/11/11(火) 23:05:59 ID:pJUkayYB
>>720 >>721 レスありがとうございます。御礼遅れてすいません。
参考にさせて頂きますm(_ _)m
共用サーバ使ってるとセッションデータはデフォルトのままだと漏れることがあると聞いたんで独自に書いてDBで管理しようかと思っているんですが・・けっこう大変そうですね。
しかし共用サーバでなければデフォルトのままでもいいのかなとも思うんですがどうなんでしょう。DB管理にするとI/Oが増えるんじゃないかとも思うんですが。
>>803 DBで管理した事あるけど
DB鯖次第かな・・・
I/Oはreadに1回updateに1回あとsession破棄とGCの時に1回ずつだから
それ程気にする必要もなかったと思う
>>803 そのサーバの設定にもよるけど、
セッションファイルは apache ユーザで 600 で作られるから、
一般ユーザは apache なんかに su できないから、まあ安全。
どれくらい安全かというと、セッションIDを推測されるのと同じくらい。
負荷はサイトのアクセス数による。1時間に1万アクセスくらいならなんでもかまわない。
806 :
716 :2008/11/12(水) 11:17:06 ID:oEcWCu5N
>>804 >>805 おお。レスありがとうございます。非常に参考になります。
>セッションファイルは apache ユーザで 600 で作られるから、
http://www.ibm.com/developerworks/jp/opensource/library/os-php-secure-apps/ この記事の「セッションを保護する」の欄で、
共有サーバーではセッション・ファイルを読み取るスクリプトを攻撃者が作成し、値を取得することができてしまう。
みたいなことが書いてあります。
この記事、色々と記述に問題があるようなのですが、このセッションの問題は本当にあるんじゃないかなーと。オーナーapacheでパーミッション600ならやられそうな気がしますが、どうでしょう。
>I/Oはreadに1回updateに1回あとsession破棄とGCの時に1回ずつだから
それ程気にする必要もなかったと思う
>負荷はサイトのアクセス数による。1時間に1万アクセスくらいならなんでもかまわない。
ウェブ製作会社でバイトしてるんですが、DBの負荷で一番高いのがセッションのテーブルのようなのです。
やはりPV増えるに連れてボトルネックとなりそうですね・・
>>716 攻撃するにもファイル名を総当たりしなきゃいけないので、
それは外部からのセッションIDの総当たりとあんまり変わらないと思われ。
逆にセッションファイル内を読まれても安全に作っておくべき。
パスワードを平文で保存しないとか。
$_SESSION['passwd'] = 'passwod'; // ×
$_SESSION['passwd'] = md5( 'passwod' ); // ○
セッション管理なんてインデックス張ってればDB処理でもいちばん軽い部類の処理だから、
その設計が悪いと思われ。
単なる認証だけでセッションにパスワード入れるのはマジキチがやることだけどな
セッションにパスワード入れる必要なんてあんの?
810 :
nobodyさん :2008/11/12(水) 14:18:19 ID:oEcWCu5N
レスありがとうございます。 >攻撃するにもファイル名を総当たりしなきゃいけないので、 む、そうなんですか。 攻撃者が作るスクリプトってJavaScript??って思ったんですがどういうスクリプトなんでしょう。 JavaScriptはあまり分からないですし、何かサーバ側のファイルの一覧を取得できてしまうようなスクリプトが作れるのかなと思ってました。 でもよくよく考えたら、そんなことできたらセッション以外の点でも大問題ですね汗
open_base_dirが設定されていないサーバで sessionファイルが全て同一ディレクトリに保存されている場合 phpからアクセス可能なんじゃないの? ini_get等で保存ディレクトリ取得 ↓ ディレクトリ内スキャン ↓ ファイルを読み取り 全てPHPで組めばアクセスできると思うが・・・
あ、SESSIONIDとファイル名は関連があるからな
超初心者スレならばまずはPHPとはなんぞやと言う事を説明せよ。 そして俺を一人前のPHPerに育て上げるのだ。 わかったな? 〇〇嫁!は禁止。 キチガイ等と言うやつは負け組 ↓では開始
ググレカス
ググレカレーも禁止
>>814 まずはお前が「一人前のPHPer」とはなんぞやを説明してからだ
>>817 PHPもしらんのに答えられるはずもなかろう。
愚かもの
質問 mbstring.encoding_translation = On になってる PHP 環境があります。 php.ini も .htaccess も変更出来ない場合 他に Off にする方法はありますか。
自分で明示的にencodingを指定すれば?
超初心者なのでわかりません > <
mbstring.internal_encoding を指定しても POST データは translation されちゃいますよね。 受け取ったデータをまた変換し直してやるしかないのかな。
質問させてください。 unixtojd関数を使用したかったので、--enable-calenderをつけてphpを再インストールし phpinfoで--enable-calenderが表示されていることを確認したのですが いまだCall to undefined function: unixtojd()とエラーが表示されたままになってしまいます。 この関数を利用するのに、別に必要なものがあるのでしょうか? 環境はcentos5.0、apache2.0、PHP4.4.8で、会社のローカル開発用サーバで運用しています。
824 :
nobodyさん :2008/11/13(木) 19:04:30 ID:lI0vnur7
ピーエイチパーって流行ってるの?
825 :
nobodyさん :2008/11/13(木) 21:47:24 ID:+wSFnCZL
Apache2.2 + mod_fcgid + php-cgi5.2.6で大きなファイルをアップロードできません。 下記に書いたコードを上記環境で動かすと10KB-20KB程度のファイルは正常に アップロードできるのですが、それ以上となるとエラーとなってしまいます。 php.iniのアップロードサイズなどは問題ないようなのですが。 原因がわかりません。 なんででしょう? <html> <head></head> <body><?php $uploaddir = '/tmp/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded.\n"; } else { echo "Possible file upload attack!\n"; } echo 'Here is some more debugging info:'; print_r($_FILES); print "</pre>"; ?> <form enctype="multipart/form-data" action="<?php print($_SERVER['PHP_SELF']); ?>" method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form> </body> </html>
827 :
nobodyさん :2008/11/13(木) 22:06:05 ID:Z/0actP/
お願いします 登録してある複数のメアドに一斉にその内容の メールするフォームのCGIを紹介してください できればメアド登録もWEB上で行いたいのですが
つ無料メーリングリストサービス
>>825 自分で
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
って指定してるからだろ
このvalueはbyteだPHPはこれもチェックしたはず
>>824 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・)< PHPの時代は終わった。今から勉強しても使えません。
( 建前 ) \_______________
| | |
__(__)_)______________
( _)_)
| | |
( 本音 ) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( 。A。)< 新参の商売敵は潰しておくか
∨ ̄∨ \_______________
832 :
nobodyさん :2008/11/14(金) 15:44:43 ID:Xq4mZFEa
超ド級初心者ですが、質問させてください。 TOP画面で「こうげき」「まほう」のボタンがあり、敵のHPが100あります。 それを、こうげきした場合はランダムに「1〜10」の間で敵のHPを減らす。 まほうなら「20〜30」で減らす様にして、繰り返す。 敵のHPがゼロになったら、結果の別画面へと言う物をPHPで制作しているのですが、 「こうげき」したら⇒HPが「1〜10」減って表示が100から引かれる処理がイマイチわかりません。 rand自体の動きはわかるのですが、それを応用して上記の様な処理の仕方がわかりません。 お願いします。
値の保持の仕方が分かってないんだね Cookieとかセッションを使うと良いよ
834 :
nobodyさん :2008/11/14(金) 17:31:37 ID:Xq4mZFEa
>>833 ありがとうございます。
色々と調べて、試してみます!
if(@is_file(THUMB_DIR.$time.'s.jpg' この@ってどう言う意味があるんでしょ?
自己解決しました、エラーを出ないようにするんですね。
837 :
nobodyさん :2008/11/15(土) 04:48:34 ID:INPBoIvZ
今日apacheとphpを導入したのですが <?php phpinfo(); ?>を行っても文字だけがlocalhostに出るだけで phpがうまく実行されません 一通り見たのですが間違ってないような感じでした また、index.phpでのファイルはなんともないのですが test.phpを見ようとするとファイルのダウンロードになってしまいます このような状況のときapacheの設定が悪いのか phpの設定が悪いのかどっちなのでしょうか? apacheは2.0.63でphpは5.2.6です よろしくお願いします
AddHandlerかましてるか?
839 :
837 :2008/11/15(土) 14:23:50 ID:INPBoIvZ
>>837 まさかその程度の知識で鯖を立ててるんじゃあるまいな?
841 :
837 :2008/11/15(土) 14:49:04 ID:INPBoIvZ
そのつもりですが そのほかにどういう知識が必要なんですか? まだ初めたばっかです
基礎から勉強しろ まさか「どうやって勉強すればいいですか?」とか聞くまいな
843 :
nobodyさん :2008/11/15(土) 17:15:09 ID:k8oNRHMF
今勉強用に弄ってるサンプルソースに if(!$img_tmp) { echo $this->error("ファイルを入力してください"); echo $this->html_foot(); exit; } elseif(($img_size/1024) > $this->max_file) { echo $this->error("ファイルサイズが大きすぎます"); echo $this->html_foot(); exit; error〜は自分で定義するエラーだと分かるんですが こんなソースがあったんですけど$this->の部分がよくわかりません。 これってなんでしょうか?
844 :
nobodyさん :2008/11/15(土) 17:17:11 ID:k8oNRHMF
日本語がおかしすぎますねorz
そんなレスする暇があったら訂正したほうが・・ $this->っていうのはクラス内でローカルメンバを扱いたいときに遣う
846 :
nobodyさん :2008/11/15(土) 17:50:25 ID:k8oNRHMF
>>845 クラス内でローカル変数とかをグローバル変数と区別するための決まり事ってことでOKでしょうか?
全然違う
ローカル変数でもグローバル変数でもない、インスタンス変数だ。 オブジェクト指向プログラミングの基礎。phpではPHP5から本格的に導入された。 現代的なプログラミングをする上での必須知識だから、早めに習得したほうがいい。 class Person{ private $name; function sayName(){ echo 'My name is ' . $this->name . "\n"; } function setName($var){ $this->name = $var; } } $a = new Person(); $b = new Person(); $a->setName('Andrew'); $b->setName('Brian'); $a->sayName(); // My name is Andrew $b->sayName(); //My name is Brian $a->getName()を呼ぶ時、getName()内の$thisは$aを指す。$b->getName()の時は$bを指す。
sayName lol
echo $a->getName(); って感じでサンプル書いたら「getName()の最後のreturnってなんですか><」とか言われる可能性があるだろダラズ。
851 :
nobodyさん :2008/11/15(土) 21:03:33 ID:k8oNRHMF
>>848 サンプルまでつけていただいてありがとうございます。
オブジェクト指向の理解がちゃんとできてないので何となくですが、
1つのクラスから複数のインスタンスを生成した際にごっちゃにならないために・・・・??
理解力なくてすみませんorz
じゃオブジェクト指向理解すれ
853 :
845 :2008/11/15(土) 23:46:02 ID:???
すまん ローカルメンバとか言わないんだな・・
854 :
nobodyさん :2008/11/16(日) 06:07:17 ID:QRvDYE1C
以下の変数$csvにはCSV形式のデータが入っており、 これを配列$csv_arrに置き換えたいと思っています。 $csv = <<EOF 2008-11-13, りんご, 10 2008-11-14, みかん, 20 2008-11-15, めろん, 30 EOF; $csv_arr = array( array("2008-11-13", "りんご", "10"), array("2008-11-14", "みかん", "20"), array("2008-11-15", "めろん", "30") ); どうぞ宜しくお願いします。
foreach (explode("\n", $csv) as $val) { $csv_arr[] = explode(",", $val); }
$csv_arr = array_map('explode', array_fill(0, count(file('a.csv')), ','), file('a.csv'));
857 :
854 :2008/11/16(日) 13:00:43 ID:QRvDYE1C
>>855 そのものずばりの回答ありがとうございます!
>>856 質問が言葉足らずで誤解させてしまい申し訳ないです。
今回の私の質問は、csvファイルからの読み込みではなく、
変数$csvにCSV形式の文字列が入っているという意味で
質問させていただきました。
ただ、ご回答いただいたコードは、ネットで探すサンプルよりも
ワンライナーでとても簡潔にまとめられていて参考になります。
ありがとうございます!
>>854 $csvに入る内容にもよるが
データに,とか\r\nとか”があった場合の挙動って考えなくて良いの?
厳密なCSV定義からのパースだとしたら今出てる物では不十分
因みに厳密なCSV定義=RFC4180ね
859 :
854 :2008/11/16(日) 23:14:23 ID:QRvDYE1C
>>858 特定のWebページを取得してCSV形式で整形したものが、今回の$csvと
なるので、今回については特殊な文字列が含まれることはありません。
ご指摘された場合も想定しないと予期せぬ不具合につながりますね。
アドバイスありがとうございます。
それは普通CSV形式とは言わない
861 :
nobodyさん :2008/11/17(月) 09:37:37 ID:KhW4/uRq
質問があります if(1000==(1100/1.1)){echo "ok";} これでは判定は真にならずokと表示されません 何故ですか ちなみに if(1000==(900/0.9)){echo "ok";} これだと真と判断されてokと表示されます
863 :
nobodyさん :2008/11/17(月) 11:01:28 ID:KhW4/uRq
>>862 ありがとう御座います
例えばリンク先の例に挙げられているfloor((0.1+0.7)*10) の場合
echo floor((0.1+0.7)*10);
とすると結果は7と表示され、
想定される結果である8とは違う事から
リンク先に書いてあるように計算精度に問題がある事が分かりますが
echo 1100/1.1;
とすると1000と表示され、想定された通りの計算結果になります
この値はあてにならないということでしょうか
ファイルの排他制御って参照しかしない場合でも必要なんですか?
場合による
867 :
nobodyさん :2008/11/17(月) 12:40:07 ID:KhW4/uRq
>>866 ありがとうございます
判定はbcdivを使う事で判定する事が出来るようになりました
>>867 Windows以外で任意精度数学関数を使う場合は
--enable-bcmathつけてコンパイルしてある必要があるので気をつけて
出来るようになったって言ってんだろカス
>>863 floor((0.1+0.7)*10);
の例にしても、echo 0,1+0.7なら0.8と表示されるよ。
そりゃ丸められてるからだろ
そう。だから1100/1.1も1000と表示されるけど実際には丸められてる
873 :
sage :2008/11/17(月) 16:44:22 ID:fS1MxP+5
超初心者です。 XAMPPのDBにアクセスしてるPHPを読んでてわからなかった事があるのですが、 PHPのはじめの所が「<?」や「<?php」ではなく、 「<?=」となっていて、 <?=$TEXT?> という感じで変数を表示してたところがありました。 これはechoと何が違うのでしょうか? これの様に左辺が無い場合はどういう動作になるのでしょうか・・・ よろしくお願いします。
>>874 ありがとうございます!
echoとの違いではなくて、echoの短縮だったんですね。
スッキリしました。
876 :
nobodyさん :2008/11/17(月) 19:55:05 ID:G7bu0AqY
コノスレイイ。 ロムってたけど。 \(^o^)/イイ。
マニュアルも読まないなんて
作られたhtmlファイルが文字化けしてしまうのですがなんでなのでしょうか。 <?php $word = '漢字'; $word = mb_convert_encoding($word, "UTF-8"); $page =$word.'.html'; $str = mb_convert_encoding($page, "UTF-8"); $fp = fopen($str,"w"); ?>
何がしたいのか意味不明
>>879 漢字.htmlというファイルを作りたいのですが、
文字化けしてしまうんです。
ちゃんとエンコード元を指定すべし
>>881 $str = mb_convert_encoding($page,"UTF-8","auto");
autoでもSJISでもできないんです。
autoは指定になってない php.iniの設定とソースの文字コード、ブラウザの文字コードによっても変わる detectもしつつ色々試行錯誤してみ
>>878 何を元にhtmlファイルが文字化けてると言ってるの?
何かソフトで見た場合の事?
>>883 <?php
$word = '漢字';
$word = mb_convert_encoding($word,"UTF-8","SJIS");
$page =$word.'.html';
$str = mb_convert_encoding($page,"UTF-8","SJIS");
echo mb_detect_encoding($str);
print '<BR>';
echo mb_detect_encoding($page);
print '<BR>';
echo mb_detect_encoding($word);
$fp = fopen($str,"w");
?>
結果は
UTF-8
UTF-8
UTF-8
なんですが。
>>884 ファイル名が"髮区誓・ス・「髯・html"になるんです。
>>887 ローカルで作成しているので、自分のパソコンで見たときにです。
ファイルの内容のエンコードとファイル名のエンコードは関係ないぞ。 環境は?OSとか
>>888 OSの文字コードで書き出さないと化けたように見える
どっちにしても漢字ファイル名はクライアントの環境やブラウザの仕様によって読めないケースがあるから 使わない方がいいな
windowsの文字コードは普通jisだわな
ああそれで俺もファイル名の文字化けに悩んだ記憶がある
896 :
nobodyさん :2008/11/18(火) 14:27:45 ID:VeQnY2gN
今IDとパスのログイン画面で次回からログインを省略するチェックボックス を作ってます。チェックを入れるとsession_set_cookie_paramsを 1年に設定してるんですが一度ブラウザを閉じるとセッションも切れてしまいます・・・ 下に簡単なソースを載せますので すいませんがアドバイスよろしくお願いします。 login1.php <? session_set_cookie_params(365*24*3600); session_start(); $_SESSION["name"] = "こんにちは"; echo "セット"; echo "<a href=\"login2.php\">移動</a>"; ?> login2.php <? session_start(); echo $_SESSION["name"]; ?>
やってみたけど俺の環境だと残ってたよ firefox?
898 :
896 :2008/11/18(火) 16:33:43 ID:???
>>897 返答ありがとうございます。
環境はIE7、Firefoxです。
最初にlogin1.phpにアクセスし
セッションを設定して移動をクリックすると
login2.php にもセッションが引き継がれるんですが
その後ブラウザを閉じ次にlogin2.phpにダイレクトにアクセスすると
$_SESSION["name"] = "こんにちは";が表示されず
真っ白になります・・・
自動セッション開始のディレクティブも考慮して、 クッキーの有効期限はsetcookieで設定した方がいいぜ session_startする前に実は開始してて、有効期限の上書きが出来ないことがあるから
900 :
nobodyさん :2008/11/18(火) 17:36:13 ID:s+xeZpDT
質問です。 変数$strをintにキャストしたいのです。 ご教授お願いします。 $str = "ST012300"; $str = (int)$str; $num = 100; $num += $str; echo $num; ←ここで出力
STのところが必ず2文字ならsubstrで切り取ってからキャストすればいいんでないの?
>>900 適当に書いたがこんな感じか?
function toInt($string) {
$temp = "";
for ($i = 0; $i < strlen($string); $i++) {
if (preg_match("/[0-9]/", $string[$i])) {
$temp .= $string[$i];
}
}
return (int)$temp;
}
>>902 おまえアホだろ。なんのためにpreg_matchつかってるんだよ。
>>903 1文字ずつ分解するのが無難なやり方でないかと
preg_match_allが俺の環境じゃ使えないから使わなかっただけというのもあるけど
preg_matchだけでくり抜ける?
例に出てるST012300なら簡単だけど
o89WE342hEU44とか2バイト文字が入ってきたりすると
俺のレベルじゃ1回の正規表現で抜き取れない
905 :
896 :2008/11/18(火) 18:54:44 ID:???
>>899 session_startする前に開始している時もあるんですね。
アドバイスいただいたやり方で一度やってみます。
ありがとうございました!
元質問者の必要なものがどれかによるだろうけど、 飛び飛びの数字くっつけて1つの数字にすることに意味があるのか?
is_numericでいいじゃん あと引数に配列渡された場合どうすんのとか
>>907 is_numericでもいいけどpreg_matchでもいいじゃん
>>903 の突っ込みはpreg_match使うなら1回で抜けってことではないの?
その方法が思いつかなかったから聞いてるんだけども
>あと引数に配列渡された場合どうすんのとか
それは配列用のを別に作るべきでしょ
PHPじゃオーバロードできないけど
preg_matchで行うことに何の利点があるの?
強力な正規表現が使える。 逆に言うと正規表現がわからないと混乱するだけ。
>>909 普段よく使うから使っただけだよ
is_numericなんて使ったことなかったし
まぁ気になったんで
>>902 で書いた関数で文字列に適当なwebサイトをfile_get_contentsしたものを使って
is_numericとpreg_matchの比較ベンチとってみたけど
is_numericのほうが早いね
速度面では特に利点はないみたいだ
ただ
>>910 もいってる通りうまく使える人なら1行でスッキリと1回で抜けると思う
オーダなんかは1文字ずつ比較するのとたぶん変わらないと思うけど
$str = "ST012300"; という前提があるなら、漏れなら、 ereg( '(\d+)', $str, $regs ); echo $regs[1]; と書く。
どういう前提だよw 文頭がアルファベットか?文字数が8文字か?数字が0〜3までか? 数値が連続してるなんて前提ねーよw
>>900 盛り上げていただいてありがとう御座います。
参考にさせていただきます。
お前はすっこんでろ
最初に現れた数字列を引っ張ってくるという前提だ。
917 :
nobodyさん :2008/11/18(火) 21:48:50 ID:/cO8JIvu
開発環境はXAMPPで作ってる初心者で質問なんですが、 PHPからDB2に接続するにはどうしたらいんですか? MySQLからDB2に移行したいんです!何か特別な設定とかいります? カタログ接続とかの意味がよく分からないです^^;
初心者ならXAMPPを使うな
>>917 それより何故DB2? MySQLの方が圧倒的に楽じゃん。
>>917 XAMPPはDB2じゃないからあきらめてね
DB2使うならPEARかPDO使えば
<?php $file ='test.html'; $fp = fopen($file,"w"); $str = array('aaa\n','bbb\n'); file_put_contents($file, $str ); fclose($fp); ?> 複数行の書き込みをしたいのですが、これだとできません。 教えて下さい。
なんでarrayなの?
'aaa\n'と"aaa\n"は違う
条件分岐をさせてMySQLのデータを削除しようとしているのですが $pass1 = $_POST["pass"]; if($pass1=="●●"){ $sql = "delete from object where id = $id"; mysql_query($sql); echo "削除されました"; exit; } ●●の部分をMySQLに格納しているパスワードに したい場合はどうすればいいのでしょうか? MySQL側の質問になってしまうかもしれませんがお願いします。
htmlタグをprintするときに、 "のエスケープをせずに済む方法ってありますか? 大量のhtmlタグをprintするのが大変なのでそのような関数があれば 教えていただきたいです。
>>926 それの前にクエリ発行して格納しているパスワードを取ってくれば?
>>927 シングルクオートにすれば?
関数じゃないけどヒアドキュメント
>>929 ヒアドキュメントの中に変数って使えますか?
931 :
926 :2008/11/19(水) 02:32:56 ID:???
>>928 うぉぉぉぉできました!!!
すっごい単純なことだったのに完全に頭が固くなってました!
ありがとうございます!!
>>928 >>929 アドバイスありがとうございました。
テンプレート作って置換したら簡単にできました。
すいません ご存じなかたがいらっしゃったら教えていただけると幸いです 自作のスクリプトをばらまこうと思ってるのですが ファイル構成やパーミッションまわりが複雑だったりするので インストールウィザードをつけたいと考えてます 自己解凍形式みたいに フォルダやパーミッションや簡単な設定項目(置換)を指定すると そのとおりに設定して展開してくれるようなスクリプトはありますでしょうか? なければ作ろうかと思うのですが 需要ありますでしょうか? 一通り探したつもりですが見つかりませんでした よろしくお願いします
>>933 パーミッションってことはOSX含めたUnix系OSだよね?
RPMパッケージでも作ればいいんじゃない?
というか展開したファイルのパーミッションを変えるスクリプト1つ置くだけでいいのでは?
複雑な設定項目とかはインストール後に管理スクリプトからやればいいだけだし
そもそもサーバでそんなもの展開してインストールするようなのは自鯖か専鯖持ちぐらいでしょ
ターゲットの範囲が狭すぎてそのためにわざわざ凝った作り考えるのもあほくさいわ
935 :
933 :2008/11/19(水) 10:58:08 ID:???
>>934 レスありがとうございます
移動中の携帯からの投稿だったため情報が足りませんでした
ここでいうスクリプトはPHPのスクリプトで
ターゲットはLinux+レン鯖を考えています
処理の流れ的には
1.自己解凍PHPにWEB経由でアクセス
2.DIRパスやそのスクリプトの起動に最低限必要な定数を設定
3.指定DIRに展開
4.自分自身を削除(オプション)+そのスクリプトの設定画面へリダイレクト(あれば)
単一ファイルにまとめたかったのは
・配布しやすそう?
・WEB公開DIRに必要ないファイル(incとか)を置きたくない
(必要ないファイルの置き場所は自由なため、公開DIRからの相対パス指定は難しい)
確かにインストールスクリプトを一個用意しておけばいい気もしますね・・・
>>935 需要あれば作るんじゃなくて、
作ったあとに需要あれば使って下さいの方がいいと思うよ。
ぞれより自己解凍PHPってのがなんなのか気になる
たとえば$msg=htmlspecialchars($_POST['message'],ENT_QUOTES);で、POST(message)を取得したとして、その中身がなかった場合って$msgは存在しないことになるんですかね。 if($msg)ってやったらfalseでした。 それとも$msgってなまえの変数は有っても中身がない場合はfalse?
htmlspecialchars関数の戻り値ぐらいマニュアルに載ってない?
939 :
933 :2008/11/19(水) 14:03:57 ID:???
>>936 確かに
作ってみます
ありがとうございます
自己解凍PHPとか言ってますが
単純に自身のPHPにファイルやらディレクトリ構成を埋め込んでるだけです
アクセスすると入力域が現れて・・・てな感じです
> 単純に自身のPHPにファイルやらディレクトリ構成を埋め込んでるだけです > アクセスすると入力域が現れて・・・てな感じです それが気になる。ウェブ上からインストールできるってこと?
インストールスクリプトでないなら意味が分からん.圧縮してんの? なんで初心者なのに用語を自作するのか
ひらがな・カタカナ・数字・アルファベット・シフトJIS第一・第二水準漢字 以外の物を調べるにはどうしたらいいですか? 具体的にはJIS補助漢字・第三・第四水準漢字や台湾、中国語などには エラーと表示させたいです。
945 :
933 :2008/11/19(水) 16:07:24 ID:???
>>940 はい、そのとおりです
適当な公開ディレクトリにファイルを一個ぽいっとおいて
アクセスしてWEB上でパスの設定などをしてsubmitすると
設定に基づいて展開したりシンボリックリンクを作ったり文字コード変えたり設定情報を書き込んだりします
>>941 申し訳ない
PHPで自己解凍みたいのできたらいいなイメージから思いついたので・・・
今動いているのは圧縮してないですが、あとでgzipをかけたいと考えています
低機能なインストールスクリプトと思ってください
最低限の設定を行ってさらに設定が必要なら(データベース作るとか)それぞれの設定WEBにリダイレクトします
既存のインストールスクリプトと違うところは
・ファイルひとつだけでOK
・複数台のサーバ配布に対応(scpばらまき)・・・予定(作成中)
結局のところ展開してアップすればええやんって気もしてきましたorz
946 :
933 :2008/11/19(水) 16:29:07 ID:???
改行がなくならないように mb_convert_encodingを使う方法ってありますか?
なくなんないべ
>>949 ありがとうございます。
勘違いしていたようです。
ファイルの最終更新時間のUNIXタイムスタンプを 取得したいのですが、 time()は引数がないのでどうしたらいいですか?
3行目が意味不明だけど filemtimeかstat
正規表現でマッチしない行を 削除するにはどうしたらいいのでしょうか。
マッチした行を連結すればいいだけ
マッチさせて空白に置換すりゃいいじゃん
$logは sample(9) sample(241) sample(3234) などの複数行のファイルでカッコ内の数字が一ケタの場合 その行を削除したいのですが、 $search="/.+\([0-9]\)/"; $log = eregi_replace($search,"",$log); これだとできません。教えて下さい。
preg_replace("/.*?\(\d\)\n/", "", $log) こうかな
できました。
今後のためにもどうやったらできたのか教えてよ
$logは複数行あるテキストファイル $logArray = explode("\n",$log); for($i=0;$i<=count($logArray);$i++) { $dat[$i] = substr($logArray[$i],0,10); print $dat[$i].'<BR>'; } 結果はちゃんとprintされているんですが、 Notice: Undefined offset: 80 C:\Program Files(略) on line 24 っていうのがでるんです。 24行目は$dat[$i] = substr($logArray[$i],0,10);です
$logArray = explode("\n",$log); ↓ $logArray = @explode("\n",$log);
$i<count($logArray) ループ条件はこうちゃいますのん?
>>963 大域(forの外)で$datは宣言されてるの?
$dat = array();
あとループ条件は
>>965 ちなみにエラーが出たラインの1行前(つまり23行目)に原因がある場合があるから
付近のソースを出すのが望ましい
$dat[$i] = substr($logArray[$i],0,10); print $dat[$i].'<BR>'; というかfor文の外で$dat使わないなら echo substr($logArray[$i], 0, 10); でいいのでは? それとも他の部分でも使ってるのかな?
>>968 やってることは違わないけど
変数に入れる必要がないってこと
他で使ってるなら別だけど
>>969 違う前半部分について
もしかしてただの引用か
次スレそろそろ頼む うち規制中だった
>>963 ですが、
>>965 さんの方法で解決しました。
$datは使い回すので新しい変数を作りました。
ほうほう,それで?
質問 ウチが使ってるレンタルサーバーが >CGI版をラッパーを使用し >所有者の権限にて動作させる >一部の動作で、モジュール版と >挙動が違う可能性があります。 っていう方式なんだが、これってどういうこと?
978 :
nobodyさん :2008/11/22(土) 01:09:16 ID:3EI7zmLa
先生方、質問させてください。 以前からHTMLでサイトを作っていたのですが、どうしても静的なものしかできずに ただ見てもらうだけのサイトしか作れません。 なので、サイト訪問者にデータを追加してもらったりデータの閲覧ができたりと もっと双方向での情報交換ができるサイトを作りたいと思ってます。 なのでPHPを勉強しようと思っているのですが、今私が目指しているところは PHPを勉強するという道で間違ってはいないでしょうか? そして、PHPを勉強するにあたって、わかりやすいお勧めの本やサイトがあったら教えてください。 知識としてはHTMLで見せるだけの簡単なサイトを作れる程度です。 どこから勉強すればいいのかわからないのですが、PHPに入るときに読む本、 PHPを実用的に使えるような本があったら教えてください。 お詳しい先生方、ぜひよろしくお願いいたします。
>>978 先生でも何でもないけど、PHPマニュアルに勝る良書は無いかと。
http://www.php.net/manual/ja/ PHPは「いかに楽してウェブシステムを作るか?」っていう言語だと俺は思う。
それで良いなら選べば良いしそれが嫌なら他の言語を選ぶといいかなと。
勉強については、まずHTMLの<form>タグの概念が分かってないならそれからまず勉強。
あとは自分が作りたいと思うもの(例えば掲示板)のPHPスクリプトソースをネットから拾ってきて、
それを少し改造してみるとかね。
PHPって良い意味でも悪い意味でも適当な言語なので、多分何とかなると思う。
>>978 まずはxamppのインストールからだな。
インターネットの接続にルーターはかませてるよね?
>>979 まずはphpを実行できる環境を整えるところからでしょ。
いきなりphpのマニュアルを勧めてどうするの。
何言ってんだ。 いきなり実行環境を作るより プログラミングの基礎と概念を理解する方が先だろう。 何でもかんでも手を動かしてやりゃいいってもんじゃない
985 :
nobodyさん :2008/11/22(土) 02:20:06 ID:lJIGiW+2
大核本
>>984 と言って自著を買わせる教授なのであった
巷の入門本なんて、サンプル載せてさぁ打ってみましょう動いたらあなたもプログラマーです! みたいなもんばっかだろう
質問者はこういうことをする場合PHPを使えばいいのか?と聞いていて PHPを使えばいい場合勉強するにあたってお勧めの本やサイトを教えてくれと聞いてるわけだ
うん、だからどうした
キメエっつってんだよ
実行環境云々は余計なお世話ということだ
要するに
>>981 がPG的にもコミュニケーション的にも低脳ってこtか
揉めるなら新スレ立ててからにしろ
クラス内の関数に別のphpファイルをincludeして その中に関数を入れることってできますか? test.phpの中身が <?php class test{ private $_text; function test() { $_text = 'abc'; include 'aaa.php'; aaa(); } } ?> で aaa.phpの中身が <?php function aaa() { print $this->_text; } ?>
そこまで書いといて実行させない神経が理解できない マニュアルも読まない神経が(ry
>>996 aaa.phpの中身を
<?php
print $this->_text;
?>
にすれば実行できるので
どこかが間違っているのか、元々できないのかわからなかったんです。
関数$aaaはオブジェクトじゃないんだから$thisはnullじゃん
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。