【PHP】下らねぇ質問はここに書き込みやがれ 69
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/05/27(火) 18:04:33ID:???PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0459nobodyさん
2008/06/11(水) 23:02:11ID:FV2F4cCvforeach($_POST as $k => $v)
}
0460nobodyさん
2008/06/11(水) 23:02:47ID:FV2F4cCvforeach($_POST as $k => $v)
}
0462nobodyさん
2008/06/11(水) 23:19:21ID:???そうすると、form内容部分を全部PHPコードで出力するようなことになりそうだけど。(echoとかして)
ソレをやっちゃうとデザイン組むのが面倒くさそうだね。
使ったこと無いけど、PEAR::HTML_QuickFormとかはどうなんだろうね。
テンプレートを作らないでフォーム生成するってなら、QuickFormでもなんか出来そうじゃない?
0463450
2008/06/11(水) 23:25:43ID:???ifがないです。
そもそも、>>459だと、クエリが存在しないデフォルト表示は、どうするんでしょう?
そして、クエリのキーと一致するフォーム内要素の(特に)typeをどう判別するのでしょう?
とても傲慢な書き方になってしまいますが、
そういうことが聞きたいのではありません。
>>462
とりあえず、本命と思われるQuickFormのライブラリ群を眺めましたが、
該当する機能が見つかりませんでしたので、質問してみました。
結局、従来のQuickFormで作っても、
手書きと同じようにフォームの要素ごとに場合分けしないといけないのです。
もういっそ、QuickFormの拡張ライブラリの形で作ってみようと思います。
CPANモジュールしか作ったことがないので、PEARのルールがよく分かりませんが、
個人的に使う分には問題ないだろうとw
0464nobodyさん
2008/06/11(水) 23:39:41ID:???とっとと作ってくれ
コード見りゃ理解できるかもしれないからなw
0465nobodyさん
2008/06/11(水) 23:59:08ID:???まぁ、フォーム一個作るのに、Attributeの指定を一つ一つに施したりだとか、
プロパティ値で内容いじるぐらいだったら、
上であげた形で、普通にHTMLのコードに関数差し込んだ方が、楽じゃない?
結局最初にフォーム作ってフォームデザインするときにはHTMLかいて調子整えたりするわけだし。
0466450
2008/06/12(木) 03:44:55ID:???ソース汚いのは突発で書いたから我慢して。
$form = <<<_EOF_
<form method="post" action="/">
<input type="text" name="name" value="" />
<input type="text" name="name2" value="" />
<input type="text" name="name3" />
</form>
_EOF_;
$obj = simplexml_load_string( $form );
$array = get_object_vars( $obj );
if( !empty( $_REQUEST ) ) {
foreach( $_REQUEST as $q_key => $q_value ) {
foreach( $array as $key => $value ) {
if( $key <> '@attributes' ) {
if( is_array( $array[$key] ) ) {
for( $i = 0; $i < count( $array[$key] ); $i++ ) {
if( $q_key == $array[$key][$i][name] ) {
isset( $array[$key][$i][value] ) ?
$array[$key][$i][value] = $q_value :
$array[$key][$i]->addAttribute( 'value', $q_value );
}}}}}}}
$result = $obj->asXML();
$result = str_replace( '<?xml version="1.0"?>', '', $result );
print $result;
0467nobodyさん
2008/06/12(木) 07:20:39ID:???Parse error: syntax error, unexpected T_AS in form.php on line 14
0468nobodyさん
2008/06/12(木) 07:34:42ID:???0469nobodyさん
2008/06/12(木) 09:53:55ID:???0470nobodyさん
2008/06/12(木) 11:10:16ID:???400件程度ならXMLの方がいいですよね?
いいアドバイスよろしくお願い致します。
0473nobodyさん
2008/06/12(木) 18:24:19ID:LQ12XrxFforeach($_POST as $k => $v)
}
これじゃだめなん?
if($_SERVER["REQUEST_METHOD"=="POST"){
foreach($_POST as $k => $v)
}
これなら通るのかな?
0474nobodyさん
2008/06/12(木) 19:35:58ID:???それ答えになってないと思うぞw
>>450
多分ないと思う
そもそも全く同じフォームをエラーとかで戻すとき以外に
そんな事する必要あるのってあんまりないんじゃ?
0475nobodyさん
2008/06/12(木) 19:54:41ID:???デフォルト値の引数あるでしょ。
俺はめんどいから普通に書くけど。
0476nobodyさん
2008/06/12(木) 21:26:36ID:/br5Qw5C0477nobodyさん
2008/06/12(木) 21:30:12ID:???0478nobodyさん
2008/06/12(木) 22:29:47ID:???クエリの結果を全部変数で受け取ってから、プログラム内でページング処理する?
それとも、SQLのLIMIT使って、ページ移動毎にクエリ飛ばす?
ケースバイケースなのは分かってるけど、
自分のプログラムがどっちのケースに向いてるのか
判断の基準が分からない。
検索結果数で目安とかってあるんですかね?
0479nobodyさん
2008/06/12(木) 22:36:09ID:???0480nobodyさん
2008/06/13(金) 00:15:22ID:???それだと、PHP4の案件はいってきちゃったときとか、結局面倒くさいんじゃないの。
最近はそんな案件ないのかな?
>>478
普通に後者でしょ。
配列とかやたらメモリ食うし。
0482nobodyさん
2008/06/13(金) 00:48:04ID:iGfhCZYk動作的にはsession_regenerate_idと同じだと思うのですが、
今回の場合、セッションIDを自分で指定したいのです。
session_id()で指定する場合は、session_start()の前に指定しなければならないので、
「読み込んだ後の変更」にはなりません。
実際、読み込んだ後にsession_idで指定しても、
発行されるクッキーは旧IDが入っています。
いい方法があれば教えてください。
0483nobodyさん
2008/06/13(金) 01:30:58ID:VBSX1FXWHTTPのBODY部分のサイズを取得する方法ってありますか?
バージョンは、php5です。宣しくお願いします。
0484nobodyさん
2008/06/13(金) 01:55:11ID:???面白そうだからやってみた。
<?php
require_once('./settings.php');
session_start();
print_r($_SESSION);
if(isset($_SESSION['hoge'])){
$old = $_SESSION['hoge'];
}else{
$old = 'atai';
}
session_destroy();
$a = rand();
session_id($a);
session_start();
$_SESSION['hoge'] = $old.'_atai';
?>
<a href="./session.php">hoge</a>
こんな感じでどう?
0485nobodyさん
2008/06/13(金) 01:59:37ID:???2.セッションの中身を変数に書き出し
3.とりあえずセッションの中身を破棄
4.session_idで自分で値指定(例では面倒なのでrandしてみた)
5.session_start
6.値の格納
requireしてるsettings.phpは、ini_set('session.use_trans_sid', 1)して、GETクエリにセッション渡して動作みてるのに使っただけ。
一応動いてるように見えるけど、どうでしょうね。
0486nobodyさん
2008/06/13(金) 02:06:41ID:???POSTメソッドで送られてきたHTTPのBODYって、$_POST変数に格納された値のこと?
だったら、$_POSTに格納されてる値をstrlenとればバイト数でるんじゃない?
0488nobodyさん
2008/06/13(金) 02:13:10ID:???0489nobodyさん
2008/06/13(金) 02:21:00ID:???0490nobodyさん
2008/06/13(金) 02:28:05ID:???具体性がないと、ただ難癖つけたいだけにしか見えないよ。
具体的に指摘して欲しい。
2chの行数制限を踏まえた上で。
0491nobodyさん
2008/06/13(金) 02:33:11ID:???このソースは、value値を自動的に書き換えるためだけに、生成されたHTMLを一度XML書式の配列に落として、
値の中身見て、値を突っ込むの?
こんな方法で実現させるぐらいなら、普通に処理したほうが良くない?
もしくは、Quick_Formちょろっといじって該当の機能つけるとか。
まぁ、もしくは、inputタグを生成する関数(or class)作って、REQUEST_METHODがPOSTだったときにvalue値をごにょごにょするようにするとか。
0492nobodyさん
2008/06/13(金) 02:54:37ID:???> 実際、読み込んだ後にsession_idで指定しても、
> 発行されるクッキーは旧IDが入っています。
そこでもう一回 session_start() じゃだめだっけ?
0493nobodyさん
2008/06/13(金) 03:05:52ID:???>>484でソース書いた者ですが、
あのソースで動くなら、>>492で行ってる通りっスね。
destroyって、セッション殺すわけじゃなくてセッション変数に入ってる値を破棄するだけだから。
session_start();
session_id('nantoka');
session_start();
で書き換わるね。
0494nobodyさん
2008/06/13(金) 08:48:03ID:VkO+Sagjいままではaccessで顧客情報を共有しており、それをmysqlにインポートするべく
phpmyadminをインストールしcsvにてインポートしようとしているのですが、
phpmyadminのインポートするファイル形式の選択肢がsql形式しかありません、
いろいろググってみたのですが該当する理由がわかりませんでした。
他のページでは形式が選べる的なことが書いてあるのですが、当環境では見当たらないのです。
ご教授願えるとありがたいと思います。よろしくお願いします。
0495nobodyさん
2008/06/13(金) 09:34:22ID:???0497nobodyさん
2008/06/13(金) 13:33:09ID:EDleoE9amysqlなどのDBを自前で用意するときは、
DBのサーバー名、ログインユーザー名、パス、DB名、DB内のテーブル名などがわかっているので
1. mysql_connect()でDBにアクセス→DBの任意のテーブルに文字列をINSERTするスクリプトを書いておく
2. CRONで1.を定時に実行させる
で自動投稿が可能ですが
fc2などのブログに自動投稿しようと思った場合はどのような処理や関数を使えばいいのでしょうか
こちらは掲示板の自動投稿に近いと思うのですが、
そのやり方ですら思いつきません
どうぞよろしくお願いします
0498nobodyさん
2008/06/13(金) 13:36:24ID:???0499nobodyさん
2008/06/13(金) 13:36:36ID:???レンタルブログ使った事ないから知らないけど、
cronのような機能を使えない以上は、
POSTするプログラムを用意して、
こちら側で定期実行するしかない気がするんだけど。
0500nobodyさん
2008/06/13(金) 13:47:10ID:EDleoE9aいえ、スパマーではなく単なる知的好奇心です
>>499
そうですね
そのPOSTするプログラムを作りたいのですが、
1.フォームにIDとパスワードをPOST
2.記事をPOST
このやり方がわかりません・・・
と思って質問させてもらったのですが、1、2をそのままやればできるのかもしれないと思いました
実験してなかったのでやろうと思います
0501nobodyさん
2008/06/13(金) 13:54:48ID:???0502nobodyさん
2008/06/13(金) 14:05:36ID:EDleoE9aそうですね すいません
スパム行為によって利益をあげることを目標としているスパマーは嫌いですけど
技術を身につける上での通過点としてスパム行為の知識を持っておくのはアリかなと思い、質問させてもらったのですが
こういう質問はもっとひっそりとしたところでやるべきだったのかもしれません
すいません
0503nobodyさん
2008/06/13(金) 17:41:51ID:???ここでSQLの設定ができずに登録が先に進まないんですが仕様ですか?
0504nobodyさん
2008/06/13(金) 18:43:20ID:???よくある質問(何も無いけど)を見て、もしわからなければ
お問い合わせ(エラーになるけど)で質問したらいいかも
0506nobodyさん
2008/06/13(金) 21:01:00ID:???>SQLの設定ができずに
とだけ言われても返答のしようも無いですよ。
同じものを取得して実際にインストールしてみろとでも?
なにをやって、どういうエラーが出ていて、そのソースにはこういた記述があって・・・
ぐらいは書いた上で質問してもらえると助かります。
0507nobodyさん
2008/06/14(土) 00:14:23ID:???(2) http://example.com/?bar のように、
とフォーム入力側で実現することは可能でしょうか?
<form method="get" action="./index.php">
<input type="text" name="foo" value="" />
<form>
GETでinputに値を渡して、
URLを(2)のように表示させたいのです。
.htaccessだとうまく実現できずに困っています。
0508nobodyさん
2008/06/14(土) 00:31:48ID:???0509nobodyさん
2008/06/14(土) 00:33:52ID:???0511nobodyさん
2008/06/14(土) 00:41:18ID:???foo=も消したいのか・・・
JavaScriptでURL作るなりしないと、formを普通にsubmitするだけじゃ無理じゃね?
0512nobodyさん
2008/06/14(土) 03:03:01ID:???<?php
//大雑把だけどむりやりブッ飛ばして
if(isset($_GET['foo'])){
header('Location: '."./?".$_GET['foo']);
}
//取得する?って事かな
if(isset($_GET)){
print_r($_GET);
}
?>
<form method="get" action="./">
<input type="text" name="foo" value="">
<input type="submit" value="送信">
</form>
0513nobodyさん
2008/06/14(土) 04:21:01ID:SvNsf5RjAサーバーに置いてあるa.logファイルをBサーバーから書き換えるには
何を使えばいいでしょうか?
fopen("ftp://アノニマス:パスワ@ftp.a.ne.jp/headline.log","w");
とすると、FTP server reports 553 /headline.log: Permission denied
と言うエラーが出ます。
headline.logファイルの属性は、777と666で試しました。
結果は変わらずです。
使う関数を間違えているのでしょうか?
0514nobodyさん
2008/06/14(土) 04:25:52ID:???0515nobodyさん
2008/06/14(土) 04:27:27ID:???0517nobodyさん
2008/06/14(土) 04:56:10ID:UEa+HjFVシステム). OS:Linux Vine4.2 HTTP:Apache2.2.3 PHP 5.2.6
操作1) PHPをApacheに組み込み、test.phpにアクセス(*1
. 情報が表示されたのでPHPの正常動作を判断
操作2) 自鯖のHTTPディレクトリにファイル(/var/www/html/rss/rssv.php)を作成(*2
操作3) 自鯖の公開ページにソースを記述(*3
が、RSSは表示されず、ソースを張った場所には何も表示されず
*2)のいじった場所はShift_JISで上記の結果。改変後は「ページが表示できません」エラー
*1) <?php
phpinfo();
?>
*2) <?php
require "XML/RSS.php";
$code = "UTF-8"; /*←ここいじった*/
(ry
*3) <iframe src="./rss/rssv.php?u=http://(´・ω・`).com&n=3" (ry></iframe>
何処かおかしいところがあればご教授下さい。
マニュアル他解説サイトなどを手がかりにしましたが、
自鯖公開ページとPHPは同じエンコーディングじゃないとまずいのではと思い、
その部分を変更してみましたが目標に至れず質問しますた。
0518nobodyさん
2008/06/14(土) 08:55:45ID:???0519nobodyさん
2008/06/14(土) 10:01:05ID:???どうすれば改善できるでしょうか
0522nobodyさん
2008/06/14(土) 10:38:31ID:???素早い回答ありがとうございました
ですが知識の乏しい自分にはどうしてもわかりませんでした
もう少しわかりやすくお願いできないでしょうか
0525518
2008/06/14(土) 11:19:12ID:aruCSElJもしかしてこういうことですか?
2ちゃんねるそのものが初心者なもので
一応マニュアルやリファは読んだのですが
わからなかったのでここにきました
0529nobodyさん
2008/06/14(土) 11:40:11ID:???0530nobodyさん
2008/06/14(土) 11:52:08ID:???0531nobodyさん
2008/06/14(土) 14:21:20ID:QTSkypnpは何て言っているんですか??
0532nobodyさん
2008/06/14(土) 14:45:47ID:???0533513
2008/06/14(土) 15:00:41ID:SvNsf5Rjありがとうございます
fopen("ftp://アノニマス:パスワ@ftp.a.ne.jp/headline/headline.log","w");
wwwフォルダだったので新たにheadlineフォルダを作ってそこのパーミッションを
766でやってみました。ファイルのパーミッションは666です。
次はFTP server reports 553 /headline/headline.log: No such file or directory
となりました。ファイルのパスなどは間違えていないのですが…
0535513
2008/06/14(土) 16:44:49ID:SvNsf5Rjサクラのレンタルでも調べられますか?
あと、別にFTPに拘ってるわけでもなく複数のサーバー使ってるので
それらの情報をヘッドライン.logとして書き込めれば何でもいいのですが…
オススメの関数とかありますか?
ちなみにソケットとか言うのはサーバー側が使えません。
関係ないかもしれませんが。
0536nobodyさん
2008/06/14(土) 17:27:37ID:???sakura共有なら普通にftp関数使ってユーザでログインすればいいんじゃない?
たしかftpはインスコされていたと・・・
http://www.php.net/manual/ja/function.ftp-put.php
0538nobodyさん
2008/06/14(土) 17:53:13ID:???うちのsakura共有でやってみた。以下でいけたぽい
unlink("ftp://ゆーざID:パスワード@ホストIP/home/ゆーざID/www/test.txt");
$fp = fopen("ftp://ゆーざID:パスワード@ホストIP/home/ゆーざID/www/test.txt", "w");
fputs($fp, date("Y-m-d H:i:s"));
fclose($fp);
sakuraのユーザID、パスを使う
ファイルがある場合は先に削除しないとエラーになる(上書きできないみたい)
ホストIP以降のパスはフルパス
0539535
2008/06/14(土) 18:04:15ID:SvNsf5Rjマジですか…
先にファイルのデータを読み取ってそれに追加したいのですが…
とりあえず試してみます
0540535
2008/06/14(土) 18:11:15ID:SvNsf5Rjしかし、メチャクチャ遅いのですが…
さらに書き込み終わった後、すぐにエラーでIEが閉じてしまいました…
0541nobodyさん
2008/06/14(土) 23:11:31ID:???PHPでCSVのデータを表示できる事は出来たのですが
その各項目をテーブルに収めたいのです。。
echo を使うと大変で(汗 Smartyを使うしかないのでしょうか?
0542nobodyさん
2008/06/14(土) 23:17:41ID:???<table summary="hoge">
<tbody>
<?php foreach($array as $val): ?>
<tr>
<td><?php echo $val[0]; ?></td>
<td><?php echo $val[1]; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
こういう書き方じゃダメ?
0543nobodyさん
2008/06/14(土) 23:22:53ID:???最近では非推奨らしいけど、ショートタグとか言われてる記述があるよ。
<?php echo $hoge; ?>
↓
<?=$hoge?>
0544nobodyさん
2008/06/15(日) 00:11:54ID:???0545nobodyさん
2008/06/15(日) 00:22:00ID:???0546nobodyさん
2008/06/15(日) 01:55:32ID:???0547nobodyさん
2008/06/15(日) 02:27:18ID:qXYgnKYOはどうゆうエラーですか??
0549nobodyさん
2008/06/15(日) 03:01:05ID:???0550nobodyさん
2008/06/15(日) 15:02:23ID:T2nrQoQeたまに、
Fatal error: Allowed memory size of xxxxxx bytes exhausted
を吐くのですが、エラーログにファイルパスを吐いてくれません。
php.iniの設定がまずいのでしょうか?
他のerrorはファイルパスを吐きます。
どうすれば、ファイルパスを吐かせることが出来るか、
ご教示下さい。よろしくお願いします。
出来ない場合のプランとしてob_startと、$php_errormsg
ob_get_contents()、$_SERVERなどを使ってログ出しを
しようかなと思っています。
0552nobodyさん
2008/06/15(日) 16:46:24ID:PnCbQKDpif(eregi("$value$",$host))
としているのですが仮に
ZQ068252.ppp.dion.ne.jpと言うIPがあるとして
valueに「.ppp.dion.ne.jp」と書くと規制するのですが
「ZQ068252.」の部分で規制しようとするとスルーします
どうしてでしょうか?
0553nobodyさん
2008/06/15(日) 16:58:36ID:???を
if(eregi($value,$host))
にすればok
0554552
2008/06/15(日) 17:01:46ID:PnCbQKDp最後の$はこれ以降文字があったらダメ!
みたいな設定ですかね?
とにかくありがとうございます。
0555nobodyさん
2008/06/15(日) 17:06:34ID:???0556552
2008/06/15(日) 17:06:46ID:PnCbQKDp弾くようになってしまったのですが…
それ以外何も弄っていません
0558552
2008/06/15(日) 17:17:35ID:PnCbQKDp$が行の最後で^が行の最初と書いてました…
現在も捜索中ですが「.ppp.dion.」の中間文字列など
文字列がマッチするって言う表記がありません…
調べて見ますが一言で片付くならご教授お願いします
■ このスレッドは過去ログ倉庫に格納されています