【PHP】くだらねぇ質問はここに書き込みやがれpart8
1 :
nobodyさん :
2005/08/08(月) 01:18:55 ID:54u1h4+D
$がついてない変数ってどういう意味があるんですか?
>前スレ994 基本構文のところに書いてある。 ただPHPの文法についての記述は全体に弱いね。 リファレンスだからだと思うけど
4 :
951 :2005/08/08(月) 01:29:12 ID:???
インストールネタで申し訳ないんだけど libcurl.so.2 ってどこでDLできますか? またはrpmのパッケージ名を教えて下さい ついでにもひとつ、rpmfind.netで「libcurl.so.2」でサーチした時に 希望のディストリが表示されなかった場合、例えばRed Hat Enterprise ES2.1用が欲しいのに RH9とか8とか7とか近そうなものがあった場合、代替えって効くもんなのでしょうか?
6 :
前スレ994 :2005/08/08(月) 02:30:42 ID:???
>>3 そんなところに書いてたのか。索引で&調べたらでてこなかった('A`)
ありがとー
他の言語の経験はあるんだけど、どこまで同じで、どこから違うのか
イマイチ感覚がつかめないっす
>>5 そのディストリのcurlのパッケージにあるでしょ。
devel(はないか)とか別に分けてある可能性はないわけでもないが。
libcurl.so.1とかlibcurl.so.3とかかもね。
>代替えって効くもん
Win3.1のソフトが全部Win95/98/Meで動いたか?
Win95のソフトが全部WinXPで動いたか?
答え:ものによる
global変数でglobal $abc="abc"; といように宣言と同時に初期化ってできないですか? また大規模なサイトを作るときはglobal変数は使っては あまりよろしくないとどこかのサイトで言ってたけどreally?
PHP5対応のRSS表示スクリプトってフリーでありませんか? 紹介して下さると助かりますです
11 :
9 :2005/08/08(月) 10:33:27 ID:???
>>10 http://phpspot.net/php/pgSimpleXML.html 等は見つけていて試しているのですが真っ白なページしか表示されません。
----------------------------------------
$xml = simplexml_load_file("
http://www3.asahi.com/rss/index.rdf ");
print_r($xml); // 配列を出力してみる。
foreach ($xml->item as $item) {
$rss_title = $item->title; // item/title
$rss_item = $item->link; // item/link
$rss_desc = $item->description;// item/description
}
print $rss_title;
----------------------------------------
としてみたんですが間違っている箇所を指摘下さると助かります。
>>11 コードは間違ってないよ。PHP5.0.4で実際に動かしてみたけど大丈夫。
先頭に以下を入れて実行してみて何かエラーメッセージは表示されない?
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
error_reporting(E_ALL);
15 :
nobodyさん :2005/08/08(月) 12:05:40 ID:uL829/sh
検索する入力フォームを作ってるんだけどなぜかうまく動かない・・・。 <FORM method='post' action='{$_SERVER["PHP_SELF"]}?proc=result'> というフォームを作ってsubmitボタンから飛ぶと期待通りファイル名に?proc=resultがつくのに <FORM method='get' action='{$_SERVER["PHP_SELF"]}?proc=result'> とすると?proc=resultがつかない・・・。 postをgetにするだけで渡されるURLが変わってしまうのはなぜでしょう?
>>15 print や echo を使って出力する時の話だよね?
getの時は、<form 〜action='自分自身のファイル名'> だけが出力されるってこと?
んな筈ないんだけどなぁ。もう一回確認してみ。
17 :
15 :2005/08/08(月) 12:32:23 ID:???
>>16 それが、出力されたソースを見てみると両方とも確かにURL?proc=resultとなってるんですよ。
なんだけど、postの場合はproc=resultを渡された処理が行われているのに
getだと元のフォームがそのまま表示されてしまうんです。
URLを見てみるとproc=resultがなく、入力した変数と値のみがパラメータとしてついている状態です。
なんでだろ?
受け取りは? print_rで確認しる
19 :
nobodyさん :2005/08/08(月) 12:35:13 ID:nwBW+BrY
>>15 postで?proc=resultを付けている時点でアイタタなソースなんだが。
以下でやって味噌。
<FORM method='get' action='{$_SERVER["PHP_SELF"]}'>
<INPUT TYPE='hidden' NAME='proc' VALUE='result'>
<INPUT TYPE='submit' VALUE='送信'>
</FORM>
21 :
16 :2005/08/08(月) 12:51:09 ID:???
>>17 これを試してみ。procの分岐条件に問題があると思われ。
<?php
print_r($_GET);
print("<BR>");
print_r($_POST);
echo "<FORM method='post' action='{$_SERVER["PHP_SELF"]}?get_var=get_var'>"
?>
<input type="hidden" name="post_var" value="post_var">
<INPUT TYPE='submit' VALUE='送信'>
</FORM>
URLにひっつけた分は$_GETに入り、hiddenの方は$_POSTに入る。
$_POST[hoge]で処理してんじゃないの? $_GET[hoge]もしくは$_REQUEST[hoge]
23 :
15 :2005/08/08(月) 13:10:03 ID:???
みなさんレスどうもです。
もともとGETで作るつもりで?proc=resultを付けていたのですが、
うまくいかないので試しにPOSTでもやってみたということです。
<INPUT type='hidden' name='proc' value='result'>でうまくいくことも確認済みです。
FORMでactionを指定する際にGETだとパラメータをつけられないのかが気になっているだけなので・・・。
入力フォームにprint_r($_GET)を書いたところ、submitを押した後に$_GETの内容が表示されましたorz。
action='ファイル名?proc=result'でもダメって・・・ナンダソリャ。
>>21 を試してみたところ$_GETにはget_var、$_POSTにはpost_varがちゃんと入ってます。
で、次に
>>21 をmethod='get'にして試したところ、$_GETには[post_var] => post_varのみが表示されました。
・・・もしかしてmethod='get'のときはフォーム内で指定した変数・値だけしか渡されない?
actionでURLにつけたパラメータは$_GETには格納されなかったりするのでしょうか?
24 :
9 :2005/08/08(月) 13:11:37 ID:???
>>13 最終的には
+++++++++++++++++++++++
<?php
ini_set('display_errors', true);ini_set('display_startup_errors', true);
error_reporting(E_ALL);
$xml = simplexml_load_file("
http://www3.asahi.com/rss/index.rdf ");
foreach ($xml->item as $item) {
$rss_title = $item->title; // item/title
$rss_item = $item->link; // item/link
$rss_desc = $item->description;// item/description
print $rss_title;
}
?>
++++++++++++++++++++++++
としてみましたが相変わらず真っ白です・・
このスクリプトのあったページに移動して質問してみます
ありがとうございました
>>23 あなたの日本語良くわからないけど
form だったら hidden で
a href だったら クエリーストリングで
って、ちゃんとやった方がいいんじゃないの?
パラメータ組み立てる関数とか作っとけば、
別に値追加しようが削除しようが手間にならないし。
なにもトリッキーなコード書いている必要はないと思うが。
aaa.jpgの場合でもaaa.JPGの場合でも拡張子を除いたaaa部分だけを取り出す方法を教えてください
substr($filename,0,-4);
2005年7月20日8時10分30秒と現在の時刻の時間差を計算したいのですが シンプルな方法ありませんか?
>>28 $path_parts = pathinfo('aaa.jpg');
$path_parts['basename']の中身はaaa
31 :
30 :2005/08/08(月) 15:18:41 ID:???
空気嫁
>>30 $path_parts = pathinfo('aaa.jpg');
$path_parts['basename']の中身はaaa.jpg
hoge.phpの中でインクルードしているhoge2.phpの処理中にexit()が実行されたとき 1.hoge.php内でhoge2.phpをインクルードした後の処理も中断されますか? 2.hoge2.phpの処理が中断されるだけで、hoge.phpの続きの処理は実行されますか?
>>35 質問内容の 1 と 2 は同じ事を言っているんではないか?
--- hoge1.php ---
<?php
echo 'hoge1 start<br>';
include('hoge2.php');
echo 'やってみたら判るだろ<br>';
?>
--- hoge2.php ---
<?php
echo 'hoge2 start<br>';
echo 'hoge2 exit<br>';
exit;
?>
37 :
9 :2005/08/08(月) 16:15:08 ID:???
>>24 //------------------------------------
<?php
$xml = simplexml_load_file("
http://www3.asahi.com/rss/index.rdf ");
print_r($xml); // 配列を出力してみる。
print "<br><br>";
$rss = $xml->item[0]->title;
print $rss;
?>
//------------------------------------
で個別の値を取り出すことは出来ました。
foreachの使い方が適切じゃないような気がする・・
でも他の人は動いてるみたいだし・・
38 :
35 :2005/08/08(月) 16:38:15 ID:???
インクルードした場合はインクルード先のスクリプトがそのままインクルード元のスクリプトに 挿入されると考えればいいようですね。 どうもありがとうございました。
39 :
nobodyさん :2005/08/08(月) 21:46:26 ID:yiUBO5QJ
ユーザー定義関数で、複数の戻り値を指定する事って出来るんでしょうか?
しっかし、最近の宿題はバリエーション豊富だな…
>>39 無理。やりたければ、参照渡しされた引数に値を入れるか配列を返すかぐらいかな。
function sub1(&$result1, &$result2) {
$result1 = 1;
$result2 = 2;
}
function sub2() {
$array['result1'] = 1;
$array['result2'] = 2;
return ($array);
}
sub1($result1, $result2);
echo 'sub1 result<br>';
echo $result1.'<br>';
echo $result2.'<br>';
$array = sub2();
echo 'sub2 result<br>';
echo $array['result1'].'<br>';
echo $array['result2'].'<br>';
>>41 即レスありがとうございます!
今後の参考にさせて頂きます
43 :
nobodyさん :2005/08/09(火) 02:34:15 ID:ZFB/xAI3
global変数でglobal $abc="abc"; といように宣言と同時に初期化ってできないですか? また大規模なサイトを作るときはglobal変数は使っては あまりよろしくないとどこかのサイトで言ってたけどreally?
44 :
nobodyさん :2005/08/09(火) 04:21:50 ID:+MEETmeS
てゆーか、globalなんてそうそう使わないから、使ってる時点で何処か無駄が生じてる。
45 :
43 :2005/08/09(火) 05:25:36 ID:???
ユーザー名、ホスト名など設定関係のファイルを用意して メインファイルからユーザー名など書かれた設定を呼び出そうと していました。その時にglobalで定義すれば楽なのかなーと 思っていてました・・・ defineで設定するか、関数を用意してそれを呼び出すのが よいとですかね?
それなら定数でいいじゃない。
43じゃないけど。 定数はスカラーデータしか定義できないから、 設定ファイルで連想配列とか使った方がわかりやすい場合は global ってのもありだと思うんだけど、識者の方どうですか?
48 :
43 :2005/08/09(火) 10:47:50 ID:???
ウェブページからユーザーに名前とか趣味とか書いてもらった 情報をphpファイルに渡すとき、情報を渡されたphpファイルに DBにコネクトしに行くユーザー名、DB接続関数などを書いておくのが 効率がいいのか、 もしくはDB関連の関数を格納したphpファイル、ユーザー名など 書かれた設定ファイルを用意して、それを呼んできてやるほうが 効率がいいんでしょうか?
DB接続用のクラス、セッション管理クラス、リクエストの処理クラス、MVC各クラス、 この辺全部インスタンスをいちいち引数で参照私するのもわずらわしいので、グローバルな変数として CもしくはMのクラスメソッド内で使っているのだが、globalにせん方がいいのだろうか?
>>48 厳密に言うと別ファイルをincludeする必要がない分、前者の方が実行効率は良い。
微々たるものだろうけど。
でも普通は後者。理由は考えて味噌。
ところで今回の質問も含めて、質問のレベルと
>また大規模なサイトを作るときは...
の一文が激しくマッチしないんだが。。。
バカにしているんぢゃなくてオジさんは心配だよ。
>>42 >>41 は難しく書いてあるけど、これでいいからね。
function sub() {
$a = 1;
$b = 2;
return array($a,$b);
}
function sub2() {
$array['result1'] = 1;
$array['result2'] = 2;
return ($array);
}
と
function sub() {
$a = 1;
$b = 2;
return array($a,$b);
}
では、まったく同じ処理ではないだろうに。
後者で充分な場合もあるし、前者のようにキーがあったほうが使いやすい場合もあるし。
>>51 が「これでいいからね。」と断定する理由はなんぢゃろな。
>>49 シングルトンとかにして、参照したほうが美しいとは思う。
$a[0] = "1,あいう,3"; $a[1] = "2,けこさ,1"; $a[2] = "3,かきく,2"; とある時、カンマで分けてからそれによって配列をソートしたいんだけどどうしたらいいでしょう? 実行結果 ・カンマ1個目まででソート $a[0] = "1,あいう,3"; $a[1] = "2,けこさ,1"; $a[2] = "3,かきく,2"; ・カンマ1個目〜2個目まででソート $a[0] = "1,あいう,3"; $a[1] = "3,かきく,2"; $a[2] = "2,けこさ,1"; ・カンマ2個目〜3個目まででソート $a[0] = "2,けこさ,1"; $a[1] = "3,かきく,2"; $a[2] = "1,あいう,3"; こんな説明で意味わかりますかね?ヒントか、こうしたらいい、みたいのだけでもいいのでお願いします。
>>54 >こうしたらいい
そもそもの配列生成段階からおかしいので最初から考え直した方がいい
>>54 「カンマ2個目〜3個目まででソート」という表現が理解しづらいのだが。
求める結果を見る限り、カンマで区切られたフィールドの1〜3番目のどれかでソートしたい、でいい?
であれば、usort を使って、自前の比較関数内で
explode で分解、指定のフィールド番号の値を取得、取得した値を比較
すればいいのでは。
取得するフィールド番号はグローバル変数にでも入れるしかないかな。
カンマで区切るのではなく、多次元配列にした方がいい気がするのだが不都合でもあるのかな。
<?php print '<?php print \"PHP\"; ?>'; ?> 『<?php print "PHP"; ?>』を表示させたいのですがうまくいきません。 どうすればいいですか?
\"の\がいらないような気配。
&lt;とか&gt;とかそんな次元の話だろ。馬鹿らしい。
>>58 <?php
print '<?php print "PHP"; ?>';
?>
//ここがメインで switch($mode){ case '$data->Name': //一応仮に書いてますがこれじゃダメでした $data->Name(); break; default: break; } //ここは別のユーザー関数 while($data = mysql_fetch_object($GLOBALS["dbexe"])) { print " <TR>\n"; print " <TD><a href=\"$script?mode=$data->Name\">$data->Name</a></TD>\n"; print " <TD>$data->date</TD>\n"; print " <TD>$data->time</TD>\n"; print " </TR>\n"; } function $data->Name () { 〜〜〜〜〜〜 } こんな感じの while文で取ってきた$data->Nameを元にリンクを作ってそこに飛ぶと$data->Nameで取ってきた名前だけの物を表示させようとしてるのですが、 while文で回してるためリンクは作れても$data->Nameが変わっていくのでちゃんと変数を渡せません。 $data->Nameは100種類くらいあってスイッチ文に100個ズラズラ名前を並べるのもさすがにメンド臭いのですが、どうやったら解決できますかね?
65 :
54 :2005/08/09(火) 17:01:23 ID:???
>>55 ー57
レスありがとうございます。言いたいことは
>>57 のとおりです。
やっぱり
>>57 みたいな方法しかないですよね。なんかスマートにできないかなーと思ったもので。ありがとうござます。
66 :
54 :2005/08/09(火) 17:05:22 ID:???
>>57 それもありですけど他の方法もあれば知りたかったので。レス忘れてしまってスマソ。
>>64 流し読みでは意味がわからんが・・・
ひとまず、マニュアルの「可変関数」の項目を読め
>>64 やりたい事はこういうことかな
function hyouji($mode) {
echo $mode;
}
if (!empty($_GET['mode'])) hyouji($_GET['mode']);
69 :
54 :2005/08/09(火) 17:36:54 ID:???
あぁ、なんかレスアンカーわけわからん。ゴメス。
osCommerceのソースコード読んだが、汚いソースコードだね。 もうちょっときれいに書いてもらいたいね。
71 :
nobodyさん :2005/08/09(火) 21:39:57 ID:KNgHkL21
73 :
nobodyさん :2005/08/09(火) 21:43:30 ID:KNgHkL21
Σ(゚Д゚;エーッ! 質問スレじゃないの?
RSSパースしてゴニョゴニョやってるんだろ
75 :
nobodyさん :2005/08/09(火) 22:52:24 ID:KNgHkL21
知らねーよボケ 自分でやれや
77 :
77 :2005/08/10(水) 00:18:04 ID:Yaj8EMvt
ちょっと悩んでいるのでアドバイスお願いします。 1週間分のシフト表を追加するスクリプトを作っているのですが、 すでにMySQLのテーブルは用意してあり、サンプルデータも入れてあります。 そのデータから指定日(曜日)のシフト表を画像で出力する.phpも作成済みで、動作も問題ないようです。 あとは新規登録用の.phpを用意するだけなのですが、 入力する情報としては「時間」「作業種類」「場所」の3種類で1日10〜30件ほどで、 1週間分の情報を1度にブラウザで入力させるとなるとかなり長いページになってしまいそうなのですが、 以下どちらのやり方を選択すべきでしょうか? 1. いろいろとラクだから1度に全部入力させてもいい 2. やはり1日ずつ入力させたほうがよい
78 :
77続き :2005/08/10(水) 00:22:52 ID:Yaj8EMvt
また、1日ずつ入力させるとしても、最終的なDBへの登録は1週間分をまとめて行いたいのですが (途中で入力をやめたときにそれまでに入力した分も反映されないようにしたい)、 複数ページに分けて入力した情報をまとめてDBへ登録する処理をするとき、 以下のどちらを選択すべきでしょうか? 2a. セッション変数に格納してDB登録時にセッション変数から削除する 2b. DBに仮登録用テーブルを作っておいて、最後にまとめてそのテーブルから本命のテーブルに登録する セッション変数を利用するほうがお作法的にはいいような気がするのですが、 途中で入力をやめたときにそれまでにセッション変数に格納された分を削除できないため 無駄が生じるのではないかが心配です。 また、確認用の画像生成もすでに作成した画像生成用.phpを再利用できるのでラクなのもあります。 このままでは2bを選択しそうな勢いなのですが、セッション変数を利用すべき、 あるいは他のやり方を選択すべき理由がありましたら教えてください。 よろしくお願いします。
本家マニュアルのasort()のページを見ると asort($fruits);のあとにreset($fruits);を実行しているのですが、 reset()はどういう効果があるのかが説明文を見てもよくわかりません。 ためしにasort()の説明にあるスクリプトからreset()を除いて実行しても同じ結果がでてくるようなのですが、 reset()は何のために必要なのでしょうか?
>>77 一日分ずつ入れて、途中でやめてもそれまでの入力を反映させたいっていうのであれば
その都度insertするのと変わらないんじゃ・・・
あ、文章読み間違えてた。 それまでの入力は反映させ「ない」ですね。 セッション使えるならセッション使った方がいいかと。 仮登録用のテーブルをどうしても使わないといけない理由 (バカ上司からの注文とか、よくありますね)が無ければ プログラム側でカバー出来るのだから、無駄なテーブルは 作るべきではないと思う。
82 :
64 :2005/08/10(水) 07:46:52 ID:???
>>67-68 <a href=\"$script?mode=hoge&name=$data->Name\">$data->Name</a>
にしてスイッチ文にhogeだったらを追加したらいけました。
ありがとうございました。
83 :
nobodyさん :2005/08/10(水) 09:51:01 ID:aRxpvYvh
拡張子.htmlや.cgiでもPHPとして動作させる方法教えてください。 前にどこかで見たんですが、検索ワード忘れて見つけられません。
あと.jpgも使いたいです。 携帯だと画像出力しても.phpだとだめとかあるんで。
>>83 Webサーバーの設定です。
Apacheだったら、httpd.conf
>>83 web鯖が何か書いてないけど、適当にapache2あたりで。
phpのマニュアルのインストールのページを見てみる。
どうやら、AddType application/x-httpd-php .php つーのをhttpd.confに付ければphpの関連付けができるらしい。
apacheのマニュアルを見てみる。addtypeの項目を探す。
AddType MIME-type extension [extension] ... となっているので、一行で複数の拡張子を設定できるようだ。
「コンテキスト(どこで設定できるか)」には、サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess とあるので、
ほとんどどこでも設定できるらしい。
「上書き」にFileInfoとあるので、htaccessを使う時にはそれを許可しておく必要があるようだ。
87 :
84 :2005/08/10(水) 10:09:23 ID:???
88 :
84 :2005/08/10(水) 10:19:43 ID:???
apache1.3でAddType application/x-httpd-php .jpgをhttpd.confに記述したらできましたありがとうございます。
PHPの処理時間を計測して、その結果を最上部に表示させたいのですが、 できますでしょうか? require_once "Timer.php";//クラスのロード $timer = new Benchmark_Timer; $timer->start(); for($i=0;$i<20;){ $i++; print "{$i}回目 計測中...<br>"; } $timer->stop(); $profile = $timer->getProfiling(); echo "<h1>処理時間 {$profile[1][diff]}秒</h1>"; //結果表示
>>89 ページの内容をechoやprintで出力していると、一番最後に実行する処理時間の表示が必然的に一番下になってしまう。
それを一番最初に表示できるようにしたいってことかな?
いくつか方法があると思うけど、
・ページの内容を変数に保持していって、最後に出力する。
・ob_*を使ってバッファに溜め込んでおき、最後に出力する。
・テンプレートエンジンを使って、viewを独立させる。
>>90 ありがとう御座います、参考になりました。
PHP で列挙型を扱うには、連想配列で代用するしか方法はありませんか?
94 :
nobodyさん :2005/08/10(水) 12:55:32 ID:GX2p4p8d
すいません。質問です。 整数をそのまま負数にする関数ってありますでしょうか? 例えば、1を-1に。2を-2という風にです。調べたんですが、言葉が 悪いのか見つけることが出来ません。どうかお願い致します。
>>94 えーと、、 -1 を掛ければいいんじゃないでしょうか?
96 :
nobodyさん :2005/08/10(水) 13:07:32 ID:pwCfG7c4
print_rの出力を文字列として変数に入れる方法を教えてください
>>96 マニュアルのprint_rのページを参照
>>96 多少、print_rと形式が異なっても良ければ$output = var_export(対象変数, true);って方法もある。
>>95 質問者が曖昧だからなんとも言えんが、
それだと負の整数の場合、負数が取れないと思う。
でも考え方はそれだよな。
101 :
94 :2005/08/10(水) 15:03:46 ID:???
ありがとうございます。-1をかければとりあえず整数が負数に なりますね。助かりました。こんなことも気付かないなんて・・・ 本当にありがとうございました。
前にも書いたんだけど半角スペースってあったほうがいいの?クセで全部左詰めなんだけど。
>>103 インデントのことならあったほうがいい
ないと見難いし
某所のPHPソースなのですが $buf = _sendcmd("USER $user"); アンダスコアは何を意味しているのでしょうか?
106 :
105 :2005/08/10(水) 16:38:52 ID:???
自己完結しますた。 すんませんでした。
107 :
103 :2005/08/10(水) 17:22:04 ID:???
>>104 そっかー、空けるクセをつけるようにするよ。ありがd。
>>106 自己解決したなら結果を言ってくれ。
まぁ、ただの関数名だったというオチだろうが。
109 :
nobodyさん :2005/08/10(水) 18:05:04 ID:ZswK9Ztx
レッツPHPのコードはperlくさくて俺は嫌い。
元perl使いだから仕方ない。 意外と元コボラーが綺麗なソースを書く。
112 :
コボちゃん :2005/08/10(水) 19:55:25 ID:???
呼んだ?
呼んでません。消えてください
114 :
nobodyさん :2005/08/10(水) 20:36:36 ID:Qi8Z/vaG
sendmailで送ったメールって相手のPOP3サーバー何らかの理由(落ちている等)で受け取れなかった場合 送ったメールはどうなる?鯖の設定によって違うのかな…?
>>114 通常、何日間か再送を試みて規定の日数を過ぎても送信できなければ送信者にエラーメールが返る。
規定の日数が何日かは自分とこのSMTPサーバーの設定次第。
ちなみに相手のPOP3サーバー→相手のSMTPサーバーの間違い。
116 :
114 :2005/08/10(水) 20:53:02 ID:???
トンクス >送信者にエラーメールが返る。 Form:あてにエラーメールが送られるって事ですか?
envelope-from宛。 PHPに関係無い事にそろそろ気づいてくれないかな。
画像アップローダ作りたいんですけど、 ファイルアップの際、重複しないファイル名をサーバで生成したいですが いい方法はありますでしょうか。
>118 time() で良くない?
日記スクリプト組んでるけど、鯖のセーフモードでつまづきまくり。 ・ mkdir で 200508 ディレクトリを作って、 chmod で(ry → セーフモードだと GID とやらが(ry ・ 200508.php を作って(ry → よくわからんが鯖だと生成できず なーんか良い方法ない? ちなみに XHTML1.1 吐きたいんだが。
PATHINFO
122 :
nobodyさん :2005/08/10(水) 23:47:35 ID:Rk78NnxS
>>119 img79GiKz.jpg
こんな感じで英字を交えてネーミングしたいです。
>>122 最初からそう書け。
マニュアルのuniqidを参照。
124 :
119 :2005/08/11(木) 00:25:06 ID:???
>122 あとから条件出すなバカ。 uniqid('img') . '.jpg';
125 :
120 :2005/08/11(木) 00:25:26 ID:???
>>121 Pathinfo を・・・どうするの?
いまいちピンと来ないや orz
Login.html PHP1.php PHP2.php Frame.html(PHP1.phpとPHP2.phpが含まれているフレーム) というファイルがあり、Login.htmlに記述してあるリンクからFrameにジャンプするのですが、 Login.htmlからデータを渡す場合にFrame.htmlにはデータを渡せても、PHP1.phpやPHP2.phpにはデータを渡せません。 どうすればデータを渡せるのでしょうか?
>>120 ヒント 質問を略すようなやつに答えるヤツは(ry
>>126 どんなデータをどんな方法で渡したいのかが書かれてないよ。
エスパーに囲まれて生活されている方ですか?
129 :
nobodyさん :2005/08/11(木) 00:57:53 ID:gDfeJ192
>>123 >>124 あんたらすげーよ。 もれこんな関数知らなかったわ。
サンクスコ!
アディオス!
>126 frame.php >127 ハゲド
131 :
120 :2005/08/11(木) 01:00:51 ID:???
>>127 うは、スマソ。
・ mkdir で 200508 ってディレクトリ作って、 chmod で 11.dat を作る。
・ 200508.php を作って、 chmod で 11.dat を作る。
こんな感じ。
ってか、他に思い浮かばない。クオリティヒクス。
132 :
126 :2005/08/11(木) 01:13:29 ID:???
>>128 Frame.htmlにジャンプした時にPHP2.phpにデータを渡したいです(たとえばフレーム内のPHP2.phpにログイン名を表示するとか)。
PHP2.php側では$_GET[]などでデータを取得したいと考えているのですがどうすればいいのでしょうか。
>>130 さんの言っているとおり、Frame.htmlをFrame.phpに変えて何か記述すればデータを渡すことができるのでしょうか?
>>132 ---Frame.php---
<?php
$data = $_GET['data'];
echo <<<EOD
。。。略
<frame src="PHP1.php">
<frame src="PHP2.php?data=${data}">
EOD;
?>
>131 つーか、どうやってchmodでファイルを作るのか教わりたい。 fopenじゃないのか。その部分のスクリプト晒してみ?
135 :
120 :2005/08/11(木) 01:55:47 ID:???
>>134 えーと、関数にしてる。
ってか、 act.st の汎用ライブラリを借りた。
// ファイル作成
function create_file( $File ){
if( file_exists( $File ) ){
return FALSE;
} else {
touch( $File );
chmod( $File , 0606 );
}
}
ローカルだとこれで出来ちまうんだが・・・。
それtouchだから。ファイル作ってるの。
137 :
120 :2005/08/11(木) 02:08:57 ID:???
>>136 な、なんだってー(AA略
吊ってくる。
ディレクトリ・ファイルが作成出来ないのはセーフモードとか関係ない気がしてきた。
・・・鯖の設定とか?全くわからん。寝る。
答えてくれたヤシdクス。
138 :
134 :2005/08/11(木) 02:10:46 ID:???
>135 半分寝てるっていうか寝るわ。がんばれ。 // ファイル作成 function create_file( $File ) { $crf = fopen($File, "a+"); if(!$crf) { return FALSE; } return TRUE; }
phpスレから移ってきました 初歩的な質問で申し訳ないんですけど、 includeとクラスのインスタンス作って使うのとどう違うんでしょうか?
意味がわからん
>>137 作りたい場所のルートディレクトリはパーミッション777にしてるんだよな?
もしくは、所有者がPHP実行者になってるのかどうか。
例えば、
/var/www/html/blog/200508/11.dat なら、
/var/www/html/blog ディレクトリが777か、
もしくは、PHPを実行するユーザーによって作成されたディレクトリである必要があるぞ。
>>139 逆に質問するが、どう違わないんでしょうか?
143 :
139 :2005/08/11(木) 06:56:07 ID:???
ワケワカラン それは違わなくなくなくなくないのだよ。
145 :
nobodyさん :2005/08/11(木) 08:17:49 ID:V306QgIe
146 :
nobodyさん :2005/08/11(木) 08:20:30 ID:V306QgIe
間違えて押してしまったorz
>>139 日本語とoopをもう少し勉強してきて下さいな。
>>139 質問が意味を成してないからなぁ。何が聞きたいのか全くわからない。
エスパー的回答をするとすれば…
include を用いるのと クラス を用いるのの違いは、
変数&関数のスコープが違う。
クラスファイルだってincludeして使うんですけど・・・
# requireでもいいけどさぁ
148 :
139 :2005/08/11(木) 10:10:10 ID:???
>>144-146 スマソ
>>147 エスパーさん、ありがとう。なんとなくわかったかも。
Javaのimportとは役割が違うんですね
includeは呼び出し元ファイルに直接くっつけるイメージなのかな
ソノトーリ
>>148 include文のところにincludeしたファイルの内容が展開されると考えていいと思われ。
他の言語知ってるなら、まずマニュアル参照。
PHPのマニュアル程読みやすいマニュアルはあんまりないと思うよ。
Javaのimportとインスタンス使うってのも根本的に違う希ガス・・・ まあいいや。本人納得したようだし。
>>139 include=内部エラーおきてもスキップして動き続ける
require=内部エラーおきたら警告出してとまる
くらいで
インスタンスは、メモリ空間上に展開されるアレでクラスの中に本体がある。 Newを宣言して呼び起こさないといけない。 includeは150のいうとおり、ソースファイルがくっつくって感じ。 使う上での違いをいえば、 インスタンスはNew宣言文が必要で includeは不要。
http://phpspot.net/php/pg%8AO%95%94%82q%82r%82r%82%F0%93%C7%82%DD%8D%9E%82%DD.html を参考に下記のようにしたのですが、PHP 4.2.3では取得してprint_r($values);すると日本語が文字化けしてしまいます。
回避することは可能でしょうか?
// 外部RSSを簡単に読み込んで出力するルーチン
$RSSURL = "
http://www3.asahi.com/rss/index.rdf ";
$buff = "";$fp = fopen($RSSURL,"r");while ( !feof($fp) ) { $buff .= fgets($fp,4096);
}
fclose($fp);
// パーサ作成$parser = xml_parser_create();
// パーサオプションを指定
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
// パース実行、連想配列にパース結果代入
xml_parse_into_struct($parser,$buff,$values,$idx); // パーサ開放xml_parser_free($parser);
print_r($values); // 配列を出力してみる。
>>155 そのRSSがUTFみたいなので、とりあえずprint_r($values)の前に下記を入れてみてはどうだろう。
echo '<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8"></HEAD>';
157 :
モンモ :2005/08/11(木) 15:51:55 ID:nF0gNBis
SoundEngineを使って、一時間ある曲を編集したいのですが、最初の1分10秒までしか 編集することが出来ません。波形も、1分10秒までしか表示されていないのです。 どうすればいいのでしょうか?
開発元に聞く、かな。
159 :
155 :2005/08/11(木) 16:57:43 ID:???
>>156 やってみましたが駄目ですた・・
fopenで読み込んだ際に何か文字化け対策しなければいけないのでしょうか
>>155 ブラウザのエンコーディングを変えれば化けないで表示されるよね?
IEだったら
表示 → エンコード → 適当に色々と
上の方法で正常に表示されるのならば、
php.ini か httpd.conf か <META> か charset を適切に指定すればOK。
<? include("dcount.php"); ?> <font size=-1 color=#999999>total <?echo $total;?><br> 昨 <?echo $yesterday;?> 今 <?echo $today;?><br><br> <? include("dcount.php"); ?> <font size=-1 color=#999999>total <?echo $total;?><br> 昨 <?echo $yesterday;?> 今 <?echo $today;?><br> -------------- のように同じものを2つ続けて書くとエラーになるのはなぜなんでしょうか?
どんなエラーかも書かないのに分かるかよハゲボンタン。
164 :
161 :2005/08/11(木) 19:13:31 ID:???
すみません端折りすぎました。
ttp://php.s3.to/counter/#dcount ここのdcount.phpというアクセスカウンタを使っているのですが、
携帯とPCで別のカウントを取りたいと思い
dcount.php dcount_pc.php のように2つのphpを用意して
<? includeさせようとしたところ、
上段のphpは上手く表示されるのですが、下段が「Fatal error」というようなエラーが
サーバ内のパスと共に表示され、動作しません。
データファイルのパスなどの間違いはありません。
php内の$total $yesterday $today などの変数を書き替えれば良いのかと思いましたが、
やはり駄目でした。
同系統のphpを同一ページ内にincludeさせて表示させる事は不可能なのでしょうか?
fopen でファイルの作成に失敗するのはどんな状況?
>>164 >同系統のphpを同一ページ内にincludeさせて表示させる事は不可能なのでしょうか?
必ずしも不可能ではなくてincludeするファイルの内容次第。
dcount.phpの中でouthtmlという関数が定義されているんで、2回includeすると
この関数が2重定義になってしまうためエラーになっていると思われ。
これを修正すれば。。。という話の前に今回の場合、2回includeする必要はないのでは?
2つ目のincludeを削除して希望通りに動作するはず。
>>166 できました。ご教示頂いてありがとうございます。
携帯電話から画像をアップロードしたいのですが 以下のHTMLが利きません。 <input type="file" name="image"> (iモード、EZWEBともに) このタグのように携帯電話内の画像を選択するような ソースはないのでしょうか?
フォームにて情報を入力してsubmitした後、その先のページからhistory.backのボタンで戻ったときに フォームの内容が直前の入力がすべて残っているようにするにはどうすればよいのでしょうか? 今まで<INPUT type='button' onclick='history.back()>のボタンで戻ったときは 直前の入力内容を覚えているものと思っていたのですが、 入力項目が多数あるページを作ってみたところsubmit直後に戻った際に 入力した内容が表示されない項目があったりするのに気づきました。 (初期値valueはしていません。) 必ず直前の入力内容を戻ったときに復元させるにはセッション変数などに格納し、 それを初期値として設定しておく等の処置が必要なのでしょうか?
>>170 そう、セッションでなくhiddenで渡してもいいし
>>168 携帯でページ上からアップロードが出来るのはVodaだけ。
他はメールとか使わんと無理ぽ。
173 :
nobodyさん :2005/08/12(金) 09:04:25 ID:x1qvDSzz
多次元連想配列をその構造のままHTMLのテーブルにしてくれる関数ありませんかね
>>170 そういう動きをしたいなら普通はsubmitされた先でセッション登録だと思う。
history.back() じゃないならhiddenでもいいよね。
#個人的にはhistory.back()を仕様になんかしない方がいいと思うけど
ちなみに、ブラウザバックで戻ったときに入力値を覚えてるのは、
ブラウザがそういうおせっかいをしているだけだと思う。
178 :
nobodyさん :2005/08/12(金) 11:05:18 ID:h+1D0YJb
>>175 >ちなみに、ブラウザバックで戻ったときに入力値を覚えてるのは、
>ブラウザがそういうおせっかいをしているだけだと思う。
これって昔から不思議に思ってた。どういう仕様なんだろう?
postした値がブラウザのキャッシュに残るのかな?
部分的に消えてたりするし。
話それてスマソ
179 :
155 :2005/08/12(金) 13:46:38 ID:???
>>160 いえIEとfirefoxで日本語で使われそうなEUC,sJIS,JIS,utf-8,ISO-2022-jp,等を試しましたが文字化けしています。
180 :
170 :2005/08/12(金) 16:24:28 ID:???
>>171 ,175
レスありがとうございます。
セッション変数を使う方向でいろいろ試してみます。
ところでhistory.back()を多用するのは問題があるのでしょうか?
>>180 よく考えると、history.back()したときは、
サーバーに処理がこないんじゃないか?
セッションにデータを埋め込もうがなにしようが。
あれ?セッション使うとhistory.back()効かなくならなかったっけ?
182 :
軟式PHP :2005/08/12(金) 17:24:33 ID:???
session_cache_limiterの設定によっては効かないな。
年と月を指定したら、その月の月末の日付を取得できる関数ってありますか?
>183 こんなんでどう? $Month=8; $Year=2005; $Ts = mktime(0,0,0,$Month,1,$Year,-1); $getsumatsu = date("t",$Ts);
>>183 そんな関数は自分で作る。
翌月の1日の1日前が当月の月末の日付。
186 :
170 :2005/08/12(金) 20:14:21 ID:???
>>181 ,182 Σ(゚Д゚)
そういえばそうかも・・・。
history.back()ではなくlocation.href='input.php'でボタンを設置する必要があるようですね。
ブラウザの戻るボタンを使われたときは・・・シラネorz。
session_cache_limiterはprivate, must-revalidateに設定してるんですが、
正直session_cache_limiterの動作をあまり理解していないのでよくわかりません。
(POSTでデータを受け渡しするページで「戻る」ときの有効期限エラーを消すための方法としてどこかで見つけただけなので・・・。)
リファレンス本とか買えば細かく説明があるのかな・・・?
オブジェクトのメソッド・プロパティにアクセスする マニュアルにあるはずだが・・・矢印演算子とか言ったかな
オレもオブジェクトとかよくわかんないんだよなぁ。 その辺詳しく説明してるHPとかないものだろうか。
オブジェクト指向の話は読んでも理解しずらいと思うよ。 よく、タイ焼きの型とタイ焼きに例えて説明されることがあるけど判ったような気がする、 ぐらいで終わると思う。 こんな感じで自分でサンプルを書いて動かしながら勉強していくのがてっとり早いんぢゃないかな。 (ちなみにこのサンプルはあまりよろしくないんだけど) PHP5でマシになったとはいえ、PHPのクラス機能は貧弱なので、あまりクラスのメリットは 実感としてわかないかもしれないけどね。 class MyClass { var$MyName; function SetName($name) { $this->MyName = $name; } } $instance1 = new MyClass; $instance2 = new MyClass; $instance1->SetName('インスタンス1'); $instance2->SetName('インスタンス2'); echo $instance1->MyName . '<br>'; echo $instance2->MyName . '<br>';
オブジェクト指向をPHPで理解するなら、PHP5の〜〜と書いてある部分は脳内あぼーんすべし
オブジェクト指向って何? ↓ 色々調べる ↓ なんとなくわかったかも ↓ てきとーに使ってみるが、普通の関数とどう違う? ↓ もうちょい調べてみる ↓ なるほど便利じゃねーか! ↓ 多重継承できないことを知る ↓ オブジェクト指向って結局面倒じゃね? ←今ここ
196 :
194 :2005/08/12(金) 23:45:28 ID:???
>>195 オブジェクト指向とはなんぞやと、必死に理解しようとしてるんだよ
継承するメリットすら、あるのか判らなくなってきた
つまり、まだまだ理解できていないんだ、と思うのだ
あのー基本的な質問です。 PHPにおいて「0」と「--」って等しいことになってるんでしょうか? ただハイフン2個並べたつもりがマイナスとマイナスってことになってんのかな? if (0 == "--") print "kita-------------"; これでkita----が出力されるって・・・orz。
PHPで画像を表示させるものをつくりたいのですが、 調べても画像に関してはGDというライブラリでの作画ばかりで 調べ方が悪いのでしょうか? 既存のpngファイルを表示したいだけなのですが・・・
>>197 型変換されて0になるだけだ
===
使っとけ
200 :
nobodyさん :2005/08/12(金) 23:59:36 ID:Dcm/2S4D
>オブジェクト指向とはなんぞや 一言で言うと「設計思想」。 コーディングは2次的なものだろ。 オブジェクト指向はスピードやメモリとトレードオフで保守の簡便さ、再利用性の向上を与える。 保守も再利用もする必要のない書き捨てコードをオブジェクト指向化するのは趣味の領域。 あ、PHPならまだそのレベルに達してないから無理すんなw
>保守も再利用もする必要のない書き捨てコードをオブジェクト指向化するのは趣味の領域。 コーディングスピードが向上することもある
202 :
197 :2005/08/13(土) 00:13:40 ID:???
204 :
198 :2005/08/13(土) 00:20:03 ID:???
いあ、普通に条件分岐するようなものになる予定なんだが 画像扱ったことなくて どうやってPHPでひょうじすんだべ、と。 それでまず画像だけ表示するのを作ろうと思ったんだが、 いきなり詰まってるのです。
>>204 echo で imgタグ吐けば良いだけでは…。
206 :
nobodyさん :2005/08/13(土) 00:23:55 ID:H8OS7Q3n
変数を初期化するとすると、 ↓のうち、どちらが良いでしょうか? $var = NULL; $var = ""; その他にいい初期化方法などあったら教えてください
208 :
198 :2005/08/13(土) 00:27:06 ID:???
>>205 え?そうなの!?
うそー
直接png読んでバイナリで吐いてやらないとないのかと思ってた
やってみまつ
210 :
198 :2005/08/13(土) 00:46:40 ID:???
<img src="xx.php">ってやるなら やっぱり直接出力しかない?
>>198 条件に応じてファイル名を変えたいとかだったら単純に
<img src="{$hoge}.png">
でいいような。
何がしたいんだ?
>>210 どういう事をやりたいのかよく分かんないけど、
1. htmlを動的にphpで出力 -> <img src="<?= $filename; ?>">
2. 静的htmlからphpで画像を出力 -> html <img src="image.php?file=〜">
image.phpの中で header('Content-type: image/png"); readfile($filename);
readfile部分は他のファイル関数でも可。
213 :
198 :2005/08/13(土) 00:53:13 ID:???
>>211 htmlから imgタグでphpを呼んで、
ブラウザからは画像が表示される、という感じのやつ
214 :
198 :2005/08/13(土) 00:55:55 ID:???
あ 読んで出力までする関数があるんですか phpってすげえと思った
215 :
198 :2005/08/13(土) 01:08:58 ID:???
>>214 別にphpでなくても表示するだけならこんだけでできるぞ。
#!/bin/sh
echo "Content-Type: image/png"
echo
cat "/path/to/image.png"
まぁ、phpでも表示だけなら特別な関数を使わなくってもいいってこと。
シェル便利ダナー
登録したユーザーを対象としたサイトを作っているのですが、 不正なアクセスを防ぐべく、パスワードを一定回数以上間違えたら そのIPアドレスからの接続を一定時間拒絶するような処理は可能でしょうか? あるいはログインページの時点でセッションを開始しておき、 セッション変数に間違えた回数をカウントさせて、 上限を超えたらログインできなくさせる、というやり方でもできそうな気がするんですが、 ブラウザを終了させるだけでまたトライできるってのがどうも不安が・・・。 何かいい方法はないものでしょうか。
219 :
218 :2005/08/13(土) 09:14:59 ID:???
ちなみにログイン処理は 1. ユーザー名・パスワードを入力フォームに入力 2. DBに照合し1件ヒットしたらログイン処理・それ以外ならログイン画面にリダイレクト 3. セッション開始・セッション変数にユーザー名を格納・トップページにリダイレクト こんな感じです。 よろしくお願いします。
IPアドレスで制限ということであれば、セッションを使わなくてもIPアドレスを基準にカウントすればいいんじゃないでしょうか?
>>219 セッションはクライアント依存だから、信用できないクライアントが
前提ならそういう目的に使うべきじゃない。
サーバー側で bad list に期限付きのエントリを保存するとかしないと。
認証失敗のたびにIPアドレスを bad list に追加し、bad list に一定回数以上
出現するIPアドレスならばログイン拒否とか。
なぁなぁ PHPってなんでこんなに速いの? perlが遅くてとりあえずphp化したら同じ物を4つ動かしても(仕事で使う集計もの)それ以上に速い気がする
>>222 CGI版Perlとモジュール版PHPを比較してないか?
レンタルサーバですがphpがソースからでなくrpmで入れてらしいのですが phpのバージョンをアップデートする時に rpm -Fvh [filename] のような記述をみかけましたがこの[filename]の箇所は既存の.rpmをかくのでしょうか? それとも目的の新しいバージョンの.rpmでしょうか?
>>224 後者。質問する前にman rpmしような。
っていうかパッケージは入手済みなのか?
ともかくスレ違いだよ。
>>226 レスありがとうございました、rpmはこれからrpmfind.netでもいってこうかと。
スレちがいかなーと思いつつもphpのインスコネタだったんで…。誘導先は自宅鯖あたりですか?
ちょっとしたcmsのシステムを作ったのは良いけど、当初漏れの会社で、手配したレンタル鯖にドメインを割り当ててそこで運用するってことになってた。 ところが、もろもろの事情から先方の指定(先方がftpに入れちゃうとこ)で運用する事になった。 このままだと、結果的にphpのソースそのまま渡すのと同じことになっちまうんですが、こんなとき皆さんはどうしてますか? もっとも、漏れのスパゲッティなソースなど誰が見てもわかるわけない、というか解る気も無くすけどなw プログラムのコアの部分だけ、別ファイルにして、別の鯖に置いちゃうとかあり?
だめだねぇ。。そういう時は、 ソースを暗号化したいんですが、できますか? 仕事なので冷やかしの回答は遠慮願います。 って感じに質問しないと。
>>228 先方の会社のために作ったプログラムなら
ソース毎あげるのが当たり前なんじゃないの?
「ソフトを売る=ソースも渡す」ってわけぢゃないでしょ。 いや、そういう仕事してるわけじゃないから知らないけど、 パッケージのソフト買ってソースがついてきたことってないし。
233 :
nobodyさん :2005/08/13(土) 17:34:16 ID:H8OS7Q3n
ところで、スパゲッティソースを、やきそばソースと言ってもいいのかね?
別鯖に置け
>>231 製品とソースは別物だよ。
だから予め契約時にはソース納品ありかどうかをきちんと決めておく。
当然ソース納品の場合は見積もり金額が大きく変わってくる。
今回の
>>228 の場合はその辺の契約をきちんと交わしていなかったんだとすれば
泥沼化する可能性もあるね。担当者しだいだけど。
>>233 スパゲッティソースはトマトベースだろ
>>228 プログラムそのものを別鯖におく
先方のサーバのサイトから、リダイレクトして、自鯖のプログラムが
動作するようにする
Urlアドレスが変わるから、先方が嫌がるかもしれないけど
237 :
nobodyさん :2005/08/13(土) 17:58:28 ID:js/pUsHi
$string="abcdefg"; とあったとして、$stringの上位1ビットを削除したいんですけど、 どすれば良いんでしょう。
こんなことはやったことがないけど、自分の管理下の鯖にコアの部分のphpを置いて、それを客鯖からinclude出来ないかな?
>>231 まぁ、その会社のために作ったには違いないけど、後々の修正やメンテ含め、今後の儲けにするハラもあったんで。
例えば、その会社と喧嘩した場合、うちと取引がなくなってもそのシステムは動き続けちゃうでしょ?
それは面白くない訳です。それで、よその会社が、システム運用を引き継いだりした日にゃ・・・もっとも、漏れの最強スパゲッティーソースが読めればの話。
>>235 先方も、別にそんなに深い考え(ソースを自分の手元に押さえたい)で、こういう事を言いだしたわけではないんですよ。
万一、プログラムに関する部分は、他の人が一文字でも手を入れたら一切サポートしないですよ。
>>236 自分の管理下の鯖に、システム置いて、客の鯖で、サブドメインつけて、それを自分のとこに飛ばしてもらうのもありかな。
でも最初に書いた「自分の管理下の鯖にコアの部分のphpを置いて、それを客鯖からinclude」ってのがよさそう。
substr
小数点以下を取得する関数ってありませんか? 5.12 → 0.12 18.3 → 0.3
>>238 客がだまされたと感じなければ別にいいと思うけど、
そういう客にトクにならない皮算用してると自分の知らないところで悪い噂が立ったりするよ。
前の開発会社が気に食わないからとかでシステム運用を引き継いだりすると、
たいていすっごい保守性が悪いコードなのはなぜだろうとよく考える。
保守コストがかさむとかの問題だろうか。
まぁ汚い方が再開発のいいきっかけになるから文句は言いません。
一回失敗しているところの方が何かとスムーズに話が出来るしね。
>>240 $a = 5.12;
echo $a - (int) $a;
とかでは?。べつに小数点以下を切り捨てる関数を使ってもいいけれど。
242 :
nobodyさん :2005/08/13(土) 22:14:23 ID:UF4ziiZ+
>>240 普通に切り捨てた数を引けばいいだろ。
くだらなすぎ。そういうスレかorz
質問させて下さい。 サーバへアップする前に、ローカル環境にて開発・テストを行っています。 ローカル環境はWindowsにApache2を入れ、PHP・MySQLを入れています。 複数のPHPのバージョンを切り替えたいのですが、簡単な方法は無いでしょうか? PHPのDLLやINIをWindowsディレクトリやシステムディレクトリに入れる事無く、 起動することが出来れば(たとえば環境変数の切り替えるだけとか)、いいなと思っているのですが、 何か良い方法ってありませんか?
俺が教えて欲しいもんだ・・・ XAMPPで5と4の切り替えが出来るけど
>243 coLinuxやVMware/VirtualPC上にLAMP環境作るのが一番簡単じゃない?
246 :
237 :2005/08/14(日) 02:39:25 ID:???
>>239 ありがとうございました。substr($res,1)でいけました!
何度も質問ばかりで恐縮なんですが、特定の文字列があり
任意の文字移行切り捨てたい場合、どすればいいんでしょうか?
例えば、HIJ移行を切り捨てたい場合
$string="abcdefgHIJklmn";
を、
$string="abcdefg";
としたいんです・・・。昨日から本読んでるですがどうしてもわから
ないです。
>>246 // 方法1 (今回みたいな単純なものはこれがお勧め)
$pos = strpos($string, 'HIJ');
if ($pos !== false) $string = substr($string, 0, $pos);
// 方法2
if (preg_match('/(.*?)HIJ/', $string, $matches)) $string = $matches[1];
// 方法3
$string = preg_replace('/HIJ.*/', '', $string);
まだまだイパーイあるよ
>>228 Zendとかその他の暗号化ツールを買って使うのが一般的な方法でないの?
価格は結構するけど。暗号化サービスだけ提供もされてる。ただこれも高価。
色々調べてみたら? 他のサーバからincludeは薦められん。
>>243 php_flag zend.ze1_compatibility_mode On
>>243 参考になるかどうか判らないけど、漏れがやっている方法。ちょっと長くなるけど。
切り替えているのは PHP4.3.10 と PHP4.4.0 ね。
1)4.3.10 と 4.4.0 を別ディレクトリにインストール。
2)4.3.10 と 4.4.0 用の httpd.conf をそれぞれ httpd-4.3.10.conf と httpd-4.4.0.conf として作成して
LoadModule 行の php4apache2.dll のディレクトリを変更。
3) コマンドプロンプトを開いて Apache のサービスを2つ登録。
<Apacheディレクトリ>\bin\apache -k install -n "Apache2-PHP4.3.10" -f <Apacheディレクトリ>\conf\httpd-php4.3.10.conf
<Apacheディレクトリ>\bin\apache -k install -n "Apache2-PHP4.4.0" -f <Apacheディレクトリ>\conf\httpd-php4.4.0.conf
4) php.in と php4ts.dll を Windowsディレクトリにコピー。コピー時にそれぞれのバージョン用に名前を変更しておく。
php.ini → C:\Windows\php-4.3.10.ini、C:\Windows\php-4.4.0.ini
php4ts.dll → C:\Windows\System32\php4ts-4.3.10.dll、C:\Windows\System32\php4ts-4.4.0.dll
5) それぞれの起動用バッチファイルを作成。
--- apache2-php4.3.10.bat ---
net stop apache2-php4.3.10
net stop apache2-php4.4.0
copy /y c:\windows\php-4.3.10.ini c:\windows\php.ini
copy /y c:\windows\system32\php4ts-4.3.10.dll c:\windows\system32\php4ts.dll
net start apache2-php4.3.10
--- apache2-php4.4.0.bat ---
net stop apache2-php4.3.10
net stop apache2-php4.4.0
copy /y c:\windows\php-4.4.0.ini c:\windows\php.ini
copy /y c:\windows\system32\php4ts-4.4.0.dll c:\windows\system32\php4ts.dll
net start apache2-php4.4.0
apache2-php4.3.10.bat を実行すれば PHP4.3.10 で、apache2-php4.4.0.bat を実行すれば PHP4.4.0 で起動する。
なんかスマートじゃないよね。 俺も複数バージョンの切り替えって興味あるんだけど、 PHPのdllsやExtensionとかのDLLはクラスパスで通せば認識してくれるから、 問題はphp.iniとphp4apache2.dllの場所をどこかで指定して、 それを読み込ませればいいんだよな・・・ 頭でわかっていても解決方法はわからん。
PCのパワーに余裕があるのなら、複数のapache(+php)を立ち上げるのも手だね。 基本はポート番号でphpのバージョンを切り替える。 使いやすいように、mod_writeやmod_proxyを使って拡張子で各apacheへ振り分ける フロントエンドのapacheをたてれば手軽さ倍増かと。
お前らに聞きたいんだが、なんでそこまでしてWindows+ApacheでPHP動かしたいんだ? >245でいいじゃん? 実行環境がWindowsServerとかなのか?
>>249 >他のサーバからincludeは薦められん。
その理由とは?
また、そこらへんの事について言及した参考サイトなどあれば教えてください
>>255 鯖へアップする前の開発とテスト用。
coLinuxやVMWare/VirtualPCだとPHPのテストの為に、
複数のOSをHDDに入れなきゃいけない。(無駄が多い)
写メールBBSで、うpファイル名を時間+拡張子したいのですがうまくいきません pop.phpの if (!$original) $filename = time()."-".$filename; } をいじくればいいと思うのですが解る方教えてください。
PHPで ◎ ◎ ○ ○ ○ ○ ○ このようなラジオボタンを作ることはできるのでしょうか? 一段目の二つ目のラジオボタンを選択すると、二段目の上から四つ目のラジオボタンも自動的にチェックされます。
>>258 写メールBBSとやらをググって探すのが面倒。ダウンロードして解凍して回答するのが面倒(クスクス)。
$filename = time()."-".$filename;
つーのは、この行以前に値が入っている$filenameという変数の先頭に、
time()で取得できるunixタイムスタンプと「-」という文字を連結し、
それを新しく$filenameの値とする事を意味する。
その部分でそういう処理をすることを望んでいるのかね?
>>259 PHPは鯖側で動作するので、
ラジオボタンを選択してsubmitボタンとかで鯖に送信し、
希望するチェック状態(<input type="radio" 〜 checked>でチェック状態になる)のhtmlを出力する。
クライアント側(ブラウザ)でやりたい場合は、JavaScriptを使う。
>>259 それはHTML+javascriptでやることだ
$result1 = mysql_query("SELECT * WHERE type='0'") で$resultに結果を格納した後に、さらに$result1の結果を反映している状態で mysql_query()を使って結果を出すことは可能なのでしょうか?
264 :
252 :2005/08/14(日) 17:10:12 ID:???
先の方法(
>>252 )で PHP5 も同様に切り替えていたんだが。。。
PHP5 では php5ts.dll のコピーはしていないことに気付いて調べてみたら単に Apache モジュールと
同じディレクトリに置いておけば良かった模様。
また Apache の PHPIniDir ディレクティブで php.ini の置き場所を設定できることを発見したので先の方法を訂正。
>>253 さんの言うとおりスマートぢゃないのは変わらないけどね。また長くなって申し訳ない。
例として PHP4.3.10 を c:\php4.3.10、PHP4.4.0 を c:\php4.4.0 にインストールしたとする。
1)4.3.10 と 4.4.0 用の httpd.conf をそれぞれ httpd-4.3.10.conf と httpd-4.4.0.conf として作成して以下を設定。
LoadModule php4_module php4apache2.dllのフルパス
PHPIniDir php.iniが存在するディレクトリ
2)それぞれのバージョン用の php4ts.dll を c:\php4.3.10\sapi、c:\php4.4.0\sapi にコピー。
3) コマンドプロンプトを開いて Apache のサービスを2つ登録。
<Apacheディレクトリ>\bin\apache -k install -n "Apache2-PHP4.3.10" -f <Apacheディレクトリ>\conf\httpd-php4.3.10.conf
<Apacheディレクトリ>\bin\apache -k install -n "Apache2-PHP4.4.0" -f <Apacheディレクトリ>\conf\httpd-php4.4.0.conf
4) それぞれの起動用バッチファイルを作成。
--- apache2-php4.3.10.bat ---
net stop apache2-php4.3.10
net stop apache2-php4.4.0
net start apache2-php4.3.10
--- apache2-php4.4.0.bat ---
net stop apache2-php4.3.10
net stop apache2-php4.4.0
net start apache2-php4.4.0
apache2-php4.3.10.bat を実行すれば PHP4.3.10 で、apache2-php4.4.0.bat を実行すれば PHP4.4.0 で起動する。
>>254 さんが言っている複数の Apache を異なるポートで動作させる場合も1)、2)は使えるはず。
php.iniを指定できるなら、Apacheを複数登録する必要あるのかなぁ・・・ httpd.confで、複数のバージョンの定義をしておいて、使わない奴はコメントアウトしておいて、 切り替えたい時に、コメントアウトする場所を変えて、Apache再起動でよくない?
266 :
从'ャ') :2005/08/14(日) 20:17:01 ID:???
ちくしょー ローカルで試したらMySQLにつながらんねー Can't connect to MySQL server on 'localhost' (10061) mysql.exeでMySQLに繋がるし、借りてる無料スペースだと動くので 何かが悪いのだろうけど apacheもPHPもはじめたばかり、何が悪いかわからん。 WindowsXPです。
>>266 まさかローカルからレンタルスペースに置いてるDBへ接続するのに
localhostで指定してる?
外部からだとipなりで繋がないと繋がらないべさ
268 :
从'ャ') :2005/08/14(日) 20:30:52 ID:???
ローカルにもMySQL入れました。 はじめたばかりの俺が 本とかみながら設定したので何か不足があるのだろうけど わからん。 MySQL Server Instance Config Wizard いじってたらMySQLサービスが起動エラーになるようになってしまった。 悪化!
PHPという訳じゃないんだけど質問が。 HTMLのタグの属性とCSSってどうやって使い分けるのがベストなの? タグで属性指定するものは、大抵CSSやSTYLE属性で指定出来る。 デザイン系のHPとか見ても、両方がごちゃまぜに使われてる場合が多い。 この属性はCSSやSTYLEで指定すべきとか タグでこの属性を設定するのは推奨できないとかの指針みたいなのってどっかに公開されてないの?
>>268 日記はジャポニカ日記帳へ。
質問があるなら的確な状況説明を。
>>269 web制作板があるでよ
271 :
从'ャ') :2005/08/14(日) 21:19:22 ID:???
my.iniのバックアップがあったのでサービスは復活した。 mysql -u xxxx -pyyyyで使えたのはmysqlパイプ接続だかららしいと推測。
272 :
从'ャ') :2005/08/14(日) 21:30:45 ID:???
MySQL Server Instance Config Wizard を使うとmysqlサービスが起動できなくなるので、 バックアップを参考に手動でmy.iniをいじってpipeをportにしたら PHPのmysql_connectが成功するようになりました。 ありがとうございました。
273 :
nobodyさん :2005/08/14(日) 21:40:31 ID:BEaEv0Pj
初歩的な質問になりますがお許しください。 たとえば通信販売などで、WEBから注文をもらい、その顧客のデータを データベース化するというような一連の流れをおこなうにはphpというものとSQLというものを勉強すれば作成可能でしょうか?? WEBフォームを作成し、顧客が入力したデータをデータベースとして保存したいのですが。
>>273 まぁPHPが一番簡単だろうね。なんでもいいよw
PHPを勉強しようと思い、自分のWindowsXPのパソコンにXAMPPってやつを入れました。 説明サイトを見つつ設定をして、実際にPHPを入れたらちゃんと動いたのですが、 エンコードがなぜか西ヨーロッパ言語(ISO)ってやつになっちゃうんです。 <META>タグで文字コード指定しても文字化けするし、ブラウザのエンコードで戻しても、 リロードするとまた西ヨーロッパ言語に戻ってしまうのです。 最初から文字化けしないようにするにはどうしたらよいのでしょう…
>>273 単純に顧客データをデータベース化したいというなら、
PHPやSQLを勉強すればいい。
ただし、現在は個人情報保護法がある事を忘れずに。
適切にセキュリティやルールを設けないと個人情報保護”法”というように、
違法となるのでご注意を。
277 :
nobodyさん :2005/08/14(日) 22:47:18 ID:4hBW2DKT
279 :
273 :2005/08/14(日) 23:10:10 ID:BEaEv0Pj
>>274 ,276
ありがとうございます。
最初はこれを見とけみたいなサイトとかありますか?
初歩を勉強したいのですが。
280 :
从'ャ') :2005/08/14(日) 23:21:13 ID:???
今度はローカルで実行すると文字化け 無料スペースだと問題なし 質問をするスレ ↓ ?遡笋鬚?る たぶんまたMySQLの設定が悪いんだと思うが、 なんだろう?
>>280 一連のカキコ見たけど、独り言を言って自己レスしているだけにしか見えないんだが。
助けて欲しいのなら環境等も含めて状況を具体的に書きなよ。
夏休みの日記だったらさっさと消えてくれや。
282 :
275 :2005/08/14(日) 23:36:18 ID:???
>>278 情報ありがとうございます!まさにそれが原因だったみたいです;
設定ファイルでiso-8859-1と検索してそこを直したら文字化けしないようになりました!
どうもありがとうございました。
>>282 今のApacheの設定ファイルだとその問題は出ないはずなんだが。
古いXAMPPをインストールしてない?
285 :
275 :2005/08/15(月) 00:05:54 ID:???
>>256 の件だけど、
別鯖にfunctionを書いたphpをおいて、それを、メインの鯖のphpの中でincludeした場合、functionを書いたphpのソースのfunction定義だけをメイン鯖に送り返すってことでよいんでしょうか?
include=ファイルの内容全てが参照元ファイルに記述された状態になる ってことじゃないの?
>>228 遅漏ぎみでスマソ
別鯖に置く理由が「勝手な改ざんを防ぐ」なら多少なりとも効果はあるけど、
「知的所有権を守るため」ってなら意味無いね。
だって元鯖内のソース参照出来れば、別鯖内のソース格納場所はバレバレ。
元鯖内からfilegetしたらそれまで…
ま、そこまでして入手するだけの価値があればの話だけどね。
>>228 使ったこと無いけど、Zend買わんでもTurak MMCacheにソースの
暗号化機能があった希ガス。
>>288 >元鯖内からfilegetしたらそれまで
たとえ、ファイルの格納先のURLがわかったところで、そこにftpで入らない限りソースは持って来れないんじゃないの?
パース結果は帰ってくるだろうけど。
結局、なにかechoかprintでもしてないかぎり真っ白。
>>228 のいうfunction定義だけを書いたファイルを直で叩いた結果しか取得出来ないはず。
そうじゃないと、DBName,id,passなんかを書いたconn.phpをhttpから持って来れたらえらいことになるじゃん。
>>290 >たとえ、ファイルの格納先のURLがわかったところで、そこにftpで入らない限りソースは持って来れないんじゃないの?
>パース結果は帰ってくるだろうけど。
>結局、なにかechoかprintでもしてないかぎり真っ白。
そういった設定にした場合、includeした場合でもパースされた結果か真っ白だよね。
つまり、ちゃんとincludeさせるためにはPHPのコードがそのまま出力されないと意味が無い。
つまり、格納先が分かれば丸見え。
逆にこういった設定にしないと適切にincludeできない。
292 :
nobodyさん :2005/08/15(月) 13:48:19 ID:cojv7JdT
プログラミングもまったくの初心者がPHPを勉強してHPを作成できるようになるまでどれぐらいかかりますか? ほんとの初歩の初歩から勉強したいのですがどういったことから始めればよいでしょうか?
>>292 最速で
HTML覚える→PHP覚える
以上
HPを作成したいだけならPHPいらんでそ。
>292 逆に、PHPで何をやりたいのか聞きたい。 まあ何はなくともまずHTMLだな。
296 :
292 :2005/08/15(月) 15:31:40 ID:???
HTMLとPHPは違う物なのですか?
>>291 >>228 が隠したいのはfunctionでしょ?
>ちゃんとincludeさせるためにはPHPのコードがそのまま出力されないと意味が無い。
htmlをincludeで表示させたい訳じゃないんでは?
functionは実行しない限りなにも吐かないけど、includeすれば、ちゃんとユーザー定義関数として、親ファイルの鯖で使われるんでは?
299 :
nobodyさん :2005/08/15(月) 15:53:10 ID:cojv7JdT
よく通信販売のwebサイトで(例えば楽天など)、一度目の買い物の時に個人情報を登録して、 二度目からはIDやPWを入れるだけで買い物ができるようなシステムはPHPを使って作るのですか? また、そのデータをサーバー上で管理するにはSQLを使うのですか? 具体的にどうすればよいのかわからず困っています。 どういったことから勉強すればよいでしょうか?
>>299 他の言語でもPHPでも出来る。
まずHello Worldを出力してみそ。
>>299 PHPじゃくてもJAVAやperlでもできる。
出来るかどうかについては言語はそれほど関係ない。
データの管理はリレーショナルデータベース(RDB)を使うのが主流。
SQLはそれを操作するための言語。
具体的にどう言う理由で質問したかによってこれからすべきことは変わると思う。
時間的に余裕があり上記のようなシステムを地力で構築したいなら、まずはしっかりとPHP、HTML、HTTP、RDBそれからセキュリティを学ぶ。電子商取引システムをつくるなら付け焼き刃の知識で作るべきではない。
続く
302 :
301 :2005/08/15(月) 16:29:32 ID:???
一方、早いうちにそのようなシステムが必要なら、 自力解決は諦めて委託した方がよい。 金銭トラブルや個人情報漏洩が起きたら厄介だ。 まぁ頑張れ
303 :
nobodyさん :2005/08/15(月) 16:42:39 ID:VKc1C+7u
すいません。 Cookieをperlで取得しようとしているのですが、どの板に質問すれば良いのでしょうか? perl初心者スレでは板違いと言われました。
>>303 ここはPHPに関する質問スレだからここもスレ違いだな・・
perl と cookie でぐぐれば即効で見つかるぞ
>>263 >$result1 = mysql_query("SELECT * WHERE type='0'")
>で$resultに結果を格納した後に、さらに$result1の結果を反映している状態で
どこで$resultに結果を格納してんだ?
「$result1の結果を反映」とは?「結果を格納」と同義か。
こんにちは。 PHP+MySQLでアンケートを作っているのですが、 *--------------------------------------------* //データベースより動向希望を取得 for($s_g = 0 ; $s_g <= $rowg ; $s_g++) { for($s_s = 0 ; $s_s <= 8 ; $s_s++) { $sql= "select * from $conf[prefix]sTable where group = '&s_g' and select = '$s_s'"; $result= mysql_query ($sql , $con); $s_num[$s_g][$s_s]= mysql_num_rows($result); } } *--------------------------------------------* という投票数を取得してグループ毎に投票数を$s_num[$s_g][$s_s]に格納したいのですが どうもうまく取得か格納ができていないようなのです。 そもそも多次元配列の使い方がこれで合っているのか、多次元配列に格納できるかということもいまいち分からないのですが、 どこで詰まっているのか指摘お願いできませんでしょうか。
307 :
306 :2005/08/15(月) 17:43:54 ID:???
すいません、 $sql= "select * from $conf[prefix]sTable where group = '&s_g' and select = '$s_s'"; は $sql= "select * from $conf[prefix]sTable where group = '&s_g' and g_select = '$s_s'"; です。
データベースにある件数のみを取得したいならSQL関数のcount()を使うべきでしょ。 必要な項目でグループ化させてそれぞれの件数を取得すればいいような。 いちいちselect文発行はいかがなものかと。 配列に数値がちゃんと入ってるかどうかはprint_rで確認できる。 SQL文の中の「$conf[prefix]sTable」ってのはテーブル名? 配列のキーに""がないのが気になるし、そのままスペースなしにアルファベットをくっつけて書いていいもんだっけ? まぁmysqlのエラーがでてないのなら問題ないのかも知んないけど。
309 :
306 :2005/08/15(月) 18:17:00 ID:???
>>308 ご指摘ありがとうございます。
言われたことを試してみたいとおもいます。
>>306 308 が言うとおり普通は SQL でグループ化して count() で取得するのが普通で
ループしながらSQL を発行するようなことはしない。
そのやり方に直すべきなんだが、現状で気になるところだけ。
・SQLの group の部分は g_group の間違い?
group で正しいのなら group ってのは SQL のキーワードだから `group` としなければいけない。
・SQL の group = '&s_g' は group = '$s_g' の間違い?
& で正しいのならどういう意味なんだ?
まずは以下のように変更してみて、取得できているか、いないのかを切り分けてみたらどうだ?
//$s_num[$s_g][$s_s]= mysql_num_rows($result);
$cnt = mysql_num_rows($result);
echo "$s_g, $s_s, $cnt";
多次元配列の使い方は一応合っている。オマイさんが期待している通りの並びで格納されるかどうかは別として。
PHPとMySQLを使用しています。 いくつか文字を調べたところ、 半角のイウオキケサシスセミなどが?になります。 環境は Windows MySQL 5.0.7-beta PHP 5.0.4 apache 2.0.5.4 です。 色々調べ設定を変えて、 コンソールのmysqlでstatusを実行し、 Server characterset: ujis Db characterset: ujis Client characterset: ujis Conn. characterset: ujis と表示されるようにしました。 PHPで mysql_client_encoding が latin1 となるのが原因ではないかと思います。 しかし、これをujisに変える方法がわかりません。 文字ばけを直す方法がわかりません。 よろしくお願いします。
>>311 PHPからmysql_connectした後、以下を実行
mysql_query('SET NAMES ujis')
313 :
311 :2005/08/15(月) 21:56:37 ID:???
>>312 ありがとうございます。
mysql_client_encodingは変わらないままで、
今まで入れてたテスト用データは違う文字化けにかわりました。
新たに入れたデータは文字化けせずに表示できました。
314 :
312 :2005/08/15(月) 22:38:52 ID:???
>>313 オメ。
mysql_client_encodingは「現在」のエンコーディングを返すのではなくて
「デフォルト」のエンコーディングを返すから SET NAMES ujis をしても変わらない。
そういう意味ではあまり使い道の関数ではある。
どっちにしてもmysql_client_encodingという関数名が悪いわな。勘違いしてもしょうがない。
315 :
nobodyさん :2005/08/16(火) 16:25:31 ID:ug9nnH3B
PHPでアクセスアナライザ作っているんだけど 閲覧者が各ページをどのくらいの時間見てたか 調べる方法って無いよね?
うん
>>315 自分のサイト内の移動だけならわかるけどね
トップだけアクセスしてさよならだとわからないな(多分数秒間しかみてないんだろうけど)
318 :
nobodyさん :2005/08/16(火) 21:42:28 ID:ug9nnH3B
>>316 紛らわしいな。質問の仕方を変えよう。
閲覧者が各ページをどのくらいの時間見てたか
調べる方法って有るよね?
>>317 > 多分数秒間しかみてないんだろうけど
知らぬが仏か(´・ω・`)・・・
319 :
nobodyさん :2005/08/16(火) 21:48:59 ID:Dz1ale7l
パールのサブルーチンってPHPだとなににあたりますか?
関数
321 :
nobodyさん :2005/08/16(火) 21:50:30 ID:Dz1ale7l
サンクスコ!
>>318 俺は回線が細いので、タブで多数開いて
そのまま表示が終わるのに時間が掛かるので、
飯食ったり何か他の事して表示完了してるの忘れて
放ったらかしのことが良くあるが。
そんな感じの人が閲覧してる時間なんてどうやって測るの?
323 :
316 :2005/08/16(火) 22:27:13 ID:???
・閲覧者の識別はIPアドレスで行うものとする。 ・次のページが読み込まれるまでを閲覧時間とする。 ・上記の閲覧時間が一定時間以上の場合は、新規の閲覧とする。 てな感じの決め付けをすれば、まぁ可能といえるかと。
324 :
nobodyさん :2005/08/16(火) 22:30:34 ID:VZdxCnFL
$nが数値の文字列の場合 123 -123 567.01 etc これが正の整数であるか調べるにはどうしますか?
つ [ 比較演算子 ]
今頃になってやっとPHP5へ移行中なのですが、PDFlib-Liteを使えてる方いますか? ./configure --helpをみても--with(enable?)-pdflib=[DIR]が無くなっているようで PHP4のようにはセットアップできないのですが。
>>318 同一のサーバ内でページ移ったときだけ計測するなら
>>323 でいけるだろうけど、あまり意味のある統計はとれなさそう。
例えばどっかのページ開いて、じっくり読んで、読み終わったあとすぐブラウザを閉じた場合なんてどうなるよ?
せっかく読んでくれたにもかかわらず、ページ開いて即ブラウザを閉じた場合と同じ扱いになるわけでしょ?
それに
>>322 みたいに「開いているけど見ていない」状態だって少なからずあるだろうし。
それでもやってみたいならやってみ。結果報告も忘れずに。
他の方法として、もしアクセスが少ないとか、サーバ側がハイスペックな場合は、
Ajaxで定期的に情報送信って手もあるかも。
もしくはあるところまでスクロールしたら情報送信とか(これは時間計測にはならないか)。
>>328 仮に他サイトへ飛ぶまでの時間を計れるとしても同じじゃん。見てるか見てないかなんてどんなプログラムでもわからんし。
330 :
328 :2005/08/17(水) 06:55:48 ID:???
>>329 あー、見てるか見てないかまで計るのはそもそも不可能ってのは当たり前って感じで書いてた。
言葉足らずでスマソ。
ま、実現するには世界中のネット端末に監視カメラでもつけるしかない罠。
無理無理。
>>324 is_numeric($n) and is_int($n) and $n > 0
>>324 preg_match("/^\d+$/", $n);
ヒント:スパイウェア ただし逮捕されても知りません。
>>318 各ページ内に極小のIFRAMEでも切っておいて、
その中でページ単位のユニークIDを引数に、
カウンタースクリプトを一分間隔程度でリロードさせ続ける。
カウンタースクリプトでは、
クライアントIPとページIDを紐付けながら、
表示時間を計測・DB化し続ける。
なんて方法で、大まかな取得は出来る。
ただし、信頼性という意味では、前述の通り。
336 :
nobodyさん :2005/08/17(水) 13:22:27 ID:lvwFkGR5
質問とも呼べない下らない書き込みでごめんなさい。 BBSで書き込みした人と管理者しか読めないタイプって 一般的になんという名称なんでしょうか。 「私書箱」だと件名が一覧で見えてしまう感じが多いし まずメアドとか登録しなくちゃいけないので煩わしいので なんか違うなあと思うんですが。
336です。 すみません、Web製作板と誤爆しました。
任意の名前で空のファイルを作成するのにfopen()でw等を指定して開いているんですが、 mkdir()のように「ファイルを作成する」そのものの関数ってないのでしょうか?
つ [ touch ]
>>338 ぶっちゃけ、fopen()がそれに当たる。
>>338 touchっちゃん!好きだよ! by 南
散々既出だと思うのですが、 数字を3桁ごとにカンマで区切る関数教えてください。 いろんな方法あると思うのですが、 ビューティフルなやつでお願いします。
>>344 そんなものが存在していたとは。さすがphpですね。
勉強不足でした。ありがとうございました。
346 :
nobodyさん :2005/08/17(水) 15:28:25 ID:5ejG3sJo
ディレクトリ削除をWeb上から行いたいのですが、 ディレクトリ内にファイルが入っている状態で そのままディレクトリごと削除する方法はありますか? (unixコマンドでいうとこのrm -rみたいなやつ) あと、連続で申し訳ないんですが ディレクトリ内の画像を一覧で表示したいのですが、GDライブラリを使って サムネイル表示だけ行う(保存しない)方法ってありますか? いい方法があったら教えてください。よろしくお願いします。
>>346 >ディレクトリごと削除する方法はありますか?
歩けど、鯖環境と権限による
>サムネイル表示だけ行う(保存しない)方法ってありますか?
リクエストのたびにGDでサムネールを生成・送出する別PHPを<img>で呼び出す。
でも、鯖負荷ドッカンで鯖あぼーんする事にもなる可能性がある。
349 :
nobodyさん :2005/08/17(水) 15:48:40 ID:5ejG3sJo
>>347 鯖環境と権限ですか・・・
基本的に鯖いじれない状態なんで環境の変更は厳しいです。
ただ、ファイルが無い状態ならrmdirでディレクトリの削除はできます。
鯖に負荷かかりますか・・・
今の状態だとクライアントに負荷が(ry
>>348 rmdirだと、「ディレクトリが空ではありません」というエラーが出てしまいます。
いまのところ、is_fileで存在チェックして、あればファイル削除後、ディレクトリ削除、
とやろうと考えてます。
351 :
346 :2005/08/17(水) 15:59:59 ID:???
連続カキコすみません。 とりあえず、 system("rm -r".$filepath); でいけました。 権限としては付与されているってことですよね。 ちょっとここらへん勉強不足です。すみません。 GDのほうは、とりあえず生画像を縮小表示で出しちゃって 画像数制限(MAX10枚、まだあれば次ページ)で負荷を抑えようと思います。
352 :
346 :2005/08/17(水) 16:01:39 ID:???
>>350 そうすね、execでもいけました。
今回は特に配列は使わないんでsystem使いました。
ありがとうございます。
教えてください。 print mb_substr("あいうえお", 0, 3)."<br>"; とやると あ・br> と表示されてしまいます。 理想では あいう<br> と出て欲しいのですが。 これを実現するためにはmb_substrだけではダメなのでしょうか?
>>353 mb_internal_encoding("文字コード");
print mb_substr("あいうえお", 0, 3)."<br>";
"文字コード"の部分はスクリプトの文字コード(Shift-JIS, EUC-JP etc)に合わせる。
356 :
353 :2005/08/17(水) 16:53:37 ID:???
>>354 あ、EUCにしたらいきました。
なんだこれは。ありがとうございました。
357 :
353 :2005/08/17(水) 16:54:40 ID:???
カウンタなんですが頻繁にログが飛びます。鯖はApache_Win32 マルチスレッドで動作しています。 適切なロック方法ないでしょうか? 現在のロック方法 $fp = fopen($log, "w"); flock($fp,LOCK_EX); fputs($fp,$ログ保存の配列); flock($fp,LOCK_UN); fclose($fp); 宜しくお願いします
>>358 もう一個バックアップ用ファイルを作る。
10くらいずつバックアップにも保存。数値がおかしかったらバックアップから出力。
PHPで、ある時間になったらメールを送信する方法ありますか?やっぱページ開かないと無理?
>>360 cronとかスケジューラからphpをコマンドラインで起動するのが一般的かな
>>358 ログが飛ぶという表現が判りづらい。。。
一応以下を前提として書くけど。
ログが飛ぶ = メモ帳等で開いてみるとログファイルの中身が変になっている
fputsで書き込むログ保存の配列 = ログファイルから取得した値をゴニョゴニョした値
$logで示されるログファイルはあらかじめ作成しておかなければならないけど、
$fp = fopen($log, "w"); → $fp = fopen($log, "r+");
にしたら直らないか?
363 :
nobodyさん :2005/08/17(水) 20:08:48 ID:FkJYV7Vl
サーバのコマンド(df -h やuptime等)を表示するには どうしたら良いでしょうか? お願いします。
>>363 system('/bin/df -h');
365 :
nobodyさん :2005/08/17(水) 21:22:20 ID:FkJYV7Vl
どうせこれからサーバサイドプログラム覚えるなら PerlじゃなくてPHPにしようと思ったのだけど、Perlで基礎ができてない奴にはハードル高いような・・・ そこで、みんなどこで勉強したのよ? 俺はソース見て勉強してるのかなって思ってるんだけど。。。 本って微妙だしね。
仕事でなんとなく
368 :
358 :2005/08/17(水) 23:05:50 ID:???
お忙しい中回答ありがとうございます。
>>359 >>359 氏の言うようなものは当方スキル不足のためつくれません。参考コードをお教えできないでしょうか?
>>362 そうですね "w" と "r+" とか "a" など色々やってみたのですがうまくいきませんでした。
おおかたロックしてないんだろ
つスキャンディスク・デフラグ
371 :
多分324 :2005/08/17(水) 23:55:06 ID:???
#ちょっと今ログみれないもんで 正規表現だと"/^[1-9][0-9]+$/"ですかね あとマヌアルでみつけた ctype_digit($n) && $n != 0 掲示板の記事番号チェックとかに今までis_numeric使ってたけど 整数をチェキしてるもんだとばかり思ってた
372 :
nobodyさん :2005/08/18(木) 00:30:49 ID:UHy1ByjR
一日一回いくつかのサイトにアクセスして、その中の文字列(数値)を 切り出し、MySQLのデータベースに書き込みたいと思っています。 (具体的には株、投資信託の価格です。) なかにはユーザ名とパスワードを要求されるサイトもあります。 cron.dailyにphpのスクリプトとして作ればよいと思いますが、 サイトに自動ログインして文字列(html)を取得する方法がわかません。 参考になるスクリプトのあるサイトなど教えていただけないでしょうか。 お願いします。 ↓環境(自鯖) RedHat 9 Apache 2.040 MySQL 3.23.58 php 4.2.2
>>372 ターゲットサイトの認証方式、セッション管理方式によって千差万別。
これだって、回答もできないしサンプルもないだろう。
まずは、認証なしのサイトからがんばってつくってみな。話はそれから。
phpinfo()の出力結果でopen_basedirが Local ValueMaster Value /home/httpd/vhosts/default/htdocsno value となっているのですがこんな設定はphp.iniでもhttpd.confでもしていなく、 心当たりは/home/httpd/vhosts/default/htdocsにある.htaccessで 中身は一行「Options FollowSymLinks」としてあります (何故かシンボリックリンクを辿ってくれなかったので) この一行だけなのにopen_basedirに影響してしまうものなのでしょうか?
375 :
374 :2005/08/18(木) 02:11:55 ID:???
すいません374です Local Value Master Value /home/httpd/vhosts/default/htdocs no value のつもりで書きましたがtabは無視されるようで間が空きませんでした…
助けてください('A`) 今現在参考書(一週間でマスターするSQL forWINDOWS)を見ながらサンプルソースをひたすら打っているのですが、以下のエラーを吐かれました。 Notice: Undefined index: Melody . 2 in C:\Apache Group\Apache2\htdocs\music\cdinfo_insert.php on line 41 そして、ソース41行目の内容は、 $tmp_values = $tmp_values . "," . "'" . $_POST["Melody . $i"] . "'"; です。 コレは連想配列POSTのMelodyに値が無い、と言う事なのでしょうか? そもそも変数名の先頭にアンダーバーがある理由も解らない・・・orz
>>376 Noticeはサンプルがへぼいだけだから気にするな
プログラムの先頭に
error_repoting(E_ALL ^ E_NOTICE);
と書いておけばNoticeエラーは表示しなくんる。
$_POSTはPHPで定義済みの変数名なので覚えておけ、というかマニュアル嫁
>>376 勘だけど
$_POST["Melody . $i"]
じゃなくて
$_POST["Melody$i"]
か、もしくは
$_POST["Melody" . $i]
の間違いじゃないのか?
"Melody . 2" がキーなんてちょっと不自然だな・・・
もしくは
$_POST["Melody"][$i]
かな?
> そもそも変数名の先頭にアンダーバーがある理由も解らない・・・orz
仕様です。としかいいようがない罠
379 :
nobodyさん :2005/08/18(木) 09:20:22 ID:qSODVusS
$_POST["Melody . $i"]がセットされてない 存在しないでは?
380 :
nobodyさん :2005/08/18(木) 09:26:47 ID:qSODVusS
間違った 定義されていないでは?
381 :
376 :2005/08/18(木) 09:33:04 ID:???
>>377 そんな裏技があるんすか!!
$_POSTか・・・もう本当にスンマセンorz
>>378 × $_POST["Melody . $i"]
○ $_POST["Melody" . $i]
でした・・・
>>380 スンマセン、セットはちゃんと出来てたっす。ありがとうございます!
皆さん本当にありがとうございました!
自分の書いたプログラムがちゃんと動くって・・・凄いっす!感動っす!!
382 :
360 :2005/08/18(木) 09:35:20 ID:dNobvAZf
>>361 やっぱそうですよね、ありがとうございました。
何がどうやっぱなのか教えて下さい
384 :
nobodyさん :2005/08/18(木) 10:32:03 ID:gP3CzNh8
PHPで記述されたアクセスアナライザ使っているんだけど ログ見るとなぜか同じ人が1分間に同じページを何回も閲覧してる のが残っているんだよね。それも一人じゃなくて何人も。 初めは嫌がらせのF5アタックかと思ったんだけどそうでもないみたい。 ちなみにそのPHPアクセスアナライザはページに仕込まれていて ページが読まれる毎にログに残すというタイプね。 見てる人の意志とは関係なく、ブラウザって勝手に何回もリロード したりするもんなの?
>>384 自分でアクセスしてログを見てみればいい気もするけど・・
普通のサイトだったら勝手にリロードなんてするわけもないし
まずは自分でアクセスしてphpのアクセスアナライザの問題かどうか切り分ける。
しかもアクセスアナライザの問題だったら作者に聞くべき
よってどっちにしろスレ違いの気も・・
>>384 PHPが関係ないことは最初から明らかな気がするけど・・・。
>>384 ページの描画がやたら遅いとかでみんなイライラして更新しまくってんじゃないの?
390 :
nobodyさん :2005/08/18(木) 12:42:05 ID:gP3CzNh8
>>388 俺のサイトに訪問する連中はそんなせっかちなのか?
>>390 一般人の訪問者達を相手に人のせいにするなよw
なんなら晒してみたら?
392 :
nobodyさん :2005/08/18(木) 16:18:14 ID:gP3CzNh8
>>386 写真とか多用しているサイトだから読み込みに時間はかかると思う。
読み込んでいる間、ブラウザ側から定期的にページの再取得が
行われてそれで何回も連続でアクセスしてることになってるのかな?
>>392 お前きっと恨まれてるんだろ?
それで、ムカついたからみんなにF5アタックされているわけだが…
mb_convert_encodingでSJISの「鷭xx」を変換したら 「xx」が見えない文字に変換されているみたいなんですが これはBUG? はたまた既知の問題? 変換後はJISなんですが、EUCやSJIS(実質変換処理はしないと思っていた) にしても同じでした。
>>394 JIS X 0208以外のコードは無理
だったと思う
396 :
nobodyさん :2005/08/18(木) 21:31:37 ID:v+aFcjwV
>JIS X 0208以外のコードは無理 そうなんですか。 メールを送信するときに本文をSJISからJISに変換するときに 発覚したんですが、SJISのまま送信することにします。 どうもです。
>>396 >SJISのまま送信することにします
ちゃんと仕様どおりMIMEエンコーディング掛けような。
398 :
nobodyさん :2005/08/19(金) 00:14:56 ID:qEImwFqo
Cookieの使い方について、お願いいたします。 set_cookieを使わずに、ヘッダ送信後にJavaScriptでクッキーの値を設定する方法を探しています。 PHP側で <script language=JavaScript> <!-- document.cookie = "@x=1;"; --> と出力しているのですが、 $HTTP_COOKIE_VARS[ "x" ]で参照できませんでした。 使用ブラウザはIE6.0、PHPバージョンは4.0で、ブラウザのスクリプト設定はONになっています。 どこか、記法が間違っているのでしょうか。
※ >PHPのバージョンは4.0 ->PHPのバージョンは4
>>397 >ちゃんと仕様どおりMIMEエンコーディング掛けような。
メールに詳しそうなので教えてください。
SJISで送る場合はBASE64とquoted-printable
どちらにエンコードするのがベターなのでしょうか?
あるいは他に推奨されるエンコード方式はありますか?
401 :
376 :2005/08/19(金) 09:13:43 ID:???
>>377 すんません、プログラムの先頭に教えてもらった
error_repoting(E_ALL ^ E_NOTICE);
を書いたらそれ自体がエラーになっちゃいました('A`)
こんなエラーです。
Fatal error: Call to undefined function: error_repoting()
>>401 「Fatal error: Call to undefined function: error_repoting()」
早い話が「error_repoting」の綴り違い
>>401 綴りが間違ってる。正しくはerror_reporting。というか英語もマニュアルも嫁。
404 :
401 :2005/08/19(金) 09:39:57 ID:???
うわぁ・・・死ぬほどハズカシ('A`) ありがとうございました!エラーが消えました! そしたら自作関数のクエリを発行する関数から「クエリ発行できないよバカ」って メッセージが返されましたorz ガンガリマス
406 :
377 :2005/08/19(金) 12:04:13 ID:???
>>401 すまんorz
エディタだったら登録関数は色が変わるのですぐわかるんだけど
PHP4時代に作成したクラスファイル(変数の定義にvarを使っている)をPHP5動かす時に、 General PHP error : var: Deprecated. Please use the public/private/protected modifiers というエラーがでないようにするにはphp.iniをどのように書けばいいでしょうか。 エラーメッセージの通りソースを修正するのが筋ですが、エラーの通知レベルを 下げて対処したいのですが。
>>407 それもerror_reportingなわけだが
ユーザー関数名?に [classなんとか] とかって使わない方がいいのかな?
411 :
407 :2005/08/19(金) 14:07:50 ID:???
>>409 そう思って色々値を変えてみたんですが(0も含めて)、エラーが
無くならないんですよね・・・。
PHP5とJpGraph 2.0beta、Smartyを使ってて、Smartyの中で var が使われているのは
分かってるんですが・・・。
PHP4時代に作成したクラスファイルとやらを晒してみたらどうよ。
>>407 display_errors = Off
414 :
407 :2005/08/19(金) 14:40:12 ID:???
すみません。自己解決しました。
>>411 で書いたとおり(後出しスマソ)JpGraph 2.0を使っているのですが、
その設定ファイル(jpg-config.inc)に
DEFINE("CATCH_PHPERRMSG", true);
という設定があったので、これを true->false へ変更したらエラーがでなくなりました。
415 :
nobodyさん :2005/08/19(金) 15:29:42 ID:MY/rYcMm
ユーザー名とパスワードを入力してログインする会員専用のサイトで 現在ログイン中のユーザーを取得するにはどんな方法があるのでしょうか?
>>415 それだけの情報で答えられる人はエスパースレににもいないだろう。
417 :
nobodyさん :2005/08/19(金) 15:47:28 ID:oRNXECTa
教えてください。 変数名の一部に数字が入っていて、その数字を別の変数で 持っていて、つなげてひとつの変数にすることは可能でしょうか? 具体的に言うと、 $count =1; $hoge.$count = "test"; $count++; $hoge.$count = "aaaa"; echo $hoge1.$hoge2 出力結果 testaaaa こんな感じの処理をしたいんです。 ちなみに上の記述では何も出てきませんでした。 ちなみに、配列にしたら、というのは無しでお願いします。 (変数名の規約で配列になっていない仕様の為)
$hoge="test"; echo $hoge.="aaaa"; $countはなんだ?
419 :
415 :2005/08/19(金) 15:59:58 ID:MY/rYcMm
>>416 説明不足ですみません。
一般的にどういった手法をとるべきなのかをお聞きしたかったのですが、
とりあえず現状ではログインページにて入力したユーザー名とパスワードをデータベースに照合して、
成功したらユーザー名をセッション変数に格納して各コンテンツにアクセスできるようにしています。
サーバー側で維持しているセッションのユーザーを全て取得して
「現在ログイン中のユーザーは・・・」といった表示をしたいのですが、
このようなことは可能なのでしょうか?
よろしくお願いします。
420 :
nobodyさん :2005/08/19(金) 16:00:20 ID:oRNXECTa
>>418 あースマソ
なんつーか、testaaaを表示したいとかじゃなくて
ただ例だったんだけど、例が悪かったス
んーととにかく、$hoge1、$hoge2って名前の変数があって
それをループで1と2のところ変動できないかなってこと。
で、しかも配列じゃないの。厄介です。
>>417 素直に配列にした方が良いと思うけど。
$count = 1;
eval("\$hoge" . $count . " = \"test\";");
$count++;
eval("\$hoge" . $count . " = \"aaaa\";");
echo $hoge1.$hoge2;
>>420 糞仕様を変更する
${'hoge'.$count}
>>417 こんなんでもできたよ。
$count = 1;
$tmp = "hoge" . $count;
$$tmp = "test";
$count++;
$tmp = "hoge" . $count;
$$tmp = "aaaa";
print $hoge1.$hoge2;
424 :
421 :2005/08/19(金) 16:12:05 ID:???
>>422 おおぉ、すげえ。${} で参照だけでなく代入も出来るのか。
知らなかったよ。PHPって何でもありだな。
>>421 はスルーしてくだされ。
425 :
nobodyさん :2005/08/19(金) 16:17:01 ID:oRNXECTa
>>422 ま、まあそうなんですが引継ぎの仕事で、前の人が配列で定義してやがらないので
これから全部配列にすると大変なことが起きるんで、逃げの対策としてってことです。
${}使わせてもらいます。
>>421 evalでもいけました。ありがとうございます。
426 :
nobodyさん :2005/08/19(金) 16:18:06 ID:/9DHVQ9O
$offset=$_REQUEST['offset']; if($offset) { return TRUE; } とあるんですが、$offsetが0の場合FALSEになってしまいます。 パラ渡しで、offset=0の時とoffset=NULLの時があり、NULLの 時だけFALSEにしたいんですが、どすればいいんでしょ? $offsetに値を渡す時に文字指定してあげればいいと思うですが そんな関数ってあるんでしょか?
429 :
426 :2005/08/19(金) 17:06:47 ID:???
>>427-428 ありがとございました!おかげさまで
if($offset!==NULL)
で解決いたしました。
430 :
426 :2005/08/19(金) 17:20:01 ID:???
あれ? と思ったらダメくさい。 if($offset!==NULL) まちがいですた・・・(T.T) もうちょっとがんばってみます。
phpのソース上で、例えばlsコマンドなどのシステム系コマンドを 実行するのは可能ですか?Perlは出来たんだけど・・・
>432 おぉーーー、見落としてたー! つd
ローカルで、PHPをテストしたせい(?)かもしれないんですが… 昨日からハードディスクの回転が止まりません。異常ですよね。 電源落としてもHDDが動きっぱなし。。。。
それはホラーだな。いや、怪談か。 ディスクだけに番町皿屋敷ってね。
電源落としてもHDDが動きっぱなし、つーのは異常というか夢の永久機関の出現というか、、、
437 :
434 :2005/08/19(金) 18:38:22 ID:???
間違えました。電源落としても→再起動しても です。 ブォーンって凄い音がしてます。どうしたら。…
スレ違いだから糞して寝ろ
439 :
434 :2005/08/19(金) 18:55:27 ID:???
Internal Server Error
お前らの頭の中がInternal Server Error
441 :
398 :2005/08/19(金) 19:29:57 ID:qEImwFqo
cookieについて質問させていただいた者です。 内容がJavaScript関係の気がするので、そちらのスレッドで聞いてみます。
442 :
nobodyさん :2005/08/19(金) 20:20:46 ID:KoUPvsHD
明らかに文法的に合ってるのにParse errorというのが出ます 誰かたすけて!!
>>442 エラーが出なくなるまでソースを削っていく。
444 :
nobodyさん :2005/08/19(金) 20:44:09 ID:KoUPvsHD
>>443 そうやったら、//がある奴以外全部なくなった・・・・
その作業で数行に収まった筈だから、そのエラーとソースを貼ってみ。
446 :
nobodyさん :2005/08/19(金) 21:10:33 ID:KoUPvsHD
// タイトル名 $title = "掲 示 板"; // タイトル文字の色 $tCol = "#666666"; // タイトル文字サイズ $tSize = '24px'; // 本文文字サイズ $bSize = '13px'; // 本文文字スタイル $bFace = '"MS UI Gothic", "MS Pゴシック", Osaka'; // 記事題名の色 $subCol = "#DD0000"; // スクリプトURL $script = './aska.php'; // 管理用パスワード $pass = '0123';
447 :
nobodyさん :2005/08/19(金) 21:12:18 ID:KoUPvsHD
// 最大記事数(これを超える記事は古い順に削除)
$max = 50;
// 戻り先URL
$home = "../index.html";
// タイトル画像を使う場合 (
http://から画像を指定 )
//$ImgT = "";
//$ImgW = 300;# 横幅サイズ
//$ImgH = 70;# 縦幅サイズ
// bodyタグ
$body = '<body bgcolor="#F0F0F0" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">';
// URLの自動リンク (0=no 1=yes)
$autolink = 1;
// 引用部色変更
// 1 : 色指定を行うと「引用部」を色変更します
// 2 : この機能を使用しない場合は何も記述しないで下さい ($refCol="";)
//$refCol = "#804000";
// メール通知機能
// 0 : 通知しない
// 1 : 通知する → 自分の投稿記事も通知する//
// 2 : 通知する → 自分の投稿記事は通知しない
$mailing = 0;
448 :
nobodyさん :2005/08/19(金) 21:14:30 ID:KoUPvsHD
// メール通知先アドレス(メール通知する場合)
$mailto = '
[email protected] ';
// タグ広告挿入オプション
// → <!-- 上部 --> <!-- 下部 --> の代わりに「広告タグ」を挿入。
// → 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。
$banner1 = '<!-- 上部 -->'; # 表示部上部に挿入
$banner2 = '<!-- 下部 -->'; # 表示部下部に挿入
// 記事の更新は method=POST 限定する場合(セキュリティ対策)
// → 0=no 1=yes
//$postonly = 1;
// 他サイトから投稿排除時に指定する場合(セキュリティ対策)
// → 掲示板のURLを
http://から書く $baseUrl = '';
449 :
nobodyさん :2005/08/19(金) 21:16:26 ID:KoUPvsHD
//一ページ表示件数 $page_view = 10; // 制限投稿間隔(秒数) // → $regCtl での投稿間隔 $wait = 60; //データファイル名 $data_file = "bbsas.dat" // アクセス禁止 // IPを""の中に書いて下さい ,で区切って下さい //例)array("127.0.0.1", "333.333.333.3", "555.5.5.5") $yada = array("test", "test2"); Parse error: parse error, unexpected T_VARIABLE まずこの最後の行からエラーが出るんです そのあとは//以外全部がエラーです・・・
オマイはアホウか。エラーが出る最小のところまで削って、そこだけ書け。 んで、$data_file = "bbsas.dat" の末尾に ; がない。 以上
PHPはほとんど触った事が無い人なのかな? 各行で // 以降はコメント(説明書きで実行には影響しない=削っても良い)なので、 さらにエラーが出なくなるまで(上下から)削っていくと、 $data_file = "bbsas.dat" $yada = array("test", "test2"); この2行くらいまで削れるっと。 上の行の最後に ; が抜けてるっぺ。
452 :
nobodyさん :2005/08/19(金) 21:23:52 ID:KoUPvsHD
>>450 ほんとだ!!!!!;がない!!!
解決しました!!!ほんとありがとうございました!!
これのために5時間費やした・・・
>>442 >>446-449 明らかに文法的に合ってるのにParse errorというのが出ます
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
( ´,_ゝ`)プッ
454 :
nobodyさん :2005/08/19(金) 21:25:24 ID:KoUPvsHD
>>451 はい・・・PHP初めて三日目です・・・
これまでプログラミングはHSPしかやったことがありません
ご迷惑おかけしました
>>452 その5時間は無駄ではない。みんな一度は通る道。
経験者からすれば、つまらないミスだけど、原因を突き止めたこの爽快感、わすれるなよ。そして、君が経験を積んで、困ってるやつがいたら、手を貸してやることだ。
456 :
ハゲド :2005/08/19(金) 22:28:45 ID:???
なぜなら、すべてのプログラマは、最初初心者だったのだから。
ミスをしない初心者がどこにいる、、、
結局、なんの切り分けも出来ずに丸投げしただけなんだから、原因を突き止めた爽快感なんて 味わえる訳ねえべ。 HTMLなんかでも、結果がおかしい時に削って範囲を絞るぐらいはするだろ。 HSPは使ったことあるがPHPは慣れていなくて。。。というレベルではないな。 5時間はただただ無駄に過ごした時間。
>>458 まぁ、そう言うなって。イヤだったら答えなきゃいいだけだし。
漏れ自身、まだ初心者の域だけど、自分に答えられる事は答える。
初心者にわかるように答える、それが自分の知識の再確認になるんだ。
助けてもらった事は数知れず。感謝でいっぱいです。
>>452 が
>>442 みたいなことを言った事を、のちのち「恥ずかしい」と思えるようになれば、いいんじゃないかな?
>>452 「プログラムは思ったように動くのではなく書いた通りに動く。」
UNIXの格言です。
;と:とか間違うこともある。すげー気付かない。
そういうのは慣れだろうね。場所に応じて指が勝手に選択してるというか。 他人の書いたソースなら見落とすかも知れない。まぁ、走らせればエラーで分かるけど。
昨日switchのcase:をcase;って間違えて書いたんだけどなぜか動いた
463 :
459 :2005/08/20(土) 16:44:04 ID:???
漏れが良くやっちゃうのは、変数上書き系。 × if($hoge = "hage") ○ if($hoge == "hage") ロジックを思いついてハァハァして関数を一気に書くとこのミスをよくやる。 あと、自分で定義した変数名をすっかり忘れてて上書きとか。 藻前らはどんなミスしますか?
あんまりPHPのスクリプトで使ってるのを見かけないけど、 if("hage" == $hoge) てな感じに先に文字列を書いておけば == を = にしちゃった時にエラーになるね。
>>465 それなりのエディタを使用していれば括弧の数で間違うことはあまりないと思うけど。
if("hage" == $hoge) の書き方は宗教論争に発展しやすいんで感想は述べないほうが。。。
467 :
nobodyさん :2005/08/20(土) 17:38:56 ID:cxKBVtTD
PHPとMySQLを使用しています。 DBのフィールドを words BLOB とします。 PHPで $title = addslashes($_POST['title']); $keyword = addslashes($_POST['keyword']); を1つのフィールドに登録して $sql = "insert into tablex (words) values ("; $sql .= "'".$title."\001".$keyword."' )"; $result = mysql_query($sql, $con); のような登録ってありなんでしょうか。 つまりバイナリデータ"\001"はエスケープしなくて そのまま使えますか。 --つづく--
--つづき-- こんなことするのわけは、 select * from tablex where title like '%abc%' or keyword like '%abc%' を select * from tablex where word like '%abc%' で済ませられることぐらいなんですけど。 また、PHPではバイナリを気にせず文字列のように使えますか。 つまり、前述のような使い方が出来たとして、 $sql = "select * from tablex where word like '%abc%'"; $result = mysql_query($sql, $con); $row = mysql_fetch_assoc($result); $words = $row['createdate']; $words = preg_split("/\001/", $words); $title = $words[0]; $keyword = $words[1]; で取り出すことが出来ますか。 実際こんなことするか決めかねていますけど。
perlライクに if($hoge eq "hage") とか使いたい。
前身がパーラーな漏れは、 ヒアドキュメントの;の位置をよく間違える。
471 :
459 :2005/08/20(土) 18:18:54 ID:???
>>464 比較するところ、=が一個足りなくて代入しちゃう、おまけにそれがtrueで意図しない条件分岐のブロックを実行しちゃうわ、変数は上書きしちゃうわ、って意味でかいたんですが。
>>463 ってそんな変な書き方かな?
if($hoge == "hage"){
$kekka = "ハゲです";
}else{
$kekka = "ハゲじゃないです";
}
echo #kekka;
って続く訳ですが。
>if("hage" == $hoge)
逆だぁ、こんなの初めて見た。
>>465 かっこは先に書いちゃうように心がけてるんであんまりやらないなぁ。
>>470 非亜ドキュメントの最初と最後の行まで、タブでインデントしちゃう、ってのもたまにやります。
472 :
nobodyさん :2005/08/20(土) 19:58:50 ID:oc0A9ckR
>>469 Perlな人って、覚え初めの頃ってそういう比較演算子気持ち悪いと思わなかったのかな?
俺はプログラムJavaScriptから入ったから、慣れない書き方に挫折した。。
とりあえず、ニーモニックかYO!!って突っ込みいれた。
突然 Google Web API の日本語が通らなくなったんだけど 仕様とか変わった?
475 :
467 :2005/08/20(土) 22:09:13 ID:???
>>467 実際にバイナリデータをSQL出来るか確かめようと思って試したが、
置換を間違えてこうやってた。
$contents = $_POST['contents'];
$contents = preg_replace("/=/", $contents, "\002");
しばらく気がつかんかった。
ところで、
$contents = preg_replace("/^==+$/", "<HR>", $contents);
のような ^ $ は使えないのでしょうか。
実際出来なかったのですが、何か方法あるのでしょうか。
>>475 > $contents = preg_replace("/^==+$/", "<HR>", $contents);
おしりに改行とか入っているのでは?
>>470 あとヒアドキュメントの>>と<<<も。
>>472 あまり変には思わないな…
BASICの変に大文字なのと、IF THENとか.5とかGOTOの方がキモイと思う
>>476 ありがとう。
<TEXTAREA>による複数行なので\r\nが入っています。
ということは、
$lines = preg_split("/\r?\n/", $contents);
foreach( $lines as $line )
みたいにしないとだめって事なのですか。
これだと何か効率悪そうに感じたので。
言語にキモイも何もないだろ… そんなことじゃ手に職付かないぞ
アセンブラ最強。 見やすいもへったくれもない。
ハンド逆アセンブルがんがれ
482 :
nobodyさん :2005/08/21(日) 00:28:21 ID:saxbkmPu
PHP5でフォームからデータを取得してsendmailで内容を受信する為の php.iniの設定とコードを打って実行してみたのですが、なりません。 コードと、php.iniの見直しはそれぞれ7回ずつしました。 誰か 助けてください!! ソースが必要であれば 書き出しますのでよろしくっす。
APL、Basic、C、Delphi、Eiffel、Fortran、Guile.. てな感じでアルファベット20個を(た・・たぶんまだ)使えるオイラは、 キモさというより各言語間の影響みたいなものを感じる。 そんな感じで各言語の構文を見ていくと面白い。 Perlのelsifなんかは、Perl使いの人はせっかちだなぁ eを打つのも面倒なのか 省略しすぎ、とか。
>>482 OS名と、受信(?)に使っている関数名と、受信に関係するphp.iniの設定はどうなってますか?
また、関数に渡している実際の変数の値をecho等で表示した場合に、希望する値になってますか?
>>482 エラーを嫁。次はsendmailがその鯖で使えてるかどうかを調べる。
>>483 どれがどの言語の文法だったか忘れるでしょ…。
e入れるんだっけ?外すんだっけ?みたいな。
忘れるのも得意になる。
使ってて感じる各言語のクセ以外覚えない事にしてるけど。
486 :
nobodyさん :2005/08/21(日) 01:03:35 ID:saxbkmPu
>484,485 早速の応答感謝します! OSは、WinXPです。 関数は、mb_send_mail関数です。(マルチバイト関数のSENDMAIL版ですかね。) php.iniの設定ですが、行数で言えば 101行目 バッファリングの有効化 115行目 出力ハンドラの設定 mb_output_handler 422行目 出力文字コードの設定 Shift-JIS 436行目 外部ファイルの検索先 .;c:/php/includes;c:/php/PEAR 443行目 ドキュメントルート c:/Program Files/Apache Group/Apache2/htdocs 450行目 拡張モジュール(php_*.dll)を含むフォルダ c:/php/ext 570行目 マルチバイト関数を有効化 1105行目 デフォルトの言語 Japanese 1110行目 PHP内部の文字コード EUC-JP 1113行目 HTTP入力の文字コード auto 1117行目 HTTP出力の文字コード SJIS 1124行目 入力文字コードの自動変換を有効化 1128行目 文字コード検出の優先順 1132行目 代替文字 auto 1133行目 スクリプトで使用する文字コード EUC-JP 関数に渡している実際の変数の値をecho等で表示した場合に、希望する値になってますか? に関しては、恐らく答えはYESだと思うのですが、自信をなくしました。。。 エラーは、出ないんです! フォームから送信するとちゃんとデータを取得した後 元の画面に戻るようにしてるのですが、メールの受信だけ出来てないんです。 やはり、 ソースを書き出した方が良いでしょうか?
Shift-JISなど存在しない
488 :
nobodyさん :2005/08/21(日) 01:11:10 ID:saxbkmPu
>>487 ご指摘ありがとうございます!
私の打ち間違いでした!
正しくは、Shift_JISです!
ご親切にありがとうございました!
>>486 ttp://www.php.net/manual/ja/ref.mail.php Windows環境でmail関数(mb_send_mailも)を使うと、
メール鯖(同じ鯖内でも)とネットワーク接続してメールを送信することになる。
(Windows以外では、sendmailプログラムに直接データを渡す)
なので、php.iniの中で、どのメール鯖と通信するかと設定する必要がある。(SMTP,smtp_port,sendmail_from)
(日本語マニュアルのMail設定オプション説明の SMTP int の行は smtp_port の間違いだね。)
要は、メール鯖を用意(自鯖でもいいし、プロバイダのメル鯖でもいいし)していて、
そのメール鯖の情報がphp.iniに適切に設定されている必要があります。
(んでも、プロバイダのメル鯖は、spam対策で POP before SMTPの制限があったりする。その場合は×)
メール送信に失敗した場合は、falseが返ってくるので、
if(!mb_send_mail(〜)) echo 'メール失敗'; てな感じでエラー処理をします。
490 :
nobodyさん :2005/08/21(日) 02:25:23 ID:saxbkmPu
>>489 深夜にもかかわらず、ご丁寧に返してくれてありがとうございます!
php.iniの設定ですが、あと2つ書き忘れていましたので
追記します!
607行目 自分が利用可能なメールサーバ プロバイダのウイルスチェック用のSMTPサーバ指定
611行目 上記で使っている自分のメールアドレス指定
をしていました。
489さんのおっしゃる通り、適切に設定されていても
spam対策で POP before SMTPの制限がある場合はダメなのですね。。。
因みに、今日プロバイダに電話確認したばかりなのですが
何と訪ねたら良かったのでしょうか?
あと、その回避法などはないものでしょうか?
図々しいとは思うのですが宜しくお願いいたします。
>>490 図々しいと思うのならPOP before SMTPをググって理解しやがれ。
人に聞く前に自分が思いつく回避法を試せ。
492 :
nobodyさん :2005/08/21(日) 03:32:08 ID:saxbkmPu
>>491 申し訳ないです。
私の勉強不足だと思います。
POP before SMTPについては、SMTPではそれだけでは認証が出来ないため
一度popでIPのログを残して、一定時間内にアクセスがあった場合のみ且つ
popに残ったIPのログと同じものだった場合にのみ、認証されて送信される
という理解だったのですが、これに見合うためのpopにアクセスするために
どうすれば良いかという方法を本とネットでここ3日間ほどずっと悩んでも分からずに、
(OEで一度"送受信"ボタンを押してすぐに、IEでフォームから送信をする始末で..)
幅広い知識がないと、やはり難しいものですね...
491さん、ご気分悪くされたのなら申し訳ございません。
自分でももう一度いろいろ調べた上で質問させて頂きたいと思います。
あってるよ。だから、CGIでPOP鯖にログインすりゃ良い。
494 :
nobodyさん :2005/08/21(日) 03:58:08 ID:saxbkmPu
>>493 ありがとうございます!!
POPにログインの方法を調べて作ってみます!!
出来たらお礼を言いに来ます!
絶対作って、絶対来ます!!
親切にいろいろアドバイスをくれた皆さん
ご指導ご鞭撻ありがとうございます!
頑張りたいんです!!
まだまだ知識不足なんですが
これからもどうぞ宜しくお願いします!!
では、失礼します。
>>494 えーと、POP before SMTPの制限があることは確実なんですか?
>>489 で書いたのは、プロバイダのメル鯖利用は簡単にできない事がある、という例です。
そういう制限があるかどうかは、プロバイダのヘルプページに制限事項と
メールソフトでの設定方法が書いてある事が多いので、そこから推測することができます。
POP before SMTP以外にも、SMTP AUTHやら 色んな制限方法があります。
で、POP before SMTPが邪魔になっているのなら、
>>493 が言ってるような処理を
fsockopen関数あたりを使ってやればよいかと。
「POP before SMTP fsockopen php」あたりでググればそのものズバリのものが見つかるかも。
真面目にやる場合は、POP3(Post Office Protocol version3)を調べてゴニョゴニョと。
496 :
nobodyさん :2005/08/21(日) 05:37:10 ID:saxbkmPu
>>495 はい。今日(と言っても半日ほど前ですが)プロバイダに電話で聞いたところ
SPAM対策に時間での制限と、30分以内に500通をこえるメールの送信は出来ないように
規制を掛けているそうです。
ちなみに、メールサーバでのウイルスチェックを申込んでいるので利用しているのは
AUTH.***.jpというサーバになっています。
まだメーラーのことからPOP before SMTPについてや
PHP5でのメールの送信の方法(実例)、POP3へのアクセス・ログインの
方法を調べていたところでした!
fsockopen関数のこと、ありがとうございました!!
PHP初心者の私には、まだ手も足も出ませんが、少しの助言を貰えるだけで
かなり助かります!あとは、自分で出来る限り調べて理解していきたいと思います☆
本当に、親切に教えて頂いてありがとうございます!!
497 :
nobodyさん :2005/08/21(日) 06:05:43 ID:g7cZnge0
PHPとMySQLを使用しています。 ひらがな、カタカナ、半角カタカナを区別しないでDBから検索するとしたら、 PHPでひらがな、カタカナ、半角カタカナをひらがなに変換してDBに登録し、 SQLのwhereもPHPでひらがなに変換するっていうのありですか。 勝手にひらがなになってしまうのは妥協するものとします。 それよりもっといい方法があるのなら教えてください。
>>497 元データはそのままにして、全部ひらがなにしたフィールドを用意する。
取り出すときは元データを取り出す。
array_multirortについてなんですが使い方がよくわかりません。 たとえば $A[0][NO] = 3 $A[1][NO] = 1 $A[2][NO] = 2 $A[0][NAME] = "ほげ" $A[1][NAME] = "ほげほげ" $A[2][NAME] = "ほげほ" を[NO]順にならびかえて $A[0][NO] = 1 $A[1][NO] = 2 $A[2][NO] = 3 $A[0][NAME] = "ほげほげ" $A[1][NAME] = "ほげほ" $A[1][NAME] = "ほげ" としたいのですが。 過去ログに似たようなのがあったんですが自己解決したみたいで。くだらないですがお願いします。
array_multirortではなくarray_multisortでした。あと最後のは $A[2][NAME] = "ほげ" でした。
>>497 俺も検索用変換済みの検索用フィールドを用意するのが良いと思うよ。
「タイトル」「本文」なんかをまとめて検索用フィールドに突っ込むとかもできるし。
#where句の LIKE 対象が1フィールドで済む
502 :
nobodyさん :2005/08/22(月) 12:55:50 ID:mbIy2UAI
パスの中の ./ や ../ を展開(?)して、それらを含まない形のパスにしたい。 一番エレガントだと思う方法を答えてください。 パスのルール。 ・パスは絶対パスで、/ から始まる ・ファイル・ディレクトリ名は . で始まることもある ex) /www/htdocs/.htaccess ・パスがディレクトリ名で終わる時は / で終わる ・万一 ../ を展開して、ルートの下に下りてしまうようなときは、/ もしくはヌルストリングを解とする どうよ? 正規表現一発で処理しようとトライしたんだけど、なかなかどうして難しいもんです。
>>502 意味不明。
パスといっても、サーバパスとURI上のパスがアル。
掲げたルールはなんに対してのルールなんだか・・
元?変換後?
もう少し、状況踏まえて判りやすく。
>>502 パスが存在するっていう前提だがrealpath()ではあかんのか?
505 :
502 :2005/08/22(月) 13:14:45 ID:???
>>503 サーバパスです。
入力されるパスは上記ルールに従っています。
この条件で、./ や ../ を含んでいるパスを適切の処理して、それらを含まないパスを返す関数を作ると考えてください。
でも、../ を処理してルートの下に下りたときは、
>>502 のルールだと難しいかもしれないですね。
とりあえずこういったイリーガルな場合は、各自挙動を決める、ってことでどうでしょう?
というか、切実な質問ではなく、エレガントな解を求めるパズルのようなものだと考えてください。
自分の作った一部を挙げると、 ./ を展開する部分までしかできてないですが
function toruDot($path)
{
$ans=Preg_Replace('/\/(\.\/)+/','/',$path); // ./ を取る
// ここに ../ を取る処理を書く
return $ans;
}
てな具合です。
今自分のやり方だと、../ をループで取り除くような処理になってしまうのですが、これをもうちょっとすっきりできないかと。
506 :
504 :2005/08/22(月) 13:16:58 ID:???
>>504 ありゃ、便利な関数があるもんですね。
自分の無知さに打ちひしがれてしまいました・・・
でも、できれば単純な文字列処理にしたいです。
そのパスがサーバ上に存在するかどうかは無関係にしたいです。
>>506 の名前欄まちがえました。502 です。
508 :
502 :2005/08/22(月) 13:34:54 ID:???
んー、なんかイマイチなんで出さなかったのですが、やっぱり一応答えが出る版を書いておきます。 function toruDot($path) { $a=Array(); foreach(Explode('/',$path) as $nm) { if($nm=='.') continue; if($nm=='..') { if(Empty($a)) break; Array_Pop($a); } else { $a[]=$nm; } } return Join('/',$a); } スッキリしないですよね? 正規表現一発ぽんとかでできるといいなぁ・・・
509 :
nobodyさん :2005/08/22(月) 14:08:07 ID:g44ZS3v9
ユーザー定義関数の中でグローバルスコープの配列変数を 参照するのはどうしたらいいのですか?
>>502 >パスのルール。
> ・パスは絶対パスで、/ から始まる
>>505 >入力されるパスは上記ルールに従っています。
>この条件で、./ や ../ を含んでいるパスを適切の処理して
入力値が絶対パスで/から始まるんじゃないの?
どこに、./ や ../ が含まれるというの?
そもそも「入力されるパス」ってどこから入力されるのよ。
512 :
502 :2005/08/22(月) 15:15:30 ID:mbIy2UAI
>>511 入力ってのは、関数の入力です。汎用処理なので、元々どこから入力されたかはどうでもいいです。
お題は、パス中に含まれる相対表記を省いたパスを作る、ということなのですが、そんなに分かりづらいでしょうか?
で、その処理対象のパスの記述として、先頭は / で始まる、ということにして、それを便宜上絶対パスと書いたわけですが。
>>508 にサンプルコード出しときましたんで、興味があったら見てみてください。
# このコードは / から始まってなくてもうまく動きますが
早い話が、
>>508 と同等の処理をもっと簡単に書けないか、ということです。
あと、
>>508 のコード、if($nm=='..') のブロックの中は
Array_Pop($a);
if(Empty($a)) break;
が正しいです。
>>508 基準となるパスがないと
../hoge
ていう入力とかどうしようもないねえ。
田中 太郎 山田 花子 空条 丈太郎 ・ ・ ・ といった名前の羅列の、全角と半角の混じったスペース(空白)を。 苗字と名前の間のスペースをアンダーバーに置換したいのですが。 -----結果----- 田中_太郎 山田_花子 空条_丈太郎 $com = mb_ereg_replace("\t\n\r\f", "_", $com); では駄目なのでしょうか。 Fatal error: Call to undefined function mb_ereg_replace() in /home/ryota/httpd/mail_acc/tt5.php on line 9 と言われてしまいます。 もしやmbstring関係を有効にするためにPHPをコンパイルして入れなおさなければ駄目ですか・・。 FedoraCore4で全てyumでインストールしてます。
" "と" "でいいんじゃね? "&なんたら;"とか。なんたらの部分は忘れた。
>>516 $com = str_replace(" ", "_", $com);
で半角のスペースは置換出来ました
全角は
$com = str_replace(" ", "_", $com);
では出来ませんでした・・
$com = mb_ereg_replace(" ", "_", $com);
はやっぱり
Fatal error: Call to undefined function mb_ereg_replace() in /home/hoge/httpd/mail_acc/tt5.php on line 10
と怒られました
>>515 php-mbstring-*.*.*-**.rpm
というパッケージをインストールしろ
それで
/etc/php.dにmbstring.iniができてればOK
>>518 エラーが出なくなりました!
ありがとうございます
相変わらず置換は出来ません・・
やってる事
$com = str_replace(" "," ",$com);
$com = str_replace(" ", "_", $com);
$com = mb_ereg_replace("\t\n\r\f", "_", $com);
悪あがきしていますが駄目です・・
正規表現関数を試してみます
520 :
515 :2005/08/22(月) 18:01:57 ID:???
ソースは下記です
フォームから
>>515 のような名前の羅列を取り込みます
$com = $_POST['com'];
mb_regex_encoding('sjis'); // エンコーディング
$com = str_replace("\r\n", "\r", $com); //Win系は\r\n$com = str_replace("\r", "\n", $com); //Mac系は\r
$com = str_replace("\n", "<br>", $com); //\n除去して<br>
$com = str_replace(" "," ",$com);$com = str_replace(" ", "_", $com);$com = mb_ereg_replace(" ", "_", $com);
print $com;
521 :
512 :2005/08/22(月) 18:38:56 ID:???
>>513 別に宿題じゃないんだけどね。
こういう処理やるたびに同じようなコード書いて、そのたびにいつも同じようなこと思ってるわけです。
よくある処理なのにこんなにステップ数をかけるのはいかがなものかと。
だから、もうちょっと上級のコードを書く人はいないのか聞いてみた。
というか、たとえばパスを手入力させる機会があったとき、不正なパスを入れられないようなロジックを入れない?
>>508 そういう問題を簡易に解決するために、パスの先頭は / で始まるということと、../ によりートより
深く潜った場合の戻り値について
>>502 に挙げてるんです、
ちなみに
>>508 のケースでは、カレントの親には到達させるパスは不正ということで、ヌルストリングを返すようにしてます。
きっとソースファイルの文字コード
>>521 自作自演がしたいの?
そうじゃなければ、もう少し書き込み方を勉強しなさい。
>>521 結局のところ何がしたいのか、いや、したい事はなんとなく判るんだが、
どういうインターフェースなんだかがさっぱり見えない。
想定される不正入力値はどういったもので、
その値をどう加工したいんだか…
開発者としての志は高いみたいだが、
それ以前に他人に伝えるコミュニケーション能力に問題あり。
525 :
521 :2005/08/22(月) 20:19:57 ID:???
>>524 print toruDot('/abc/def/ghi.html'); → /abc/def/ghi.html
print toruDot('/abc/def/./ghi/jkl.jpg'); → /abc/def/ghi/jkl.jpg
print toruDot('/abc/def/../ghi/jkl.gif'); → /abc/ghi/jkl.gif
print toruDot('/../abc/def/ghi.txt'); → ヌルストリングス
print toruDot('/abc/././def/../ghi.pdf'); → /abc/ghi.pdf
print toruDot('/abc/.././def/../../ghi.zip'); → ヌルストリングス
print toruDot('/../abc.lzh'); → ヌルストリングス
等となるような関数 toruDot を定義することです。
不正云々はこのように正規化された後で呼び出し側で判断するので、この関数の処理の範疇ではありません。
print toruDot('../abc.lzh');だと何を返すのが希望なんだ?
>>526 それは /../abc/lzh が指定されたものと同じとし、ヌルストリングスです。
ただし、パスの先頭は / で始まるということにしましたので、そういうケースは無いものとして扱ってよいということで。
いや、もちろん対応してもいいんですが、この課題の発端が、「Preg_Replace 一発で書けないものか?」だったので、
多分先頭が / で始まるということを絶対条件にしておいた方が正規表現を書きやすいかと思っただけです。
でも、Preg_Replace にこだわりません。
>>521 回答でもなんでもないので読み飛ばして良いよ。
>こういう処理やるたびに同じようなコード書いて、
だいたい、入力値に'/abc/.././def/../../ghi.zip'のような物を入れなきゃいけない、
それがたびたび発生する、って言う時点で、入力者か前段処理のシステムに問題がある。
まずそっちを改善すべきではないだ廊下。
529 :
521 :2005/08/22(月) 21:39:53 ID:???
>>528 ウェブアプリなら、フォームでどんなにがんばっていたとしても、クエリを直接いじられることも想定すべきだと思います。
でも、今はそういう当初の目的よりも、できるだけ簡潔な方法を求めることに目的があります。
530 :
nobodyさん :2005/08/22(月) 21:47:18 ID:X7Dykvns
ったく低レベルしかいないスレだなw 質問の内容が理解できないバカもバカなら こんなところでマトモな解答があると思ってる502も愚か過ぎるw
>>530 馬鹿でない解答の見本をどうぞ
ただの煽りは要らん
532 :
Perl厨 :2005/08/22(月) 23:44:59 ID:???
function toruDot($path) { $path = preg_replace('/(?<=\/)\.\//', '', $path); do{ $path = preg_replace('/[^\/]+\/\.\.\//', '', ($old = $path), 1); }while($old != $path); return(preg_match('/\/\.\./', $path) ? '' : $path); } こんなものでどうでしょう。 ただ、少しトリッキーな部分があるのは否めません。 普通にexplodeして処理した方が分かりやすくて、確実でしょう。
>>512 "/a/b/./"は、"/a/b/"になり、
"/a/b/../"は、"/a/"になり、
"/a/b/.../"は、"/"になるってことですね。<-これはないか。
一見単純に
"./"=>""
"x/../"=>""
に置換するような正規表現で出来そうだが、
”../......./..../////"とか変なパスもエラーとしてヌルストリングスを返すとか
考えれば、多少は複雑な処理になってしまうもんじゃないの。
>>532 それは /../../abc のようなときに正しく動かないです。
ループ中の正規表現の先頭は、\.\. ではない [\/]+ にマッチさせないといけないです。
この書き方が何気に面倒なんですよね。自分もその辺で悩み、玉砕されました。
しかしながら、アプローチとしてはやっぱり最初に ./ を取ってしまって、あとはループで ../ を削除していく、ってことですね。
でもこのやり方だと、無理やり正規表現を使ってる、って感じで、いまいちエレガンスを感じないんですよね・・・
# せっかく解答していただいたのにナニですが
>>533 Win系で動くサービスだと、.../ 等にも対応しないといけなそうですね。
うーむ・・・
>>512 preg_splitの分割文字を"/"にして配列につっこめば、ループで回せば出来ると思うよ。
536 :
Perl厨 :2005/08/23(火) 00:59:18 ID:???
>>534 本当ですね。
/..abc/../とかも正しく処理する正規表現を書けず、
諦めて手を抜いたのが敗因です。
537 :
nobodyさん :2005/08/23(火) 01:24:54 ID:n8cysVom
あるサイト
http://hogehogehogehoge.co.jp/ に
phpからアクセスして、
その表示されたサイトのソースを持ってくるようなスクリプトを
作りたい場合どうすればいいでしょうか?
1.PHPからあるサイトにアクセスさせる方法
2.アクセスしたサイトのソースを持ってくる方法
以上の2つをどのようにすればいいか良く分かりません。
ヘルプミーでございます
>>537 file_get_contents を使えば出来ると思うよ。
>>525 俺だったら入力値に../が含まれていたらエラー処理して終わるな
俺のウインドウヅには ./表示/可能 と言うファイルがあるし OSによってパスの最大長も違うようだけどどうするよ。
おまいら 変数に代入するときに 参照使ってますか? ( $a =& $b) php programers magazeneにあまり意味がないって書いてあった。
>>542 単純な文字列では使わないけど、配列には使ってる。
なんとなく。
というか、同一の配列を複数の参照で書き換えたりすることが多いから、習慣的に。
>>515 事故解決しました
$com = mb_convert_kana($com, "s","Shift_JIS");
どうも文字コードがきちんと指定出来てなかっただけみたいです。
参照はあんまり使わないなぁ
クラスと連想配列以外は参照使ってない。 確かにパフォーマンスを期待した参照は無意味ってマニュアルにも書いてた気がする。 と、思って再確認してみた。 > PHP 4 は変数に値の代入を行う別の方法を提供します。 > それは、 参照による代入 です。 この場合、新規の変数は元の変数を参照するだけです。 > (言いかえると、元の変数の"エイリアスを作る"または元の変数を"指す") > 新規の変数への代入は、元の変数に影響し、その逆も同様となります。 > この手法ではコピーは行われないため、代入はより速やかに行われます。 > しかし、速度の向上が体感できるのは、重いループや大きな配列または オブジェクトを割り付ける場合に限られるものと思われます。 そしたらパフォーマンスも上がると書いてあった。
547 :
nobodyさん :2005/08/23(火) 11:05:19 ID:galtEPWU
PHPでファイルを吐き出すとき、すでにファイルがあったらファイル名を連番にしたいのですが、 どうすればいいのでしょうか? 例:「123456」というファイルを吐き出すとき、すでにファイルがあったら「1234561」とする。 Perlだと $FILE = "123456"; $PATH = "./data/".$FILE; $i = 1; while (-e $PATH) { $PATH = "./data/".$FILE.$i; $i++; } open (Out, "> $PATH"); とすればいいとは教えてもらったんですが。
548 :
nobory :2005/08/23(火) 11:23:17 ID:+KXClmRt
URLから、ドメイン部分だけを抽出するには、 どのようにすればいいですか? よろしくおねがいします
parse_url()
>>547 while (-e $PATH)
↓
while (is_file($PATH))
551 :
nobory :2005/08/23(火) 11:36:45 ID:+KXClmRt
552 :
547 :2005/08/23(火) 11:48:12 ID:???
>>550 ありがとうございます。
試してみます。
文字コードが utf-8 の環境で、「ひらがな」だけをチェックする 関数を作ったんだけど、「む」だけマッチしません。 なんでだろう? $patarn = "[^ぁ-ん]"; に「む」を追加すれば問題ないんだけど。 -------------------------------------- function checkHiragana( $item ){ $patarn = "[^ぁ-ん]"; if (ereg ($patarn, $item)){ return false; } elseif (strlen($item) > 32) { return false; } else { return true; } }
554 :
nobodyさん :2005/08/23(火) 23:02:08 ID:uQaQUTbk
553に似たような質問があるけど別人です。 ----- $str1 = "あa"; $str2 = "aあ"; if (mb_ereg_match("[^ぁ-ん]",$str1)) { echo "str1 ひらがな以外が含まれます\n"; } if (mb_ereg_match("[^ぁ-ん]",$str2)) { echo "str2 ひらがな以外が含まれます\n"; } ----- こんなテストプログラムを作ったんですが、 結果は、 ----- str2 ひらがな以外が含まれます ----- しか出てきません。なぜなんでしょう? ひらがな以外が含まれていることを検出したいのですが、、、
プログラマ板から誘導されてきました。 総合的な質問スレが見つけられ無かったので、 自分も触っているphp関連の質問スレにきました。 場違いな質問かもしれませんが、答えて頂けると幸いです。 自分なりに何時間かググってみたんですが、結局よくわかりませんでした。 よろしくお願いします。 mixiやgreeのようなwebサイトを作ってみたいと思っているのですが、 どの言語でプログラムするのが良いのかわからずに悩んでいます。 (言語が決まれば参考書を買いに走るつもりです。) Java、perl、php、C#・・・。 色々あって結局どれがいいのかわかりません。 オススメの言語&開発環境などありますでしょうか? プログラムしたことのある言語はC言語 と php 。 動作させるサーバはLinax。 持っているソフトは eclipse と VisualStadio2003 です。
phpでできるかどうかぐらいは判断できないのか?
557 :
nobodyさん :2005/08/24(水) 02:58:16 ID:JrCzEQY3
>>556 phpについては、php5徹底攻略(赤マンモス本)と言う本をやっと読み終えたぐらいなんです。
レベル低くてすいません。
この本を読んだ感じでは、phpでやって出来なくはないんじゃないかなと思っています。
(phpでやるならば、もちろんリファレンスや中級者本など追加で揃えます。)
ただ、自分の中では結構大掛かりなプログラムになると思っているので、
できれば途中で「違う言語・環境の方が良かったと気づく」のは避けたいのです。
phpとCなんで直接比較出来ないかも知れませんが、
例えばeclipseよりはVC++の方がプログラムし易かったりしませんでしょうか?
(javaの開発環境についてはまだ良く知りません。)
また、検索中に
「大規模なWeb構築ならphpよりはjavaの方がいい」というサイトや、
「phpは早いけど、計算量が増えるとjavaの方が早い」というサイトを見かけました。
(もちろん、phpの方が良いという意見もありました)
こんなわけで、こう、迷わされる要素が色々とあって、
なかなか自分では判断が付かずに相談させてもらいました。
PHPとCではサーバーサイドプログラミングの仕方が全く違うことを知って欲しいのだが まずはそれから勉強してくれ。
データベースの話も出てきてないって事は、webアプリケーションの イメージも全然掴めてないって事だよねぇ。 その状態で言語をどれにするか悩んでもはっきり云って無駄な気がする。 多言語間の移植なんてリファレンスあれば難しい事でもないから、 さっさと作り始めた方がいいと思うよ。 あと、「違う言語・環境の方が良かった」となりたくなければ、プログラムを 作る所からはじめるのではなくて、設計書作る所から始めた方がいいと思う。 SNSなんて規模が大きくなるサイトなら尚更だよ。
560 :
nobodyさん :2005/08/24(水) 03:16:26 ID:JrCzEQY3
お二人ともありがとうございます。
>>558 「サーバーサイドプログラミングの仕方」ですね。調べてみます。
phpはホムペでデータベースから検索かけられるくらいの物を作ってみたのですが、
Cはweb用はおろかグラフィカルな物すら作った事がありませんでしたので。
>>559 データベースはmysql使っています。
といってもSQLについてもまだまだ勉強中ですが。
> 多言語間の移植なんてリファレンスあれば難しい事でもない
そうなんですか!知らなかったです。
まずは設計書作り。そして、とりあえず腹をくくってプログラミングするのがいいんですね。
なるほど。
>>560 559 の言うとおりまずは設計からだね。
性能要件もあるけど、ロードバランスするとかそのレベルじゃない
限り言語選択には影響しないと個人的には思う。
根底の仕様が揺るがない確固たる自信があるなら、スクリプト言語より
仕様が厳格で保守性の高い Java を。
ただし、最初の設計を誤るとプログラムが崩壊する。
最終形をを読み切れなくて、スモールスタートしたいとかスクラッチ
アンドビルドの部分がおおいなら生産性の高い PHP を。
Perl は Web 的に機能が低いし、Linux 使うなら C# をわざわざ
選択する必要はない。
rewind($fp)とfseek($fp, 0);の違いを教えてください
>>554 スクリプトがシフトジスで内部エンコードがEUC-JP
>>562 関数の名前、引数の数が違う
実行した結果は同じ
564 :
nobodyさん :2005/08/24(水) 09:47:23 ID:AR3QKhJJ
PEARのSpreadsheetExcelWriterを使用してWEB帳票を作成しています WindowsからFedoraCore4に移行作業をしているのですが、 Spreadsheetを使用したExcel出力プログラムのエラーが回避できません。 どういった対処を施せばいいのかご指導お願いします。 OS:FedoraCore4 wwwサーバ:Apache2 PHP:PHP-5.0.4 (OLE-0.5、SpreadsheetExcelWriter-0.8をインクルード) pearコマンドのpear listでインストールの確認はできています。 エラーの内容 Warning: main(/usr/share/pear/Spreadsheet/Excel/Writer.php) [function.main]: failed to open stream: Permission denied in /var/www/html/dekita/habikino/excelout.php on line 3 Fatal error: main() [function.require]: Failed opening required '/usr/share/pear/Spreadsheet/Excel/Writer.php' (include_path='.:/usr/local/include/php:/usr/local/lib/php:/usr/share/pear') in /var/www/html/dekita/habikino/excelout.php on line 3 プログラムに関連するディレクトリとファイルの権限はnobody.nobodyの775としていますが 上記のようなエラーがでてしまいます。WindowsのApache2やAnHTTPD上では動作していました。 権限をnobodyの775にしているディレクトリとファイル ・/var/www/html以下のファイル全て ・/usr/share/pear/以下のファイル全て 1:<?php 2: 3: require_once('/usr/share/pear/Spreadsheet/Excel/Writer.php'); ・: ・:?>
>>564 適当だけど、SE Linux きってみ。
if($_GET['var']) で値があるかを調べたいんですが、値が0の時はFALSEになってしまいます。 && で条件追加してもいいんですが、もっと賢い方法ありますか?
>>566 if(isset($_GET['var'])) ?
568 :
564 :2005/08/24(水) 10:43:18 ID:AR3QKhJJ
>>565 ありがとうございます。
パーミッションエラーは回避されました。
>>561 > 最終形をを読み切れなくて、スモールスタートしたいとかスクラッチ
> アンドビルドの部分がおおいなら生産性の高い PHP を。
ぴたりと言い当てられた気分ですw
スモールスタートして、機能追加、機能追加・・・とやっていこうと思っていたので、
プロセスモデルは、スパイラルモデルかラウンドトリップのつもりでした。
「まずは設計」とのお言葉通り、
どの言語にしても共通な「要求分析→外部設計」にまずは取り掛かることにします。
その段階で十分に考えを練る事が出来たらjavaもいいかなと思いました。
(長い目でみると保守性を優先したい気もしますので)
生産性の高さは、ブログのプラグインを作っている時に感じていましたので、
今の所phpを心の中では本命にしておきます。
一つ気になったのですが、
ロードバランスするとなるとphp(やその他のスクリプト言語)は向いていないのでしょうか?
スモールスタートして、万が一大規模(機能・ユーザー数)になった場合には、
ロードバランスが必要になってくると思うので、一応視野には入れておきたいのです。
570 :
554 :2005/08/24(水) 11:15:44 ID:pI/B8obu
>>563 >スクリプトがシフトジスで内部エンコードがEUC-JP
どちらもEUCになっているようなのです。
どなたかヘルププリーズ
>>569 > ロードバランスするとなるとphp(やその他のスクリプト言語)は向いていないのでしょうか?
ロードバランスって言葉はあんまり良くないかもね。
同じ機能をもつサーバを複数用意して、いわゆるロードバランスするだけなら、
それなりの仕組みをいれればプラットフォーム問わずできる。
(セッション管理には注意してな
一方で 機能ごと にサーバを分けて負荷分散するという考え方もある。
これは php ではできないと思った方がいい。(よね? おれはみたことない)
この辺は、Java だと EJB とか環境がそろっている。
って感じか。
572 :
566 :2005/08/24(水) 12:35:47 ID:???
>>567 ありがとうございます。
ただ、
$var = ""; のときでも isset はTRUEを返してしまいますね…;;
empty 使うと $var = 0; のときはTRUE…;;
>>572 それなら賢い方法はないので普通に条件式を増やしてください
if ($_GET['ver'] == "")
>>575 if ($_GET['ver'] !== "")
577 :
575 :2005/08/24(水) 14:27:24 ID:???
だめだ 未定義のときもtrueだ 結局式が2つ必要
Webで、データを投稿する際、投稿画面→確認画面→実行画面という形のものを作りたいと思っています。 この時、確認画面でデータが間違っている事に気づいた時、データを保持したまま投稿画面に戻るには どのようにするのがいいでしょうか? 確認画面に送信ボタンと戻るボタンを作り、それぞれのページにsubmitすればいいとは思うのですが、 この場合、確認画面のソースのみを触って、それぞれにsubmitする方法はあるのでしょうか? 実行画面のソースをいじればいいというのはわかっているのですが、実行画面からさらに投稿画面に 飛ぶというのはあまりやりたくないもので。 御助言よろしくお願いします。
オブジェクトが利用できるメソッドを表示する関数ってないですか? PHP4逆引大全500見てものってないです。 とあるフレームワークで $obj->getStructure() というのがエラーになるのですが、 何が悪いのかわからないのです。 よろしくお願いします。
>>579 $var = "a"がfalseになる
>580 get_class_methods 下手な参考書にたよるより公式マニュアルの見方覚えたほうがいいよ。
583 :
579 :2005/08/24(水) 16:06:20 ID:???
>>582 ありがとうございます。
公式マニュアルは、いつも見にいくのですが、いつも全くわからないのです。
答えがわかったためしがないです。読み方があるのですかねぇ。
585 :
nobodyさん :2005/08/24(水) 16:14:33 ID:Y2M5edeX
PHPを使い始めたのですが、、たまに化けたり、エラーが出てしまいます。 化けたときのHTMLと、化けてないときのHTMLを比較すると、 普段は「<TR>」となっているところが「<Tzシ」となっていました。 化けているのはこの2バイト分だけで、ほかは全く同じでした。 原因がさっぱりわかりません。何かヒントになりそうなことがあれば教えてください。 環境 OS:RedHat 9 PHP:4.3.10 Apache:2.0.54
587 :
585 :2005/08/24(水) 17:04:06 ID:???
>>586 どうもです。
ただ、化けてるときもほかのところは「TR」ってなってるんですよね。
解決方法とか、参考になるページとか知ってたら教えてください。
588 :
nobodyさん :2005/08/24(水) 17:34:28 ID:/J84pd/x
質問させて頂けますでしょうか? ここで質問して良いかどうかも解らなかったのですが、 良く出会い系サイトとかであるポイント制度のシステムなんですが あれってPHPで製作出来ると聞いたのですが・・・ ユーザーがポイントを購入するとポイントを加算していき、 アプリケーションに接続するとポイントが消費していく。 ポイントが無くなると接続をシャットアウトする。 と言うような感じのシステムなんですが、 全てマニュアル操作で良いのですが、このシステムの製作って どなた様かご指導頂けるかたおられないでしょうか?? 宜しくお願い致します。
マニュアル操作?
>>588 >あれってPHPで製作出来ると聞いたのですが・・・
PHP「でも」できるが正解かも。
>全てマニュアル操作で良いのですが
意味不明。ポイント操作を人間が行う?
24時間管理システムに張り付くのか?
>このシステムの製作って
>どなた様かご指導頂けるかたおられないでしょうか
貴方が開発するのか?
どの程度のスキルをお持ちか?
0から手取り足取り、PHPの文法から教える必要が?
それとも「ま る な げ ?」
>>578 戻るで書き込んだデータを投稿画面に送ればいいんジャマイカ?
>>588 マニュアル操作というのが意味分りません。24時間、人が張りつくのですか?
まず、ご自分でPHP+DBを使い簡単なシステムを作ってみて下さい。
ポイントを購入したら、そのユーザのDBにポイントを加算。
アプリケーションを使ったらポイント消費。
ポイントが無くなったらログアウト。
簡単です。
もし、ご自分で出来ない場合には外注しましょう。
ここで教えてもらうモノでは無いです。
>>578 セッション使う。
投稿画面:セッション内に投稿内容があればそれを表示する(最初は空になる)。
確認画面:投稿内容をセッションに入れる。
実行画面:セッション内の投稿内容を破棄。
>>593 一概には言えない。システム開発してるとこに相談して見積りしてもらいなさい。
596 :
578 :2005/08/24(水) 18:08:55 ID:???
>>591 パラメータで送って、投稿画面でGETするということでしょうか?
実は、かなりデータ数が多いので、あまりパラメータ渡しにはしたくなかったのですが、テストしてみたいと思います。
ちなみに、実行画面からさらに投稿画面に飛ぶ作業をあまりしたくない理由は、回線が細いのと、端末が携帯からという理由です。
ありがとうございました。
597 :
578 :2005/08/24(水) 18:12:30 ID:???
>>594 なるほど、セッションは考えていませんでした。
ありがとうございます。
598 :
nobodyさん :2005/08/24(水) 18:28:24 ID:/J84pd/x
>>592 有難う御座います。
一度参考書等みながらやってみます。
失礼な事をお聞きしますが、
ちなみにもしあなたが作成するならどれくらいの
金額で作成しますか??
トラぶるのが目に見えてるので引き受けない。
>>598 592 じゃないけど。
決済処理で他システムにつないで云々がなければ、30万。
>>598 いや、だから金額決めるにも様々な要素があるので一概には言えません。ほんとに。
人だけで見ても、ダンピングしてまで仕事まわしてる人も居るし、きちんとやる人も居る。
金額は全然違います。なので勝手な金額を言う訳にはいきません。
それを元に交渉されると外注先が困ると思うので。
出会い系ならパッケージで売ってるのがあるんじゃないの?
603 :
nobodyさん :2005/08/24(水) 18:59:19 ID:/J84pd/x
皆さん色々と返答すんません。。。 実は製作会社に問い合わせたところ私の希望のシステムは やはり20万〜50万かかるような事言われました。 プログラミングの技術者って凄いですね。 でも解らなければ制作会社頼るしかないかっ・・・ でも制作会社側はソースを公開するって言ってから、 仮にお金かかってもそのソースを参考にするのも勉強 ですかねっ!潔く制作会社に頼みます。(;´д`)トホホ
>>599 さんへ
トラブルってどんなトラブルがあるんでしょうか??
私は基本的にそう言うのは絶対ない人間なんで大丈夫ですよ。
>>604 >>599 ではないが、私は大丈夫と言い切る奴ほど危険。
思考に柔軟性を欠いているとしか思えない
606 :
nobodyさん :2005/08/24(水) 19:12:25 ID:Zqn/ZIzx
初歩的な質問もうしわけありません。 レンタルフォーム?で、お金を払ってフォームを貸してもらうものに登録し、 そのフォームが、HTMLで自分なりにアレンジして改造できる場合、そこにPHPを 埋め込んだりすることはできるのでしょうか? PHPを使えるサーバーはもちろん用意します。 というのも、レンタルのフォームでは、そのフォームに入力されたデータがCSVで 毎日ダウンロードしないといけないようになっているのです。 これを自分なりに、PHPを使い、MYSQLなどと連携し、RDBでデータベースを作るようにしたいのですが・・・ フォームを借りずに、自分で一からPHPでフォームも作成したほうがやりやすいでしょうか?
>>606 レンタルの必要なし
出来るのなら自作汁
>>606 画面(HTML) だけレンタルフォーム(?) からパクって、自分のプログラムに
いれるってこと?だとしたら、技術的には出来るけど著作権にかかる。
自分しか使わないならとめないけどさ。
609 :
606 :2005/08/24(水) 19:25:07 ID:Zqn/ZIzx
>>607 ありがとうございます。
一応、レンタルのものにPHPを埋め込むということはできるのでしょうか?
いずれは全て自作したいと思っていますが。
610 :
606 :2005/08/24(水) 19:27:56 ID:Zqn/ZIzx
>>610 "HTML の変更"で POST="url" って書いてあるところを変えることができるなら可能。
url を自分の PHP のアドレスにする。
しかしレンタルフォームを見てないけど、たぶんできないだろう。
メリットもよく分からない・・・。
>>611 POST先変えたら、何をレンタルするんだか…
>>613 だって・・・、やりたいっていうから・・・(涙
615 :
nobodyさん :2005/08/24(水) 21:20:30 ID:YErBP/YJ
phpで作成されたメールフォームで、メールの内容データをcsvにて保存できるフリースクリプト を探しています。 どなたかご存知の方いらっしゃいましたらぜひ教えてください〜!
>606 レンタルフォームを借りる顧客は、基本的に システム部分を借りるために借りるんだよ。 電子署名関係の費用を浮かしたりできるしね。 PHP部分を自作するスキルがあるなら、 HTML部分も自作する方がはるかに簡単だよ。
>>571 垂直分散させることは無いと思うので、
「負荷分散」させるか「機能分散」させるかも設計段階でちゃんと考慮するようにします。
(ある意味それによって言語が決まってしまいそうですね)
ホント勉強になりました。ありがとうございました。
>>615 CSV保存って・・・メールフォームじゃ無いじゃん(w
掲示板スクリプトでも改造しなさい。
>>571 機能ごとの分散をどの程度行なうかによるけど、
もし本当にphpでやるとしたら、スクリプト分けて
Apache側でurl見て飛ばすようにする位しかないんじゃないかなぁ。
保守性も悪くなるし、かっこ悪いのは確かだね。
>>619 タイムリーとは?
CSVではなく、RDBでってこと?
623 :
nobodyさん :2005/08/25(木) 00:55:18 ID:Obq2ezYL
PHP5をFedora4のyumインストール環境で使ってるんだけどPEARの使用で躓いてます。 SMTP経由でメール送信するためのサンプルをくんでたんですが <? require_once("Mail.php"); require_once("Mail/mime.php"); $mime = new Mail_mime("\r\n"); ?> これでエラーが出ます。 きちんと読み込むMail.phpとmime.phpは存在しててきちんと通ってます。 $mime = new Mail_mime("\r\n");で明らかにエラーでてるんだけどこれってナニがいかんのですか? 引数省略も可能なはずだからしてみたけどそれでも駄目です。 「極めるPHP」のP131の引用なんですけど…
エラーメッセージを書け、ハゲ
625 :
nobodyさん :2005/08/25(木) 01:18:07 ID:Obq2ezYL
エラーって表示されないで真っ白っす。 php.iniの error_reporting=E_ALL display_errors=On にはしてあります。
>>625 真っ白ではなく、どうなるのが望みなのだ?
627 :
nobodyさん :2005/08/25(木) 01:31:39 ID:Obq2ezYL
あー・・・実際には一番したにprin "成功";っていうのを入れているのでそれが表示されて成功なんですよね…。 PEARのDB系のプログラムは動いてるんですが。 ちょっとエラー表示もされない時点で明らかにおかしいんでもう少しみてみます、ごめんなさい。
Mail_mimeした時にどこで落ちてるか調べるために new Mail_mime の中でやってる 処理の中の一行毎にerror_logなりなんなりでログはけばどこで落ちてるかわかるっしょ。 まずはそれからだ。
630 :
nobodyさん :2005/08/25(木) 02:09:23 ID:95Treuew
PHPとCGIはどこが違うんですか
PHPでもCGIできます
632 :
623 :2005/08/25(木) 02:28:56 ID:Obq2ezYL
先ほどはくだらない質問してしまい大変申し訳ないです…汗 言いにくいんですが原因は、実験鯖が2台あってAで実行してるつもりがBで実行しててAの設定を必死でいじくっているという情けないボンミスでした。 けれど次はもう少し価値ある(?)疑問が昨日からありまして、これのせいでPEAR自体を信じられなくなっていて上でつい軽率な質問をしてしまったのですが…。 その疑問というのが <? require_once("Net/POP3.php"); $pop3 =& new Net_POP3; $res=$pop3->connect('サーバーホスト名'); if(!$res)die("connect err"); $res=$pop3->login('ユーザー名','パスワード'); if(!$res)die("login err"); $pop3->disconnect(); ?> という、pop3でメールを呼び出すサンプルの途中なんですが、このloginの部分でエラーが出てしまいます。 Notice: Undefined offset: 3 in /usr/share/pear/Net/POP3.php on line 298 これはもうPEARの内部のコードですので一応みてはみたんですがちょっとぱっと理解するのは苦しいです。 ちなみに環境はPHP5です。 これは一体なぜなんでしょう…。
>>632 とりあえず一行目に、
error_reporting(E_ALL ^ E_NOTICE);
いれて先に進み、PEAR の偉い人が来るのを待つ。
>>632 loginの引数3つ必要とかそういうのじゃないの??
とりあえずソース見ようよ・・
POP3.phpの298行目で配列の要素の3番目を参照しようとしてるけど
その配列には3つ目の要素無いです。ってエラーだと思うよ。
>>632 634のいうことがあたってる気がする。
普通、サーバーホスト、ユーザーIDとパスワだけじゃ
どんなDBにも入れんです。
んで、この場合足りない3つ目の引数は
DB名じゃないかと。
DBじゃないやろ。
ホント釣りじゃなくて聞きたいのですが、 hoge.php?hogeの場合は、hoge.phpとは別のページを表示させる というのはどうやるのでしょうか? もし宜しければ解説サイトも教えていただけると幸いです。
・header('Location: URI');を使う。 ・hoge.php?hogeの時に、お目当てのファイルをrequire();する。もしくは、hoge.phpに埋め込む。 ・<meta http-quiv="Refresh">を使う ・JavaScriptなで自動的に他のページにジャンプする等 パッと思いついただけでこれだけ。他にもまだあるかも。 解説は自分で探してくれ。
>>632-634 引数不足なら、Warning: Missing argument でるんじゃね。
function login($user, $pass, $apop = true)
だから、2引数でも動くし。
まぁとりあえず、
$res=$pop3->login('ユーザー名','パスワード', false);
にしておく。
ちゃんとソース読んでないけど、
なんか POP3 サーバが変な返値してる気がする。
だめなら試験している POP3 変えてみるよろし。
>>636 ナイスつっこみ。
640 :
nobodyさん :2005/08/25(木) 08:35:58 ID:NxH/rXi6
テキストファイルの先頭の行だけ抽出してその行だけ削除したいのですが、 どのようにやったら実現できるのでしょうか? ご教授お願いします。
>>640 そのまんまのことやれば良いと思うけど。
どこでつまずいたんだい?
642 :
nobodyさん :2005/08/25(木) 09:25:27 ID:NxH/rXi6
>>641 $filename = "sample.txt";
$lines = file($filename);
$fp = fopen($filename, 'w');
for ($i = 1; $i < count($lines); $i++) {
fputs($fp, $lines[$i]);
}
fclose($fp);
echo $lines[0];
このように書きましたが、もっとスマートに書けないかと思いまして。。
643 :
nobodyさん :2005/08/25(木) 10:52:35 ID:DuoTARf6
---sample.html--- <form action="sample.php" method="post"> <input type="text" name="word"> <input type="submit" value="送信"> </form> ---sample.php--- $word = $_POST['word']; print "$word"; という、ごく普通の変数の受け渡しについてですが、 ほとんどの言葉(日本語)はきちんと受け渡しができるのですが、 いくつかの言葉が受け渡しできません。 たとえば、「道路」という言葉が受け渡しできませんでした。 encodingはhtmlもphpもEUC-JPでそろえてあります。 一部の言葉だけが受け渡しできないという原因は何でしょうか?
>>642 $filename = "sample.txt";
$lines = file($filename);
array_shift($lines);
$fp = fopen($filename, 'w');
fputs($fp, implode('', $lines));
fclose($fp);
>>645 様
解決しました━━━━━(゚∀゚)━━━━━ !!!!!
本当にどうもありがとうございました!! このご恩は忘れません。
>>644 ふむふむ。。
未だに理解できてない部分がありますが、今後の参考にさせて頂きたいと思います。
お忙しい中、本当にありがとうございました。
648 :
632 :2005/08/25(木) 12:39:32 ID:zPPHIyNW
もちろん第三引数も指定してやってはみてるんですけどだめなんですよね・・・。 そのあたりはありとあらゆる手段を試してみたんですが。 サーバーも2つ試したんですがだめだったので、プロバイダーの提供するメールアドレスのサーバーとか使ってみて実験してみます・・・
自分が利用している掲示板に2chと全く同じ10文字のトリップ機能を付加したいのですが、 関数が分からず途方に暮れています。どなたかご教示願います。
>>649 「トリップ ハッシュ」でググって適当に実装すればー
651 :
nobodyさん :2005/08/25(木) 14:57:15 ID:At275aLQ
スレッド形式の掲示板を作って
652 :
nobodyさん :2005/08/25(木) 15:04:37 ID:At275aLQ
途中送信してしまいました。すみません。 スレッド形式の掲示板を作っているのですが、テーブルを2つ作成し、 tbl_thread(スレ管理用)にthreadno,timestamp,title tbl_message(レス管理用)にmessageno,threadno,timestamp,user,message というフィールドを作成しています。 タイトル一覧の画面にて各スレッドのレス数を表示させたいのですが、 これはその都度tbl_messageをthreadno毎にグループ化してcount()してやる必要があるのでしょうか? スレ・レスともに増えていったらその都度tbl_messageの全てについて処理すると重くなるかも?と思ったので なんとかtbl_threadの方にレス数も格納したいのですが、 投稿時に投稿後のテーブルに対するレス数をtbl_threadに格納するという方法だと 同時刻に投稿があった場合(トランザクションが同時に実行された場合)に誤差が生じてしまいそうです。 まぁ同時に投稿がある可能性もさほど高くはないし、一度誰かが投稿すればまた正常な数値に戻るはずなので 問題ないといえばないのかもしれませんが・・・。 こういった場合、1.その都度tbl_messageで数える方法 2.誤差くらいあっても処理が軽そうな方法 のどちらを選ぶべきなのでしょうか? よろしくお願いします。
PEAR::DB でDB接続アプリケーションを構築中です。 そこで一つ質問なんですが、PEAR::DB も pg_connect のように、 PHPが終了すれば自動でコネクションを閉じてくれるんでしょうか? 確か pg_close は持続的接続じゃなければ使う意味があまりないと聞きました。 であれば $db->disconnect も省略できるのかな…? よろしくお願いします。
PEAR::DBもpg_connectしてるだけだよ。 ソース見てみたら?
655 :
653 :2005/08/25(木) 15:31:03 ID:???
>>654 pgsql.php を見たところ確かに pg_connect 呼び出してましたね…
てっきり独自の処理でコネクション張ってるものだと思ってました。
お騒がせしました。
回答ありがとうございました。
>>653 >確か pg_close は持続的接続じゃなければ使う意味があまりないと聞きました。
違う。持続的接続の場合に意味がない。
「意味があまりない」という下りは、通常の非持続的接続の場合には
PHPスクリプト終了時にDB_close相当の後処理が自動的に盛り込まれてるのと混同している。
>>652 トランザクションって意味が分かっていないのかな?
トランザクションというのは、複数の処理をひとつの単位として
管理するもの。
というわけで、トランザクション処理をしているのならクライアント
から同時にリクエストがあっても不整合がおきないように
トランザクションごとにデータベースがちゃんと処理する。
エスパーレスすると、652 はトランザクション対応じゃない MySQL を
使っているので、2の方法を使うなら、lock tables を使う。
PHP と関係ないので、これ以上は他のスレでどうぞ。
ttp://cgikon.com/search/detail.php3?cgi_id=17 ↑こちらのphpスクリプトを落として実行してみたのですが、
結果がすべて空白になります
ttp://cgikon.com/sample/php3/form_view.php3 正しい結果例↑
自宅サーバーなので、エラーログを見てみると
52行目でエラーがでているようです
エラーログ
php notice: underfined variable: NAME属性 in /var/www/html/form_data.php on line 52, referer:
http:// 〜/Form_php.html
php52行目周辺
48// 値の取得
49
50for($loop = 0;$loop < count($title);$loop++) {
51$key = $title[$loop];
52$val = ereg_replace("\x0D\x0A|\x0D|\x0A","",$$key);
53$result[] = $val;
54}
55$result[] = date("Y/m/d H:i:s",time());
サイトのFAQのところにはhtml側と保存する側(form_data.tsv)のNAME属性が一致していない場合とありましたが
完全にすべて一致しております。
どこかエラー可能性のある場所はありますでしょうか?
よろしくお願いします。
>>658 全部見る気はしないがようするにform_data.tsvで指定されているnameと受け取るnameが一致してないって事でしょ
>>658 52行目 $val = ereg_replace("\x0D\x0A|\x0D|\x0A","",$$key);
の「$$key」を $_GET[$key] か $_POST[$key] に変更すればいける。
いまだにphp3を使ってるのだろうか。 セキュリティーホール満載な上に処理が遅いのに。拡張子だけだったらいいんだけどヽ(´ー`)ノ
662 :
653 :2005/08/25(木) 20:24:41 ID:???
>>643 確認してみたら俺とこもだ。
無料スペースでPHPの設定変えられないとしたらどうしたらいいのでしょう。
多少それなりに自分で考えてみました。
どうやら他の文字も一緒に送ればいいみたい。
こんなんでいいかな。
えぇ・・・と。
addslashesについて質問です。 magic_quotes_gpc=onに設定してある状態で、 テキストボックスから"hoge"のような文字を入力し、GET/POSTで渡した先で何も処理せずに表示させると 「\"hoge\"」と表示されますが、 そのままMySQLに登録すると、MySQLのクライアントから直接見ると"hoge"となっており、 エスケープされていません。 MySQLにはstripslashesのような機能があるのでしょうか?
666 :
665 :2005/08/25(木) 21:43:01 ID:???
あ、MySQLにクエリーを発行するときに、\"hoge\"という文字列は "hoge"に直されてから登録されるってことか。 ということは、掲示板で入力→確認→登録→閲覧という流れでデータを処理する場合は、 「確認」「登録」の時だけaddslashesされた状態となっているから、 「確認」の画面でhtmlに表示する場合はstripslashesを実行しなきゃいけないのか。 という理解であってますでしょうか?
>>666 たぶんいいんじゃないの。初心者なので良く知りませんが。
エスケープって、"で囲まれた文字列の中に"を入れたいときなどに使うものだから、
SQLを書くときに\"、\\、\'を使い、
DBに登録されるのは"、\、'となる。
一定時間毎に板をチェックして、特定のコテハンがレスする、あるいはスレッドを 新規に立てたら即応して定型文レスを返す、っていうプログラムを作ろうと思って いるんだけどPHPでいいとおもう? String関係に強いから気に入っているんだよね。
スクリプト氏ね
>>665-666 ヒント:addslashesでエスケープされる文字 !== MySQLでエスケープする必要のある文字
"POSTを受けるたび"にget_magic_quotes_gpc()でmagic_quotes_gpcを見て、onならstripslashesをかけて
SQL叩く前に、mysql_espace_string()でMySQL用にエスケープして、INSERT。
表示する際は何も触らない。(必要に応じてhtmlspecialchars()やmb_convert_encoding()等)
なんか、
>>665-666 を見てると、たまたま動いてるだけで、何かしら不具合抱えてる気が。
673 :
658 :2005/08/25(木) 23:07:05 ID:???
>>659 NAME属性のほうは一致していましたorz
>>660 htmlの方でPOSTにしていたので、$_POST[$key]にしたところ
いけました。
本当にありがとうございます!
>>661 リンク間違ってましたw
実際はphp4の方を使っています
ありがとうございました
じゃ迷惑行為だな
676 :
nobodyさん :2005/08/25(木) 23:40:54 ID:qTYcS0PZ
くだ質なのですか、ftruncate()関数の、ファイルを丸める処理って 何の為に必要なのでしょうか?
677 :
665 :2005/08/25(木) 23:48:29 ID:???
>>667 ,672
レスありがとうございます。とりあえず動作には問題なさそうです。
MySQLのエスケープシーケンスを確認したところ、' " \ NULL に関しては共通のようです。
(addslashesでエスケープされるので問題ないはず。)
% _ に関してはmysql_escape_stringでもエスケープしないということで、エスケープする必要はないということかな?
(DBに%,_を含んだ文字列を登録してみましたが問題ありませんでした。)
\b \t \z ついては利用する予定がないのでとりあえず無視しておくことにします。
改行がよくわからないのですが、複数行のテキストをDBに登録した場合に改行はどのように処理されているのでしょうか?
複数行あるテキストの改行をhtmlで表示するときに改行を反映させるべく「\r」や「\n」を<BR>に置き換えるといった処理をしているのですが、
DBにおいて改行は「\r」「\n」といった文字で登録されているのでしょうか?
(テキストボックスに「hoge\n」といった文字列を入力して登録してもちゃんと「hoge\n」と登録されるんだよなぁ・・・。)
(PHPでMySQLから呼び込み時に改行が「\r」「\n」といった文字に変わってるのかな?)
改行がどう処理されているかどなたかご存知でしょうか?よろしくお願いします。
>>676 俺が使うケースだが、
$f = fopen($filename, "w");
と
$f = fopen($filename, "a");
ftruncate($f, 0);
は等しいわけね。
で、何が違うのかというと、
ファイルをロックしたい時。
前者はロックする前にサイズが0になってしまうが、
後者ならfopen()の直後にflock()を入れれば問題ない。
この場合はrewind()でも似たようなことができるが、
ftruncate()の方が厳密に思うのでこれを使っている。
>>675 迷惑行為でもない
どちらかというと秩序を守るためのやむを得ない行為というべきか。
680 :
676 :2005/08/26(金) 00:23:23 ID:???
>>678 なるほど。より安全にって事ですね。
シビアなプログラムでは、要求される仕様って事ですね。
>>678 こら、嘘教えるな。
rewind()はサイズは変えない。
普通にrewindを使っている訳だが
>>681 ああ、すまない
前提を勝手にこの先まで考えてた。
ファイルポインタを最初に戻せば、
この後fputs()かなんかで上書きされるだろうから
結果的には同じになるパターンが多いと思ってね。
まあ、元より小さいデータを書き込むとゴミが残ってダメダメなんだけど。
すいません・・・ PHP のエラーメッセージ一覧というのはありますでしょうか?
>>685 ソースを zend_error と php_error で grep すればいいんじゃないだろうか。
html上にで、SSIのincludeを使ってphpファイルを読み込んでるのですが、 includeを2回使うと前の方だけちゃんと実行されるのですが、 後ろの方はソースが展開されてしまいます。 (順番を入れ替えても前の方だけちゃんと動く) これはapacheとphpのどっちの問題でしょうか?
>>686 やってみます。 ドキュメントってのはないんですね・・・。
ありがとうございました。
HTTP と HTTPSでセッションを保持させたいんですけど どうやってやるんでしょうか。
>>689 ドメインとサーバーが一緒だったら気にしないで作れるんでないの?
Windows Vistaのユーザーエージェントってどんなだ?
PHP5にてSOAPの通信がうまくいきません。 うまくいかないのは、ファイルを添付する方法です。 DIMEで加工してやらないといけないらしいですが、 具体的にどうすればよいのですか?
694 :
nobodyさん :2005/08/26(金) 13:57:14 ID:nyexn78S
PHP4.3.10でファイルのアップロード処理がうまく動きません。 ↓のソースでアップロードファイルの名前が表示されると思うのですが、 表示できません。どこか間違っていますでしょうか? php.iniの設定はfile_uploadsがOnなのは確認しました。 <HTML> <BODY> <?php echo "[".$_FILES['userfile']['name']."]"; ?> <FORM method="POST"> <input type="file" name="userfile"> <input type="submit" value="送信"> </form> </body> </html>
695 :
nobodyさん :2005/08/26(金) 14:16:39 ID:bg4VVVx+
質問です。投稿系のサイトを現在作っています。 投稿された記事を、ファイル出力して管理するか、DBで管理するか悩んでいます。 記事の検索や、投稿者のポイント管理なども考えているのでDBのほうが便利だとは思うんですが、レンタルサーバなのであまりサーバに負担をかけてしまうのも心配です。 実際、ファイル出力とDB管理ではどちらがよいのかアドバイスをお願い致します。
696 :
694 :2005/08/26(金) 14:20:10 ID:???
自己レス
FORMタグに「enctype="multipart/form-data"」を入れたらアップロードできました。
とりあえずこれで行こうと思います。てかマニュアルに載ってなくね?
>>695 俺はDBが好き。
>>694 <form enctype="multipart/form-data" action="_URL_" method="POST">
>>696 ファイルアップロードのenctypeにmultipart/form-dataを指定するのはHTMLの決まりであってPHPは関係ない
700 :
nobodyさん :2005/08/26(金) 16:08:45 ID:wVCDYq5x
どなたか教えてください。 リンクにカーソルを乗せると、リンクの説明など文字を出すことができますが、 カーソルを乗せたときに、そのリンク先のファイル更新日付を出すにはどうすれば よいですか? よろしくお願いします。
>>699 694ではないが、PHPは関係あると思う。
アップロード出来ない状態が既に関係している。
>>701 PHPに限らずPerlでもJavaでもRubyでもPythonでもCでもenctype="multipart/form-data"が無いとアップローで出来ないから
んなことどうでもいいし、誰でも知ってる。次の話題へどうぞ。
つまらんw
csvから取り込んだデータを一行づつ配列入れて array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) array ( [0] => あ [1] => い [2] => う [3] => え [4] => お ) その後、すべての行をさらに配列の中に入れるには array ( array[0] ( [0] => a [1] => b [2] => c [3] => d [4] => e ), array[1] ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ), array[2] ( [0] => あ [1] => い [2] => う [3] => え [4] => お ) ) どのようなソースを書けば良いのでしょうか?
>>707 $fp = fopen("test.csv",'r');
flock($fp, LOCK_EX);
while(!feof($fp)){
$data_line = explode(",",chop(fgets($fp)));
$data_all[] = $data_line ;
}
flock($fp, LOCK_UN);
fclose($fp);
//print_r($data_all);
>>700 そのリンクの説明のところに、
ファイル更新日付を書けばいいんじゃないの。
filemtime
偉大なる
>>708 さま。707です。
ありがとうございます。
>>707 です。
>>708 のソースで、私の利用している鯖では
PHPのバージョンが古いためなのか
4行目のfgets($fp)をfgets($fp,データ長)
としないとエラーが帰ってきました。
>>712 $data_line = fgetcsv($fp, 1024);
というのもある
>>712 さんどうもです。
カンマ区切りのCSVファイルには
$data_line = fgetcsv($fp, 1024);
タブ区切りの時には
$data_line = explode("\t",chop(fgets($fp)));
と使い分けてみます。
>>714 $data_line = fgetcsv($fp, 1024, "\t");
というのみある
くだらねぇ質問です。 PHP5をWin上でApache2のモジュール版として動かしているとき、__destructの中では一切ファイルが開けませんでした。 CLIだと__destructの中でもちゃんと開けました。 これは一体どういうことですか? マニュアルのどこかに書いてあったら教えてください。
>>717 ヒント
function __destruct() {
echo getcwd();
}
>>707 です。
715-716さま
ありがとうございます。
PHPの日付の計算について質問です。 DBにDATE型で登録してあるデータはYYYY-MM-DDという形式になっていますが、 たとえば今日の日付と一致するかどうかは if ($col["date"] == date("Y-m-d")) で判定できますが、 今日以前のものかどうかを判定するのにたとえば if ($col["date"] < date("Y-m-d"))で判定できるのでしょうか? 試したところ問題なく動作しているように見えるのですが、これでいいのでしょうか? YYYY-MM-DDやYYYY/MM/DDという形式のデータ同士の比較はPHPは対応していると考えてよいのでしょうか?
>>720 文字列としての比較になるけど、問題はなし。
ローマ字で aiueonn と入力すると あいうえおん と返してくれるライブラリーってないですか? Javascriptでは見たことあるのですがPHPでないですかね? 宜しくお願いします。
723 :
nobodyさん :2005/08/27(土) 22:08:56 ID:oI14vExU
ここでこのようなお願いをするのもどうかとは思いましたが・・・
私にはPHP等のプログラミングは不可能と判断しまして、お願いがあります。
PHP+DBで小規模なシステムを製作して頂ける親切な方おられないでしょうか?
勿論ある程度の謝礼は致します。
あと製作後のクレームに関してもノークレームと言う条件でも構いませんので
どなた様かご協力頂ける方おられませんでしょうか??
宜しくお願いします。
もしやっていただけそうな方いましたらメール下さい。
値段的な交渉とシステムの構造をご説明致します。
[email protected]
>>723 恐らく連絡される人みんなが聞く事になると思いますが
サーバーのOSや、サーバーの所有者は誰なのかも
明記しておくと余計な説明の手間が省けていいかと思います。
サーバーのOSは何を使っているのか、開発者はサーバーを触れるか
(レンタルサーバーだと自由に出来ないですよね)
とか結構大事な問題ですので。
727 :
nobodyさん :2005/08/27(土) 22:23:16 ID:oI14vExU
>>724 >>725 はい、まずは予算なんですが10万円程でお願いしたいと思ってます。
それとサーバーなんですが、一応エクスビットと言うところの
レンタルサーバーでCGI・PHP・は可能でDBも2つ作成できるとの事です。
他に詳しい環境等お聞きする事何かありますでしょうか??
728 :
nobodyさん :2005/08/27(土) 22:25:58 ID:oI14vExU
>>726 マルチって言うのはどう言う事でしょうか??
すみませんがあまりプログラミングの事解らない物で、
すみませんが教えて頂けますでしょうか?
730 :
nobodyさん :2005/08/27(土) 22:40:02 ID:oI14vExU
>>729 これが何か問題ありますか??
だいぶ前に何も解らずにやっただけの事柄ですけど、
誰にだって失敗や興味って言う事はありますからね。
今はやってませんし、むしろあなたみたいにメールアドレスから
人の情報を公開する方が悪質では??
まあ私は子供ではないのでこれ以上の事はいいませんが!!
626 名前:nobodyさん[??] 投稿日:2005/08/25(木) 21:33:57 ID:??? 何処に書き込みしたら良いか解らないので、 ココにも書き込みさせて頂きます。 実はPHPについて私自身今から勉強しても かなりの時間がかかるかと思いまして、 って言うか多分無理に等しいと思い、 どなたか親切な方に小規模なシステムを製作 して頂きたいのですが、ダメでしょうか?? 勿論報酬は致します。交渉させて下さい。 もしやって頂ける方おられましたらお願いしたいのですが? ノークレームと言う条件で構いませんので!! 詳しい内容はやって頂ける方がおられましたらご説明 致しますので、宜しくお願いします。
うん、面白い展開だ。
734 :
nobodyさん :2005/08/27(土) 23:18:11 ID:oI14vExU
結局こちらで製作依頼するのはやはり厳しい事なんでしょうか? やって頂けない理由か何かあるのでしたら、教えて下さい。 私的には、お金の方は製作前に半金と製作後に残金と言う形で きっちりお支払させて頂くのですが。値段的にもやはり難しい んでしょうかね??
「こんなCGI作ってください」スレにもあった…
>>734 まじめな話。きちんと業者に頼めば良いじゃない。
つか、ビジネスなめてない?社会人?
>734 可哀想だからマジレスすると、難しいと思います。 ・案件の規模が分からないけど、とにかく予算が低すぎます。 ・製作前半金と製作後残金って、ゴルゴ13か何かですか?w 他人と仕事したことあります? ・こういう匿名掲示板で仕事の依頼をする非常識さに気づけない 人間と仕事をするのは不安です。
738 :
nobodyさん :2005/08/27(土) 23:45:19 ID:oI14vExU
>>736 真面目な話。
なら君はビジネスをどう捕らえてるの?????
業者に頼めば安いとこで16万だったわ!!
でも10万で個人的に取り引きするなら相場じゃねぇ〜の!!
俺が何をナメてるのか教えてよっ??
>738 じゃあこんなところでうだうだ書き込みしてねえで その業者に16万で頼めや。めちゃめちゃ安いじゃん。 頭沸いてんじゃねえか?
740 :
nobodyさん :2005/08/27(土) 23:49:52 ID:oI14vExU
>>737 私はこのような形で仕事依頼した事無いから私も不安なのは解りますか?
ですから着手半金と言ったのですよ。
もし金額が少ないならまずメールでシステムお伝えしますから、
金額提示して下さい。納得いけば、前払いしますから!!
741 :
nobodyさん :2005/08/27(土) 23:53:32 ID:oI14vExU
>>739 なぜ人を中傷するような言葉が出るのですか??
私は解らないから聞いただけですから・・・
あまり熱くならないで下さいね。
お邪魔したようなので、業者に頼みます。
すみませんでした。
>>734 >>588 のシステムだとすると、10万てありえない…。20でも安い。
こちらのリスクも考えて、30からが現実的だけど…。
素直にその製作会社に頼みなよ。ありえない安さだよ。
>>740 業者に頼んで16万の見積もり提示受けたんでしょ。
それで納得しなかったからここにいるって事は、
結局16万以上は払えないってことだそ。
どんなシステム要件かは知らんが。
744 :
nobodyさん :2005/08/27(土) 23:57:09 ID:oI14vExU
>>742 そうでしたか!!
解りました。大変お騒がせしてすみませんでした。
このように言って頂けると解りやすかったのですが・・・
なぜか熱くなって噛み付いてくる方がいるもんで困りました。。。
では本当に有難う御座いました。
失礼致します。
>>741 なぜ、ここでどんなシステムなのかを明かせない?
「PHP+DBで小規模なシステム」だけでは金額面については結論でない。
で、「メールをくれれば教えます」ってあたりに怪しさが漂うから、
みんなあなたを胡散臭く思っているんですよ。
746 :
737 :2005/08/27(土) 23:58:13 ID:???
>740
うーん。自分はフリーなんでどんな仕事でも喜んで
お請けしたいと言うべきところなんですが、どんな
に小規模だったとしても16万では作れません。その
見積もり出した業者に頼むのがよろしいかと。破格
だと思います。
>>742 さんの言ってるように、自分も
最低でも30からかな。
16万でも納得がいかないなら、情報系の大学で
学生さんでも捕まえてみたらどうでしょう。
>なぜか熱くなって噛み付いてくる方がいるもんで困りました。。。 なぜ噛み付かれるか本当に分からない? 非常識だからです。 常識が分からない人間とは組めないよ。 トラブルが目に見える・・・。
748 :
nobodyさん :2005/08/28(日) 00:04:03 ID:oI14vExU
皆さん本当に有難う御座いました。 大変参考になりました。しかしなぜ業者は16万と言う見積もりを 提示したのでしょうかねww まあ一度その業者にも再度打ち合わせして確認してみます。 お騒がせして本当にごめんなさい。 失礼致します。
749 :
nobodyさん :2005/08/28(日) 00:08:49 ID:ojUxO5Uv
>>747 本当にすみませんでした。
常識、非常識は解りますが、
初めての事だったんで・・・
無神経な事言って御免なさい。
皆さんの行った事を参考にやって行きますので!
>ぜ業者は16万と言う見積もりを 赤だろうがとにかく案件の数を増やしたい所もあるだろうからね。 それぞれの業者の思惑があるんでしょう。 激安な業者には激安な理由があるかも知れないので、気をつけて。 不測の事態に対応してくれなかったり、してくれても遅いとか、 追加料金がかかるとか。 制作系の金額なんてあってないようなものだけど、 ビジネスの金額って安心を買うためのものだと思うよ。
751 :
初心者 :2005/08/28(日) 01:21:24 ID:5+BoFtHP
例えば、phpを使ってファイルの4行目から6行目までを書き換える時などは、どうすればよいのでしょうか?
〜行目ってサクッと言ってしまってるけど、 実際のファイルの中では、改行コード(\r or \n or \r\n)があるだけなんよ。 つまり、例えば4行目が始まる場所を見つけるにはそれより前に改行コードを3個探すという作業が必要になる。 また、書き換えるつーのも全体の文字数が変化するようなものだったら、 その書き換え部分以降を全て書き直す必要がある。 そういう事を踏まえた上で、、、面倒なので煙草吸ってから書く。。。
753 :
初心者 :2005/08/28(日) 01:37:53 ID:5+BoFtHP
宜しくお願いします。
>>738 ビジネスってのはいかに信用を担保するかだよ。おばかさん。
>>752 続き
まぁ、そうは言っても「〜行目を」って使い方が多いので、
一行をまるごと引っ張ってくる関数がいくつかある。
fgets()は1行を取得できる。(マニュアルに例あり)
それでも生ぬるいって場合は、file()を使ってファイル全体を配列(行単位)に取得できる。
そうやって取得し必要な場所に変更を加えた文字列をファイルに書き込めば修正できたことになる。
fgetsを使った場合は、
while(略){ fgets()で読み込み; if(修正行かどうか){ 修正; } fwrite()で別ファイルに書き込み; }
別ファイルを元ファイルにrename;
fileの場合は、まぁ説明しなくてもわかるべ。ガーと読んで修正してガーっと書き込む。
夏も終わりになると頭湧いたヤシも出てくるだろうな。
htmlから題名のみ抽出し表示するものを作っています。
どうしてもエラーが出てしまいます。
itemauc.cgi?mode=view&no=7777">題名</a></td>
だとすると題名のみ抽出したいのです。
ご教授お願いします。
<?php
$InputFile = "
http://********* ";
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
$fp = fopen($InputFile, "r");
if ($fp == FALSE) {
echo "error";
exit();
}
while (!feof($fp)) {
$s = fgets($fp);
$n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER);
for ($i = 0; $i < $n; $i++) print "・" . $ar[$i][2] . "<br />\n";
}
fclose($fp);
?>
>>757 >どうしてもエラーが出てしまいます。
どんなエラーです?
echo "error"; ?
760 :
757 :2005/08/28(日) 09:50:13 ID:???
Parse error: parse error, unexpected ')'というエラーがでます。 正規表現おかしいですか?
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/"; を $Pattern = "/(itemauc.cgi?mode=view&no=.*\">)(.*)(<\/a><\/td>)/"; にしたらどう? (「&no=.*">」の二重引用符をエスケープする「&no=.*\">」)
エスケープするなら、[?]だろ
763 :
761 :2005/08/28(日) 10:28:32 ID:???
>>762 え?そうなの? 正規表現の方じゃなくPHPのエスケープだよ?
764 :
757 :2005/08/28(日) 10:42:26 ID:???
>>761 エラーはでなくなりましたが何も表示されないです。
765 :
761 :2005/08/28(日) 11:00:35 ID:???
>>762 おっしゃる意味わかりました。
>>757 $Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
を
$Pattern = "/(itemauc.cgi\?mode=view&no=.*\">)(.*)(<\/a><\/td>)/";
にすると上手くいった。
「&no=.*">」の二重引用符と「.cgi?mode」の「?」をエスケープする。
「?」が正規表現で評価されたみたい。
766 :
757 :2005/08/28(日) 11:14:59 ID:???
>>765 できました〜
?には気づきませんでした。
いい勉強になりましたありがとうございます。
.cgiの.もエスケープしておくれよ…
768 :
nobodyさん :2005/08/28(日) 13:59:00 ID:dDBq8KPQ
CLIのPHPであるサイトのページを開いてそのページのHTMLを 変数かファイルに落としたいのですが、どんな関数をつかえばよいのでしょうか? 教えてくださいませ。
>>757 のスクリプト便利そうだからいろいろいじってみた。
これだと抽出した文字全部表示されるようだけど指定できないかな?
1つ目とか・・・いろいろやってみたんだけど難しー
便乗で申し訳ないが誰か教えてださい。
772 :
nobodyさん :2005/08/28(日) 15:22:57 ID:dDBq8KPQ
>>770 さん
>>771 さん
早速のアドバイス、どうも有難うございます。
今は時間がないので、後ほど試してみます。
有難うございました。
773 :
769 :2005/08/28(日) 17:02:12 ID:???
<?php
$InputFile = "
http://********* ";
$Pattern = "/(itemauc.cgi?mode=view&no=.*">)(.*)(<\/a><\/td>)/";
$fp = fopen($InputFile, "r");
if ($fp == FALSE) {
echo "error";
exit();
}
while (!feof($fp)) {
$s = fgets($fp);
$n = preg_match_all($Pattern, $s, $ar, PREG_SET_ORDER);
for ($i = 0; $i < $n; $i++) $aaa[$i] = $ar[$i][2];
}
print $aaa[1] . "<br>\n";
print $aaa[2] . "<br>\n";
print $aaa[3] . "<br>\n";
fclose($fp);
?>
757さんの改造してるんだけどうまくいかない。
指定したものだけ表示したいんですけど。
どこか間違ってるところありますか?
774 :
nobodyさん :2005/08/28(日) 18:00:10 ID:Io8dHAYt
動的なログファイルの最後の行だけを取得する方法で悩んでいます。 ヒントだけでもいいんで教えてください。 ISP規制中により携帯からなので 言葉足らずな点があるかもしれませんがよろしくお願いします。
>>774 コマンド使えるなら
tail -1 ファイル名
>>774 自分で作ってるログなら、最後の行だけ別ファイルにキャッシュする
そうでなければ最初から1行づつ読んで最後の行だけ取り出す。
ログファイルが追加のみでどんどん大きくなるという前提なら
最後の行を取得する時にファイルポインタの位置を記録しておけば後の負担が減る。
ログ1行の長さがある程度わかる場合は、
fseekのSEEK_ENDを使って適当な位置から読む手もある。
乱暴なやり方だが。
777 :
773 :2005/08/28(日) 22:26:33 ID:???
どうしてもできない。 ご教授お願いします。
PHP 5.0.4 Winをローカルで使用しています。 以下簡略したコードを示します。sub()内では$writeが1ではありませんでした。 index.phpで、main()のなかではなくfunctionの外でrequire('write_main.php');だと sub()内でも1が表示されました。 そういうものなのでしょうか。この現象に気づくのに時間かかってしまった。 ---index.php---- <HTML><BODY><PRE><? function main(){ require('write_main.php'); } main(); ?></PRE></BODY></HTML> ---write_main.php--- <? $write = true; if($write){ require('write_sub.php'); } ?> ---write_sub.php--- <? echo "[$write]\r\n"; // [1]が表示される。 function sub(){ global $write; echo "[$write]\r\n"; // []が表示される。 } sub(); ?>
>>773 ,777
> for ($i = 0; $i < $n; $i++) $aaa[$i] = $ar[$i][2];
この行も間違ってる。
この行の実行のされ方をよく考えろ。
>>779 function main(){
require('write_main.php');
}
は
function main(){
$write = true;
if($write){
require('write_sub.php');
}
}
こうなるわけで、
$writeはmain関数のスコープ内で扱われることになって、
globalではなくなるね。
動作としてはそんなもんじゃないかな。
>>781 ありがとうございます。
なるほど、判りました。
ということは、そうかPHPってfunctionの中にfunctionを入れられるのか。
function main()
{
function sub()
{
}
}
しらんかった。
>>779 ただのサンプルかもしれんが、関数内で require するのは混乱の元だから
やめた方がいいと思う。
バージョン違いの吸収にextract($_POST);入れるのって if (phpversion() >= "4.1.0")書いたほうがいい?なくてもかまわない?
>>783 関数内でincludeすればグローバルスコープの名前空間が汚れにくくなる利点もあるわけだが。
ヒント:ケースバイケース
>>785 extract使わずに修正するのは無理な状況なの?
787 :
785 :2005/08/29(月) 08:15:47 ID:???
>>786 レスさんくす。
最近PHPはじめたんだけど、なんこかの配布サイトのソース見ると、
if (phpversion() >= "4.1.0") {
extract($_POST);
}
って書いてあるのが結構あるのよね。
おまじないなのか、別に必要がないのか検索してもいまいちさっぱりで。
バージョンによってはこれをかかないとPOSTされたデータが入らないとかあるんだけど、互換?バージョンによってはエラーになったりするのかな?
788 :
777 :2005/08/29(月) 08:24:37 ID:???
すいませんぐぐったりしたんですができませんでした。 ループさせないほうがいいのでしょうか?
>>787 PHP4.0以下でregister globalsがoffだと動かない
if (PHP_VERSION < "5.0.0") {
extract($HTTP_POST_VARS);
}
>>788 いい加減しつこい。
というか、そんな聞き方で答えてもらえる(答えられる)わけないだろ。
そもそも、ここに貼ったソースを見る限りだと、このスレの
>>757 からのレスすら読んでないみたいだし
SJISの文字列の中から最初に全角数字が出てくる位置を 取得したいと思い・・・mb_ereg_matchを使ってできると 思いきや、マニュアルには位置を返す記述がないので できないのかなと思ってます。 全角数字が出てくる位置は どのようにしたら取得できるのでしょうか?
ごめん。mb_eregでできそう age
ごめん。やっぱわからん。
795 :
nobodyさん :2005/08/29(月) 12:33:45 ID:s5T6oqi1
>>794 file()
でファイルを全部配列に読み込む。
んで、mb_ereg を使って全角文字があるかどうかをループで探していけば配列番号わかるでしょ。
配列位置=行目だから。
>>795 行じゃなくて何文字目かを知りたいんじゃないの
mb_ereg+mb_strposで出来ないかな
>>795 792が知りたいのは○行目ではなく1行中の文字位置では?
「abc8def」なら4文字目とか。
798 :
797 :2005/08/29(月) 13:01:12 ID:???
結婚してしまった…
799 :
nobodyさん :2005/08/29(月) 13:07:56 ID:YewHBwdY
800 :
795 :2005/08/29(月) 13:10:44 ID:???
あー、何文字目かってことか。 だったら、さっきの配列で見つけた行にたいして mb_strposやればいいんでねーの?
とほほ mb_strposを10個並べるか 1文字ずつローラ作戦を決行するしか ないのですね。
preg_split(全角にマッチするパターン, 検索文字列, -1, PREG_SPLIT_OFFSET_CAPTURE);
>>799 表示されない原因は、<frame src>のURIが正しくないからなので、
そこを正しいURIに直してあげればいいですよ。
具体的なソースは面倒なのでパス。
>802 preg_splitは全角が利かなかったので mb_splitにして戻ってきた配列からの0要素の文字数をカウント することにしました。 <thinks src='みんな'>ありがとう</thinks>
806 :
nobodyさん :2005/08/29(月) 13:55:02 ID:bRBqfQsi
PHPをアップローダを作っているのですが、ダウンロードの時に化けてしまいます。 FTPでバイナリ転送でダウンロードすると化けていないので、 アップロードはうまく言ってると思うのですが・・・ どこが間違っているのでしょうか? PHPのバージョンは4.3.10、apacheを使っています。 よろしくお願いします。 header ("Content-type: application/octet-stream"); header ("Content-Transfer-Encoding: binary"); header ("Content-Disposition: attachment; filename=" . $fname); header ("Content-length: " . filesize( $fname)); readfile ($fname);
807 :
nobodyさん :2005/08/29(月) 14:01:26 ID:pua4PW6B
掲示板を作ったんですが、書き込みの際にIPを取得するようにしたんですが、何故かlocalhostとしか取得できません。 ローカル、レンサバとも同じ状態です。 HPのTOPに置いてあるアクセス解析は正常に取得してるようなのですが。。 自分なりに調べて見たのですが、さっぱり解らずに困っています。 何が原因なのでしょうか。。
>>804 mb_eregとかで最初に出現した全角数字を取って
mb_strposで、取得した全角数字の場所取るってのは?
すんません。
>>792 氏の関係で正規表現について教えて欲しいのですが、
半角数字のパターンは[0-9]だと思いますが、全角数字のパターンはどうすればいいのでしょうか?
[0-9]としたら範囲が空とエラー吐かれました。
810 :
809 :2005/08/29(月) 14:22:42 ID:???
>>809 [0|1|2|3|4|5|6|7|8|9]
>>803 有難うございました。
無事、表示されました。
あと、Basic認証内ファイルの場合ですが、
indexは"Authorization: Basic"でクリアできますが
フレーム部分では認証がポップアップされます。
よろしければこの対策についてご教授願えますでしょうか?
813 :
810 :2005/08/29(月) 14:48:45 ID:???
>>811 うまくいかんです。関数の問題なのか、正規表現の問題なのか?
$ptn = "[0|1|2|3|4|5|6|7|8|9]"; //全角数字
$str = "abc8d2e89f"; // 結果 [0] => 7 , [1] => 1
//$str = "今日は8月28日"; // 結果 [0] => 1 , [1] => 1
mb_ereg_search_init($str);
$ary = mb_ereg_search_pos($ptn); // [0]は一致した先頭の位置、[1]は一致した長さ(バイト数)
print_r($ary);
$ptn = "8"; にすると [1] => 2 になるし。
>>813 スクリプトの文字コードと内部エンコード合わせてますか
>>813 文字クラスはダメだ。16進で指定してみれ。
816 :
806 :2005/08/29(月) 15:02:25 ID:???
>>806 のreadfile ($fname); を、
fopenしてからfgetc一回したら3バイトのファイルができました。
2回fgetcしたら4バイトになりました。(相変わらず化けてます)
PHPの原理がよくわかってないので、なんか変な感じです。
これは設定が悪いのでしょうか?どなたかヒントください。
817 :
813 :2005/08/29(月) 15:45:59 ID:???
>>814 813ではスクリプト=EUC-JP、内部エンコード=SJISでした。
なので、mb_internal_encoding("EUC-JP"); としましたが結果は同じです。
>815
ここ(
ttp://ash.jp/code/codetbl2.htm )見るとEUCでは「0」=A3B0、「9」=A3B9なので
$ptn = "[0xA3B0-0xA3B9]";
としましたがマッチしませんでした。
指定方法が根本的に間違ってるのかな?
16進エスケープは\xFFとかじゃ? ってか、POSIXのEREって16進エスケープ対応してんの?
しばらく目をはなした隙にオソレスになりました。
>>805 PHP4.3.10です。
もしかしてPHP5なら全角でもOK?
>>796 >>800 >>808 mb_eregを使ってマッチした文字列から
非正規表現でマッチさせればよかったのですね。
勉強させていただきました。
>>788 ループさせるのは間違いじゃないが、$aaaの添字に$iを使ってしまうと、
行(外側のwhileループ)ごとに0から始まるから、
$aaa[0]が何度も上書きされることになりやすい。
$aaaの添字には別の変数を使え。
それから、最後の出力テストはprint_rを使うと便利。
もう1つの間違いについては
>>778
821 :
785 :2005/08/29(月) 17:50:13 ID:???
>>789 .790
サンクス
とりあえず、自分の環境ではないと動かないしあると動くので、おまじないと思って付けておきます。
( ( ( ) > ̄ ヽ、)),'^^'' 、 , -―ー '" ; ' 7 !) / , '"^、 `ー-、 _, -ー ! /'| |' _ミ7ゝ ,. ! / | || Y' ::y' : | | |.| | : : | ! |' ! .'o, | '.o, ! |,/ | ヽ、 ,人 ノ | ! | `゛´ ` ー 'ヽ ノ i | ヽ、_, ' ヽ、__ ノ /
MySQLにデータを突っ込むときに勝手に\マークがエスケープされるんですが どこをいじったらなおりますか?
824 :
823 :2005/08/29(月) 19:27:17 ID:???
表示するときにstripslashesで¥をトって表示して MYSQLに入れるときにaddslashesで¥を付けていれたらいいのれすか?
円マーク2個重ねて
レンタルサーバーでPHPからImageMagickを動かしていたのですが これをローカルで動かせるようにするにはどうしたらよいのでしょうか。 Apache2.0.54.0、OSはWinXPSP2、PHP5、 ImageMagick-6.2.0-Q16-windows-dll.exeを使いImageMagickをインストールした ところまで来ました。
move_uploaded_file()について質問があります。
環境は以下の通りです。
Win XP
PHP 5.0.4
Apache 2.0.54
また、(ない知識を絞ったうえで)関連すると思われるphp.iniの設定は、
safe_mode = Off
register_globals = Off
doc_root =
file_uploads = On
upload_tmp_dir = "C:/tmp"
upload_max_filesize = 2M
です。
このような環境下で
move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']);
を実行すると、
Apache2のインストールディレクトリに$_FILES['file']['name']な名前の
ファイルが作成(移動)されてしまいます。
つまり、phpスクリプトが置かれているカレントディレクトリにファイルが移動されないんです。
この問題については、
http://jp.php.net/manual/ja/function.move-uploaded-file.php に「Darrell」という方がそれらしい情報を投稿してくださってますが、
その解決策のようなものが見当たりません。
なので、よろしければ、
同じような問題に遭われた方がいらっしゃれば、
解決策や回避策など教えていただければと思います。
長文失礼しました。
828 :
774 :2005/08/29(月) 21:54:14 ID:???
遅レスすいません。
レスありがとうございます。
>>775 コマンド使えませんでした・・・。
>>776 それを参考にして色々やってみたいと思います。
ありがとうございました。
最近PHPを勉強し始めたのですが、 PostgreSQLをインストールして、PHPからアクセスするために PHPのpgsqlモジュールが必要になりました。 ほかのモジュールをそのままでpgsqlモジュールだけ追加して使う方法は あるのでしょうか。それともPHPの再インストールが必要なのでしょうか。 よろしくお願いします。 MacOSX10.3.9 Apache1.3.33 PHP4.3.9 PostgreSQL8.0.2
830 :
829 :2005/08/29(月) 22:12:42 ID:???
Mac板のプログラミングスレから誘導されてきました。
論理積について質問があります。 if (!isset($x) && !isset($y)) { echo $giko; } else { echo $mona; } 上記のように条件分岐させているのですが、 $mona を表示させるか否かのみを判定したい場合はどの様にするのが格好いいでしょうか。 今のところは if (!(!isset($x) && !isset($y))) { echo $mona; } こんな風に対処したのですが、なんかカッチョ悪い・・・
>>831 単純に
if(isset($x) && isset($y)) {
echo $mona;
}
でいいんじゃないの?
>>831 要は $x か $y のどちらかがセットされていたら $mona を表示でいいんだろ?
これではダメなん?
if (isset($x) || isset($y))
echo $mona
>>831 それでいいんじゃないの?
if (!isset($x) && !isset($y)) { ; } else { echo $mona; }
って書き方もありっちゃあり。
ただ、!a && !b ってのは a || b と等価なんで(ド・モルガンの法則って奴)
>>831 の上の奴は
if (isset($x) || isset($y)) { echo $giko; } else { echo $mona; }
下の奴は
if(!(isset($x) || isset($y))) { echo $mona; }
と置き換えられる。
あとは echo (isset($x) || isset($y)) ? $giko : $mona; くらいかな。
837 :
831 :2005/08/29(月) 22:41:33 ID:???
>>833-836 即レス有り難うございます!
ド・モルガンの法則・・・ウッ頭痛が・・・
三項演算子も使えたんですね。いつか使ってやろうと狙っているのですが思い浮かんだ試しがない・・・
早速書き直します。サンクス!
>>829 こっちも微妙にスレ違いだと思うけど…。
もとのPHPを残したいのはSoftwareUpdate対策?
手元にmacが無いので、ちゃんとは分からないけど、
普通にコンパイルオプション付けて入れ直したらよいのでは。
私はそうしてました。
んで、そのコンパイルオプションは、
デフォルトで入っている PHPの phpinfo() をコピペして必要なのを追加、がオススメです。
どうしても気になるなら、/usr/local/ に入れるなりして回避してください。
>>829 可能かもしれないし、駄目かもしれない。
使ってるPHPはどうやって作ったん?
取り敢えずpgsql.soとMac、php辺りでぐぐれ。
>>839 >>829 のPHPは、macに標準で入ってるやつでしょう。
mac用のpgsql.so だけ配ってるなんて聞いたこと無いし。
なるべく他の環境を変えないようにするには、
ソース持ってきてコンパイルしか無かったと思う。
841 :
827 :2005/08/29(月) 23:20:36 ID:???
自己解決しちゃいました。 move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']); ↓ move_uploaded_file($_FILES['file']['tmp_name'], getcwd()."/".$_FILES['file']['name']); この変更で、move_uploaded_file()がちゃんと動く鯖でも、 僕のような問題が起こる鯖でも、どちらでもちゃんと動きそうですね。 初歩的な質問な気がして、はずかしい・・。 ご迷惑をおかけしました。 ですが、もしphp.iniの設定などで今回の問題が直せるのでしたら、 ご存知の方是非教えてください。以上です。
何だか物凄い勢いで流れたので・・・再投稿スマソ。 ローマ字で aiueonn と入力すると あいうえおん と返してくれるライブラリーってないですか? Javascriptでは見たことあるのですがPHPでないですかね? 宜しくお願いします。
自分で作ればええやん、と思いながら見てたけど、誰もレスしてなかったのか。。
>>842 自分は見たことない
JavaScriptのソースがあるなら、それ参考に作っちゃった方が早い気がする。
FORMで確認画面に遷移セッションに値格納 ↓ submit ↓ セッションデータのデータをメールへ送信 unset( $_SESSION[data] ); //セッションデータを削除 ↓ header('location: aaa.htm'); // 別ページへジャンプ 上記のようなスクリプトがあるんですけど。 ジャンプで飛ばした後、ブラウザの戻るを実行するとunsetした セッションが復活してしまいます。 完全に消す方法はあるのでしょうか。 unset( $GLOBALS[_SESSION][data])でも消えませんでした。
>>829 phpのソースパッケージをダウンロードしてきて、
$ tar zxvf php-x.x.x.tar.gz
$ cd php-x.x.x/ext/pgsql
$ phpize
$ ./configure --with-pgsql=/path/to/postgres
$ make
$ sudo make install
いつもモジュールが欲しくなった時はこんな感じでやっつけてる。
あとはdl()かphp.iniでロードするだけ。
ひょっとしたらapacheでDYLD_LIBRARY_PATHを設定する必要があるかも
それはpostgresのインストール方法次第だと思うけど、postgres使った事無いからわからん。
/path/to/postgres がどこかは自分で考えろよ。
847 :
829 :2005/08/30(火) 00:55:02 ID:???
>>838 ,839,840,846
レスありがとうございます。
>>840 さんのおっしゃる通りMacに標準ではいっているPHPです。
それでソースから全部インストールするのを躊躇っていました。
phpinfo()からConfigure Commandをコピペして
"--with-pgsql='postgresのパス'"を加えて再インストールしてみます。
DYLD_LIBRARY_PATHのことはこれから調べてみます。
ありがとうございました。
>>842 質問してばっかだなお前ーぶぶぶーwww
ただ置換すればいいだろぼけなすーwwwww
そんくらい自分で書けやかすーwwwwww
849 :
nobodyさん :2005/08/30(火) 01:07:11 ID:FCdiEo7p
./A.html →(ファイル内呼び出し)→ ./script.php →(データ読み書き)→ ./data.log こんな感じでPHPだけ"script.php"というファイルにまとめていろんなファイル から呼び出しています。さらに"script.php"からデータの読み書き用に"data.log"という ルートにあるファイルにアクセス。 さて、ここで ./folder/B.html →(ファイル内呼び出し)→ ./script.php →(データ読み書き)→ ./data.log という呼び出しをしたとき、script.phpが"./data.log"にアクセスできないと エラーを返します。つまり"./folder/data.log"にアクセスしようとしてエラーに なっているんですね。呼び出すhtmlファイルの場所に依存してscript.phpから 毎回エラーを返されるのは正直鬱陶しいんですがみなさんどうされてます? せめてscript.phpからdata.logを相対パスで呼んでくれればこんな問題は 生じないんですがね。
>>848 単純な置換で事足りるわけない。
お前がやってみろクズ
>>850 図星突かれてそんなに悔しかったのか?wwwwww
誰がいつどこで「単純な置換で事足りる」っつったんだ?wwwwwww
本人だとしたらさすがすぎるwww低脳丸出しだなwwwwww
>>851 だから、お前がスクリプト書いてみろって言ってるんだよ、カス
学校の課題が出来ずに焦っている
>>854 がいるスレはここですか?
>>854 糞面白いなお前wwwwwwこんなのも書けないなんて障害あんじゃねーの?wwwwww
853のソース見たんだけど、PHPに(「charCodeAt」みたいな)文字を文字コードに変換する(?)関数か方法ってあるの?
858 :
857 :2005/08/30(火) 02:47:46 ID:???
ごめん。勘違いしてた。忘れてくれ。
859 :
nobodyさん :2005/08/30(火) 12:51:39 ID:zspoZiNa
PHPファイルにbase64でエンコードしたGDフォント(*.gdf)を埋め込んでみたいと 考えているのですが、ヘッダはどのように指定すればよろしいのでしょうか?
862 :
861 :2005/08/30(火) 15:46:09 ID:???
function roma2x($text,$to){ $skip = 0; $len = strlen($text); global $roma; // $romaを関数内に入れるなら不要 for($i=0;$i<$len;$i++){ if ($skip > 0) { $skip--; } else { $temp = substr($text,$i,1); if (ereg("[a-zA-Z.,-]",$temp)) { //[a-zA-Z.,-] $loop = 4; $f=0; while($loop){ $temp = substr($text,$i,$loop); if (isset($roma[$to][$temp])){ $kana = $roma[$to][$temp]; if($loop == 2){ if($kana == "っ"){$i--;} //「っ」の場合、一文字戻す $skip = 1; }else{ $skip = $loop-1; } $f=1; $newarray[] = $kana; break; } $loop--; } if(!$f){$newarray[] = $temp;} // $f == 0 } else { $newarray[] = $temp; } } } return implode($newarray); // stringで返す }
863 :
軟式PHP :2005/08/30(火) 17:16:10 ID:???
定数に値を入れる時にヒアドキュメントを使いたいです。 define( "TMP", <<<END ); ヒアドキュメントヒアドキュメントヒアドキュメント ヒアドキュメントヒアドキュメントヒアドキュメント END; こういう使い方って無しでしょうか? ちなみに上記だと実行時にエラーになります。
>>864 define('TMP', <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END);
echo TMP;
>>865 864じゃないけどエラーでるぞ。
>>864 これはダメ?
$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END;
define("TMP", $var);
867 :
864 :2005/08/30(火) 21:47:10 ID:???
>>866 今はその方法にしてます。
ただ、Perl使ってたときはできた書き方なので、
同じようにスマートにならないかなーと思った次第です。
868 :
866 :2005/08/30(火) 22:05:48 ID:???
>>867 これだと出来た。
define('TMP',
$var = <<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
または、
define('TMP',
<<<END
ヒアドキュメントヒアドキュメントヒアドキュメント
ヒアドキュメントヒアドキュメントヒアドキュメント
END
);
でもPHPエディタだと両方とも色分けが変になるから微妙だったけど。
869 :
868 :2005/08/30(火) 22:15:36 ID:???
すまん。>865の方法も少し変えたら出来た。 ヒアドキュメントの終端マーク?(END)を単独で1行にすれば良さげ? define('TMP',<<<END ヒアドキュメントヒアドキュメントヒアドキュメント ヒアドキュメントヒアドキュメントヒアドキュメント END );
変換後の変数=置き換え関数("aiueonn","あいうえおん",送信されてきたデータ)
$line=file($file); $end=count($line)-1; echo $line[$end] 最後の行をだす。
872 :
nobodyさん :2005/08/30(火) 23:20:26 ID:eL6jzClK
MySQLの段落ありのデータをechoで表示する場合、 段落が認識されず、表示されてしまいます。 良い解決方法はないでしょうか?
873 :
864 :2005/08/30(火) 23:24:41 ID:???
>>866 ありがとうございます。
その方法でいってみます。
(確かにPHPエディタで色変わらないのは気持ち悪いですね…)
単純な質問でごめんなさい。 whileで“00”〜“20”までを繰り返すとやりたいのですが、 $hage = "00"; while ($hage != "20") { $hage++; } $hageの変数を2桁に固定するにはどうすれば良いのでしょうか。
876 :
875 :2005/08/31(水) 00:05:59 ID:???
ほんと、単純でしたね…。解決しました。 $page = "00"; while ($page != "20") { $page = sprintf("%02d", $page); $page++; }
>>876 あの、それなら最初から
$page = 0;
while ($page != 20) { ... }
の方が良いですよ。
$page = 0; while ($page++ < 20) { ... }
404のエラードキュメントをphpで作りたいと考えてます。 その時に、要求アドレスによって、表示を分岐させたいと考えてるのですが、 要求アドレスがどうしても取得できません。 これは無理なのでしょうか。
883 :
881 :2005/08/31(水) 02:33:16 ID:???
>>882 セッションを使った方法を考えてみましたが、分かりませんでした。
404を出すアドレスにアクセスした時点では、
何もアクションが起こせないので、セッションも登録できないと思うのですが、
具体的な方法を教えていただけないでしょうか。
>>881 ,883
要求アドレスって存在しなかったページって事ですよね?
$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えました。
環境:linux/apache2.0.54/PHP5.0.4
885 :
884 :2005/08/31(水) 03:01:26 ID:???
勘違いしてたゴメン
>>878 だと$pageが18で終わりになる?それとも19?20まではいかないよね?
「インクリメントした後の$pageが20未満」なのか
「インクリメントしたら20未満の$page」なのか
どっちの意味になるんだろ?
887 :
881 :2005/08/31(水) 03:27:31 ID:???
>>884 要求アドレスは存在しなかったページを意味してます。
ですが、無理みたいですね・・・。
phpでは無理なんでしょうか。
.htaccess使わなきゃ
890 :
886 :2005/08/31(水) 03:36:04 ID:???
「20未満の$pageについてインクリメント&ループ実行」ってことでいいのかな?
891 :
881 :2005/08/31(水) 03:37:18 ID:???
>>888 .htaccessをどのように使えばいいのでしょうか。
今も.htaccessはありますが、ErrorDocumentの記述があるだけです。
892 :
884 :2005/08/31(水) 03:44:16 ID:???
>>887 あれ?ダメですか?
存在しないページなら>884の通り、$_SERVER[REDIRECT_URL] や $_SERVER[REQUEST_URI] で拾えましたよ。
print "REDIRECT_URL=[".$_SERVER[REDIRECT_URL]."]<br>\n";
print "REQUEST_URI=[".$_SERVER[REQUEST_URI]."]<br>\n";
で存在しないページ(例:
http://192.168.0.111/test/ttt.html )が「/test/ttt.html」として取得できました。
SERVER_ADDRやHTTP_HOSTでIPアドレスも取得できるからURLも取得できますし。
ためしに404のエラードキュメントPHPで print_r($_SERVER); してみては?
その前に404のエラードキュメントをPHPで使えるようになっているのでしょうか?
893 :
881 :2005/08/31(水) 03:51:02 ID:???
>>892 REDIRECT_URLは空文字で、
REQUEST_URIの方には404.htmlの方が入ってました。
マニュアルでREQUEST_URIの箇所を読む限りでは確かにこれで取得できそうですが…。
$_SERVERは、print_rで見ましたが、それらしき値はないです。
895 :
881 :2005/08/31(水) 04:00:18 ID:???
解決しました。 ErrorDocumentの書き方がまずかったようです。 絶対パスを指定したのですが、これを相対パスにすることで直りました。 絶対パスだと、ページ自体のリダイレクトが行われてるんですかね。 丁寧に答えてくださった方、ありがとうございました。
>>893 自前サーバ? レンタルサーバ?
要求アドレスの取得に関係なくPHPファイルがエラードキュメントとして使えるようにしてますよね?
>>886 $var++と++$varの違いは基本なので
898 :
nobodyさん :2005/08/31(水) 09:11:56 ID:eJmHKqbd
これでどうして 2005-08-31にならないのかな? $dy=mktime(0,0,0,date("m"),0,date("Y")); echo date("Y-m-d",$dy);
echo date("Y-m-d", time())
2005-08-00→2005-07-31と修正されるからでしょ。 echo date("Y-m-d")でいいじゃん。
携帯サイト作ってるんですが、USER AGENT偽装対策する方法ありますか?偽装してる場合はエラーを吐くような。
>>902 hostで判断するしかないんじゃないか?
docomo.ne.jp以外は弾く、みたいな。
携帯から失礼します。 今オークションを携帯で見れるようなものを作ってます。 まず題名のみを抽出して表示するところまではできました。 題名を押すとリンク先を表示するところで行き詰まってます。 一応できたのですが題名を押すとphp?no=1という所に行きまた詳細を抽出する方法です。 このno=1とうのを20個近く作らなければいけない無駄なやり方でした。 これをもっとスマートにしたいのですが良い方法が思い浮かびません。 何か良い方法があったら教えてほしいです。 説明へたですいません。
>>904 題名とno=○を配列に入れてforで回すのではダメなの?
>>903 おぉ、その手がありましたね。USER AGENTにばかり目がいってました。ありがd。
デストラクタの使い方がよく分からないのですが、 class hoge { var $test; function __construct($a, $b) { $this->test = array($a, $b); } function __destruct() { unset($this->test); } } こんな感じでいいのでしょうか。
>>907 俺も良く判らんけど、__destruct って、そのオブジェクトを解放するときに処理するんじゃないの。
メソッドもオブジェクトに含まれるので、unsetする必要はないかと。
class hoge {
var $test;
function __construct($a, $b) {
$this->test = array($a, $b);
}
function __destruct() {
print_r $this->test;
}
}
$ob = new hoge(1,2);
unset($ob);
そんな感じかねえ。 以前、DB接続クラスを作って、 デストラクタにDBをクローズするメソッドを呼び出すようにしたら、 まだクエリすら呼び出しても以内のに勝手に不要とみなされ、 勝手にDB切断されて困ったことがあった。 使い方がいまいち。オブジェクト解放のタイミングを調整できればいいのだが。
ついでにわしも質問です。 __autoload()関数が役に立ったことがあるという人、いますか? もし、役にたったならば、どんなときに役に立ちましたか? require呼び出しでは使えるものでしたか?
911 :
907 :2005/08/31(水) 15:29:11 ID:???
>>908 >>909 あ〜なるほどね。
デストラクタってパフォーマンス向上のためにある関数なのかと思ってたんだけど、そうじゃないのか。
>>910 ん〜手間が省けて結構便利だと思うんだけどな。
912 :
nobodyさん :2005/08/31(水) 17:08:30 ID:/SaEXI7W
セーフモード&SAFE_MODE_GIDがoffのレン鯖で phpスクリプトが書き出したphpファイルにブラウザからアクセス する技はありまつか?
>>912 た、多分、ブラウザからそのURLたたけばいいんじゃないかな・・・
file関数で1000行×20列くらいの掲示板のログファイルを一気に読み込んでるんですが高い負荷がかかったりしますかね?一日2000〜3000アクセスくらいなんですが。
>>914 file関数よりもfgetsの方が処理は速いって聞いた。
夏休みは宿題を済ませてから遊べとあれほど……
1000行全て表示して誰が読むんだか・・
918 :
nobodyさん :2005/08/31(水) 20:40:45 ID:kcRQHeGx
つ「date("t")」
「次の月の-1番目の日」ではなく「次の月の0番目の日」って意味でしょ。 「2005年8月の0番目の日」が「2005年7月の最後の日」になる。 だからmktime(0,0,0,date("m"),0,date("Y"))は「先月末日」の表現にしかならない。
921 :
nobodyさん :2005/08/31(水) 21:02:22 ID:kcRQHeGx
>920 ありがと。 勘違いしてたヨ。下記例にもちゃんとあったな。 $lastday = mktime (0,0,0,3,0,2000); echo strftime ("Last day in Feb 2000 is: %d", $lastday);
922 :
nobodyさん :2005/08/31(水) 22:19:18 ID:N4cNKOEk
それは質問とは言わない。 他力本願というのだよ、それは。 無いなら、自分で調べて作ればいいじゃん。
画像投稿の掲示板つくるんだけど、画像はfileでもってたほうがいい? DBにいれてかんりしたほうかいい?
>>925 投稿時にファイル名を自動で付すなら
ファイル名だけデータベースで持っておいて
画像は特定のフォルダに放り込むのが簡単。
良し悪しは何で判断する?
927 :
nobodyさん :2005/09/01(木) 08:14:05 ID:eoQpZPGA
普遍性と効率性を聞きたかったんでしょ。
--template.php--
<?=$contents?>
--edit.php--
class Edit{
function excute(){
global $contents;
$abc = 'abc';
}
}
$contents=<<<EOL
ほえほえ{$abc}
EOL;
--index.php--
include( 'edit.php' );
$obj = new Edit();
$obj->excute();
include( 'template.php' );
以上のスクリプトで、「ほえほえabc」という出力を得たかったのですが、
実際は「ほえほえ」になってしまいます。
function excuteのなかが著しく怪しいとは思うのですが、
マニュアル
http://www.php.net/manual/ja/language.variables.scope.phpを 見ても解決の手掛かりが掴めません。。。
何かヒントを頂ければ幸いです。。。
中身入りのディレクトリを問答無用で削除するにはどうしたらいいのでしょうか。 調べたら「実行演算子」とやらで `rm -Rf $del_dir`; こう書くように書いてあったのですが、消えません。 実行演算子がシェルに命令を送るだけのものだとすれば、 win鯖の実験用環境では無理ということなのでしょうか。
Winにrmコマンドはない。
>>928 スコープというものが分かってないな。
excuteの中$abcはそこで完結しており、そのままだと外には出られない。
>>930 えと、じゃあやっぱり両対応にするにはopendirとかreaddirを使って
ディレクトリ内のファイルやフォルダを全部調べつつ削除する
ルーチンを作るしかないのですね・・・
>>931 とりあえず、以下な感じで逃げました。
ああ、$contents<<<EOLを別の所におきたい。。。
別ファイルにしようかなぁ。。。
--template.php--
<?=$contents?>
--edit.php--
class Edit{
function excute(){
$abc = 'abc';
$contents=<<<EOL
ほえほえ{$abc}
EOL;
return $contents;
}
}
--index.php--
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
>>933 コンストラクタを用意して、$contentを喰わせるようにしたら?
inculdeについてなんですが例えば以下のようなディレクトリ構造の時 index.php └■A ..├a.inc ..└■B ....└b.inc index.phpを実行中にA/a.incをinculdeして、さらにB/b.incをinculdeするにはA/a.inc内の記述は inculde("B/b.inc"); inculde("A/B/b.inc"); どちらが正しいんでしょう?
>>935 やってみればいいんじゃないでしょうか?
>>935 ワーキングディレクトリ(working directory)つー概念があって、
この場合 index.phpがあるディレクトリがそれに該当する。
includeやrequireで相対指定した場合はそこからの指定になる。
それぞれのファイル中で echo getcwd(); してみればどういう扱いをされるのか分かるよ。
--with-gdオプションで画像に対する処理が出来ますが 文字(フォント)を画像として出力するなんてのは無いですよね?
939 :
235 :2005/09/01(木) 16:54:55 ID:???
>>936 そうですよねー、なんかメンドクサかったので。
941 :
938 :2005/09/01(木) 17:07:13 ID:???
942 :
nobodyさん :2005/09/01(木) 17:45:59 ID:HGt94pY+
includeで便乗質問。 PHPでファイルを読み込む関数(include require require_once)で絶対パスを使うと サーバから見たパスになりますよねー。 /usr/ID/public_html/file/ ってな風に。 でも、サイト作ってる時はドメインからみたパスにしたいんですよ。 /file/ ってな風に。 これってどうにか対処法はありますか?
PEARのNet_FTPを使ってリモートサーバでファイル操作をしようとしています。 「リモートにディレクトリがあればそれを削除して、無ければ削除しない」 ということをやりたいのですが、ディレクトリがあるかどうかをチェックする関数が ありませんでした。 あってもなくても削除するように、 $ftp->rm( 'tmp_dir', TRUE ); としましたが、ディレクトリが無い場合にエラーが発生してしまいます。 (当然といえば当然ですが…) 何かスマートな方法はありますでしょうか? よろしくお願いします。
>>942 実行時にライブラリのパス変更して、相対パスを使う。
さすがに /file/ は無理だけど、./file/ ならできるのでは。
945 :
943 :2005/09/01(木) 19:25:27 ID:???
すいません、自己解決しました。 $ftp->ls( 'tmp_dir' ); の結果が空であれば存在しないという判断で対応できました。 お騒がせしました・・・
セッションの使い方で質問です。 色々例題等試してみて、機能的なことはだいぶ解ったのですが、 フォームで複数の入力画面を行き来する可能性があるようなものの場合、 そこに出てくるセッションで保持したい変数(例:$_POST['hoge'])すべてを 例1 if(isset($_POST['hoge1'])){$_SESSION['hoge1'] = $_POST['hoge1'];} if(isset($_POST['hoge2'])){$_SESSION['hoge2'] = $_POST['hoge2'];} if(isset($_POST['hoge3'])){$_SESSION['hoge3'] = $_POST['hoge3'];} 続く・・・・ ってセッションに入れないといけないのでしょうか? if(isset($_POST)){$_SESSION = $_POST;} じゃ、なんだかうまく逝かなかったです。配列を配列に入れちゃうから無理なのかな? あと、スクリプトのなかでhtmlに埋め込むときは、セッション変数をどういう風に扱えばよいでしょうか? 自分は{$_POST['nantoka']}って感じで使ってるので、上記「例1」のあとで if(!isset($_POST['hoge1'])){$_POST['hoge1'] = $_SESSION['hoge1'];} if(!isset($_POST['hoge2'])){$_POST['hoge2'] = $_SESSION['hoge2'];} if(!isset($_POST['hoge3'])){$_POST['hoge3'] = $_SESSION['hoge3'];} 続く・・・・ とこれまた面倒なことをしてるんですが。 $_SESSION['hoge1']とか$_POST['hoge1']はそのまま使わずに$hoge1などのような変数に代入した方がいいのでしょうか? 常識的にどうするかって部分が記述されてるサイトを見つけられずちょっと悩んでます。 アドバイスおながいします。
>>946 $_SESSION = array_merge( $_SESSION, $_POST );
POSIX正規表現に関する詳細については、PHP配布ファイルのregexディレクトリに
あるregexのmanページを参照ください。 このページはmanpageフォーマットであり、
読むには man /usr/local/src/regex/regex.7のようにします。
http://jp.php.net/manual/ja/ref.regex.php とありますが、どうやれば読めるのかわかりません。
regex.7の日本語訳などネット上にありませんか?
>>943 $ftp->ls('tmp_dir');
既レスだたた
>>934 こんな感じでしょうか?
これだと、{$abc}は置き換えられず、「ほえほえ」だけになってしまうのです。
必ず、<<<EOLの前に$abcを定義しないと逝けないんですよね。
やりたいのは、templateを定義しておいて、excute()でデータを生成して、
templateに埋め込んで、出力する、これだけなんですけどねぇ。。。
やっぱり、別ファイルにしてincludeかなぁ。。。
テンプレートファイルを沢山作りたく無いんだよなぁ。。。
-- template.php --
<?=$contents?>
-- edit.php --
class Edit{
var $template;
function Edit(){
$this->template = <<<EOL
ほえほえ{$abc}
EOL;
}
function excute(){
$abc = 'abc';
return $this->template;
}
}
-- index.php --
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
>>953 >>934 じゃないけど、ちげーよ!思わずつっこんじゃうよ!
class Edit{
function Edit(){
return $this->execute();
}
function excute(){
return $abc = 'abc';
}
}
-- index.php --
include( 'edit.php' );
$contents = new Edit();
include( 'template.php' );
あ、ごめんコピペして書き直したから関数名間違えてた。 fucntion execute() ね。まさかexcuteだとは思わなんだ。
PHPでMySQLの操作について聞きたいのですが、 既にデータの入っているTABLEにデータを追加する場合、 1項目が同じデータがあった場合はその行の更新(UPDATE)を、 無い場合は、追加(INSERT)したいのですが出来るでしょうか? やっぱり一度取得して削除して追加になるんですかね・・・
957 :
946 :2005/09/01(木) 23:04:08 ID:???
>>947 ありがとうございます、ヒントになりそう。調べてみます。
ホントに普通はどうするのか?ってとこがわからんです。
その時々で、違う、ってことなのかな?
>>956 PHP関係ないね。
MySQLのテーブルの作り方によるが、replaceはどう?
>>954 それだと、「ほえほえ{$abc}」は何処へ?
なんか頭が煮えくり買って北尾
>>955 (><;;)テラハズカシス
960 :
954 :2005/09/01(木) 23:35:16 ID:???
>>959 あのさ、つられてやるけど、
ほんとにわからない?
それにこのクラスのまま使うつもりならとても疑問に思うけどね。
return ’ほげほげ’.$this->execute();
つられ過ぎかなぁ・・・。寝よっと。
あ、PHPのマニュアルってとっっても優秀だと思うから、ちゃんと読んだ方がいいよ。
下手な解説本より役に立つ。
>>953 テンプレートを先に作っておきたいなら、
変数埋め込みじゃなくて、str_replaceでの置き換えを使った方がいいと思う。
>>960 申し訳ないです、本気で質問してます。
ただ、return ’ほげほげ’.$this->execute();と来るとは思ってませんでした。。。
>>961 pukiwikiのソースではstr_replaceとかpreg_replaceとかが大活躍してますね。
実はあまり好きではないのですが、一旦視野を広げて、見直してみる必要がありそうです。。。
>>962 こんなふうに書いてもいいんだけど、
なんだか気持ち悪いんだよなぁ。
--template.php--
<?=$contents?>
--edit.php--
class Edit{
function excute(){
$abc = 'abc';
return setTemplate($abc);
}
}
function setTemplate($abc){
return <<<EOL
ほえほえ{$abc}
EOL;
}
--index.php--
include( 'edit.php' );
$obj = new Edit();
$contents = $obj->excute();
include( 'template.php' );
964 :
nobodyさん :2005/09/02(金) 03:25:11 ID:BIWfF3gY
mb_language('ja'); mb_internal_encoding('EUC-JP'); if(function_exists('mb_send_mail')) { $to = mb_encode_mimeheader(mb_convert_encoding($nm.'様', 'iso-2022-jp', 'EUC-JP')).' <'.$ma.'>'; $subject = mb_convert_encoding('ご登録ありがとうございます。', 'JIS', 'EUC-JP'); $rcd = mb_send_mail($to, $subject, $body, $header); } このようにしてメールを送っているのですが、件名が「Subject: ご登録ありがとうご$6$$$^$9!#」 のように一部文字化けしてしまいます。 文字化けさせないようにするにはどうすれば良いのでしょうか
mb_send_mail() を使っているならわざわざjisに変換する必要はないんじゃないかな。 ていうか、iso-2022-jpとjisがなぜ混在しているの? べつにいいけど。
>>965 jisにしないとなぜか文字化けしてしまいます
あっ置き換えが足らなかったみたいです(;´▽`A``
おまいらPear使ってる?
もうperlなんか使う気しねー
>>933 思うのだが、
コンストラクタは
従来はクラス名と同じとしていたが、
PHP5になってから__constract()という関数が加わり、これをオーバライドするような
形で自作クラスに定義して使えるが、
クラス名と同じよりも、こっちの新しい__constract()を使ったほうがいいのだろうか?
それから__get(), __set()なんてものも、まるで、C#のプロパティそっくりだが。
使うべきなのだろうか?
JavaBeansの影響を受けて、いつも何も考えず、
class Bean {
private ClassName className;
public function getClassName(){
return $this->className;
}
public function setClassName(ClassName $className){
$this->className = $className;
}
}
としてる。
>>953 これはどうだろう?
> -- template.php --
<?
$edit = new Edit('abc');
$contents = $edit->execute()
?>
> <?=$contents?>
> -- edit.php --
> class Edit{
> private $template;
> public function __constract($abc){
> $this->template = <<<EOL
> ほえほえ{$abc}
> EOL;
> }
> pulic function excute(){
> return $this->template;
> }
> }
> -- index.php --
> include( 'edit.php' );
> include( 'template.php' );
動作確認していないのでなんともいえないけど。
971 :
970 :2005/09/02(金) 05:11:45 ID:phrYpD5o
スペルミスがあったが修正したら問題なく動いた あと、これはPHP5で動作確認した。 -- template.php -- <?php $edit = new Edit('abc'); $contents = $edit->execute(); ?> <?=$contents?> -- edit.php -- <?php class Edit { private $template; public function __construct($abc) { $this->template =<<<EOL ほえほえ{$abc} EOL; } public function execute() { return $this->template; } } -- index.php -- require_once( 'edit.php' ); require_once( 'template.php' );
>>969 俺はまだPHP4ベースだから使ってないけど
PHP5ベースに移行したらどちらも使うつもり。
Delphiをよく使ってるってのもあるが、
意味を明示してるような気がするから。
クラス名と同名の関数がコンストラクタってのは慣習的なものだし、
プロパティを表現するなら__set、__getは良いと思う。
しかしなんつうか宗教臭いな。
>>972 __get __setはDBとかとあわせるとキモチイイ。
>>933 でつ。
>>969 自分は数日前にphp5.1rc1を入れたばっかなので、未だphp4の書き方になってます。
コンストラクタはどっちにしようか迷ってます。
自分の愛読しているオブジェクト指向の本に、疎結合の為にアクセッサを…とあったので、
アクセッサは使う方向で逝きたいのですが、マンドクセ('A`)
>>971 index.phpをrequire2つで済ませるなんて、考えなかったですー。
漏れの脳みそテラカタス(><;;)
>>972 宗教なんて言わずに、自らが築いてきた哲学と言いましょう。
自分にレスして頂いた皆様には申し訳ないのですが、
結局edit.phpで使うテンプレート(ほえほえ{$abc})を別ファイルにして、
includeする形にしまいました。
何か有る度にincludeで時間を食うのはどーかなーとは思うのですが、
きもいヒアドキュメントが消えて気分爽快スッキリ清潔なのは否定出来ず。。。
宗教くさくない高級プログラム言語ってそもそもあるんかいな。