【PHP】下らねぇ質問はID出して書き込みやがれ 75
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/10/16(木) 23:52:01ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0567565
2008/11/03(月) 02:57:33ID:q5+iesG+0568nobodyさん
2008/11/03(月) 07:05:02ID:2/MPUU+n0569nobodyさん
2008/11/03(月) 07:21:44ID:cnJdztaG個人名出しまくり馬鹿
0570nobodyさん
2008/11/03(月) 09:37:08ID:ap7S3JYP1.ファイルに保存して
2.そのファイルを読み込んでhtmlとして表示したいんです。
(ただしhtmlのソースはフォーム入力時と同様に改行済み)
その際にファイルへの保存は一行でしたいんですよね。
問題は1.で入力したフォーム内の改行でして…
私が考えたところでは
改行の前に nl2br関数(<br/>)を使ったあと
(2.でブラウザー上で正しく表示するため)
str_replace('\n', '適当な文字', フォーム内の文字)
で強引に一行にして保存して
2.の際に'適当な文字'を改行に変換すると言う方法です。
これでもいけそうなんですがよい関数ってありませんか?)
0571nobodyさん
2008/11/03(月) 09:42:49ID:???そうすると、中が抜けるって不思議ですね。
・本当にその状態でブラウザが起動している
→エラーがあってその状態になっている
→実はしばらく待つと正常に表示される
・ブラウザはページを正しく表示している
→gdがなんかやらかしている(でもコマンドライン実行したときは正常)
→キャプチャ処理がなんか(ry
リモートからウェブサーバーにアクセスしたとき、コンソールかどこかに
ブラウザウインドウが開けば、それを見てみたいものだけど・・・
0572nobodyさん
2008/11/03(月) 09:53:59ID:???よいかどうかはその人にしかわかりません。
速度が速いのがよいのか、記述が簡潔なのがよいのか、
メモリをあまり消費しないのがよいのか、、、
あとテキストファイルの可読性とか、普通は条件があるからね。
「適当な文字」を決めかねているだけじゃないのかな。
行区切りはLFにして、フォーム内(?)改行はCRとか。
0573nobodyさん
2008/11/03(月) 10:10:04ID:PSSHjPYPttp://www.eternalheart.com/archives/2006/04/08/220739.php
ここにあるコードをmagpierss-0.61で動かしていますが、文字化けが酷いです。
どうしたらいいでしょうか?
0575nobodyさん
2008/11/03(月) 16:25:51ID:io8hbsJE【PHPのバージョン】PHP Version 4.3.11
【連携ソフトウェア】
【質問内容】
レンタルサーバーでphp動かしています。
phpの処理で生成されたテキストファイルのエンコードをphp内で
x-sjisからUTF-8にしたいのですがx-sjisのまま変わりません。
$prefix = 元のテキスト
$prefiu = UTFにしたいテキスト
$fp = fopen($prefiu, "w");
//ファイルをいっこあける
$ab = $ar=file($prefix);
//テキストよみこむ
foreach($ar as $v){ fputs($fp,mb_convert_encoding($v, "UTF-8", "auto"));}
//一行づつUTFに変えながら書き込む
fclose($fp);
//ファイルをいっこしめる
よろしくお願いします。
0576nobodyさん
2008/11/03(月) 16:26:48ID:4elyvO9Imagpierssだと挙動が安定しないので。
0578nobodyさん
2008/11/03(月) 17:12:53ID:???0579nobodyさん
2008/11/03(月) 18:20:38ID:TasbvRllアホ 12000件
アナル 5600件
麻生太郎 100件
みたいなのを作りたいのですがPHPでは無理ですか?
JAVA読めないんでPHPでやりたいす。
0580nobodyさん
2008/11/03(月) 18:21:59ID:???0581nobodyさん
2008/11/03(月) 18:43:32ID:???0582nobodyさん
2008/11/03(月) 19:06:22ID:???http://www.enjoyxstudy.com/javascript/suggest/
0583nobodyさん
2008/11/03(月) 19:20:37ID:hsqH5na0自作するのは無理だと分かりました...
0584nobodyさん
2008/11/03(月) 19:43:00ID:???0587570
2008/11/03(月) 20:43:37ID:ap7S3JYPレスありがとう
>>575
$strEncode = mb_internal_encoding(); // 現在の文字エンコーディングを取得
mb_internal_encoding('SJIS'); // SHIFT=JISに一時的に変換
$arr = @file('before.txt') or die('file error'); // 配列に読み込む
$str =""; // 後ほど保存用
foreach ($arr as $value) {
$str .= mb_convert_encoding($value, "UTF-8"); // UTF-8 に変換
}
$fp = @fopen('after.txt', "w") or die('file error');
set_file_buffer($fp, 0);
flock($fp, LOCK_EX); // ↓ロック関係
rewind($fp);
fputs($fp, $str);
flock($fp, LOCK_UN);
fclose($fp);
mb_internal_encoding($strEncode); // エンコーディングを戻す
こんなもんかな。
fopenしながらファイルを読み込んだりしているのでロック関係もつけた。
0588nobodyさん
2008/11/03(月) 21:01:46ID:???file_put_contents
mb_convert_encoding
これらを使えばそれこそ1行で書けるような気がします。
あとflockするなら失敗したときの事も考えてあげて下さい。。。
0589570
2008/11/03(月) 21:13:02ID:ap7S3JYPあー、ソースを改良することしか考えなかったから
file_get_contents を忘れていた。
それこそ数行でかけるな。
でも
>【PHPのバージョン】PHP Version 4.3.11
だから無理。
0590 ◆N2emjZiWyU
2008/11/03(月) 21:32:56ID:XFsZ1V0e投稿ページとPOSTされたデーターを受け取るページをtest.phpに書いたとします。
そこで、投稿ページで作成されたセッションと、POSTされたセッションが違う場合、不正な投稿として、エラーを出すスクリプトを書いたのですが、アクセスしたときと投降する時で2回test.phpにアクセスした事になり、正しくセッションが保存されないのですが、どうしたらよいのでしょうか?
<?php
session_start();
$r = session_id();
$_SESSION['key'] = $r;
if(isset($_POST['ses'])){
if($_POST['ses'] !== $_SESSION['key']) exit("POSTセッション:<br>".$_POST['ses']."<br>と保存されたセッション:<br>".$_SESSION['key']."<br>が違います。");
echo "セッションは正しいです。";
}else{
if(!$_SESSION['key']) exit("セッション変数に値が保存できませんでした。");
echo <<< FORM
<html><body>
<form action="" method="POST">
▼session<br>
<input type="text" name="ses" istyle="3" value="$r"><br><input type="submit" value="submit"></form></body></html>
FORM;
}
?>
0591 ◆N2emjZiWyU
2008/11/03(月) 21:38:08ID:XFsZ1V0ehttp://s-ht.com/touroku/test.php
セッションを保存する場所を、
if(isset($_POST['ses'])){
}else{
この場所
}
で作成してみたら、elseの条件の時に作成している事になって、POSTされたデーターを確認するページでは$_SESSION['key']は空でした。
0592nobodyさん
2008/11/03(月) 21:38:09ID:???2chで聞いてスクリプト書く鯖屋とか客の立場からしたら最悪だろ
0593 ◆N2emjZiWyU
2008/11/03(月) 21:40:05ID:XFsZ1V0e申し訳ありません。
言い訳ですが、PHPプログラミングは最近始めたばかりでして…
ちょっと、サーバー運営とは関係なしに作ってみたいと思いました。
0595nobodyさん
2008/11/03(月) 21:49:15ID:???0596nobodyさん
2008/11/03(月) 21:53:56ID:???もうやめてね
0597nobodyさん
2008/11/03(月) 21:56:41ID:???0598nobodyさん
2008/11/03(月) 21:57:43ID:???いや、別に動機とか初心者であるとかなんてことはどうでもいいんだ。
ただ、根本的にアルゴリズムを考える能力が皆無っぽいから、ここで逐一質問する前に
基礎を学んできた方がいいと思うんだ。せっかく答えても>>558みたいなことされるとやりきれん。
0602nobodyさん
2008/11/03(月) 22:01:32ID:???0604nobodyさん
2008/11/03(月) 22:33:09ID:teiSE6wzショートオープンタグの具体的な問題を教えて下さい。
0605nobodyさん
2008/11/03(月) 22:39:10ID:???0606nobodyさん
2008/11/03(月) 22:39:18ID:???だって、そいつ(教える側)の許容範囲にない質問したら
すぐに煽るか罵倒されるからね。
知識がないものは全てに置いて立場が弱い。
0607nobodyさん
2008/11/03(月) 22:43:39ID:???じゃないと、何れ「【PHP】下らねぇ質問はID出して回答はアンカつけて書き込みやがれ xx」になってしまう
0608nobodyさん
2008/11/03(月) 22:45:56ID:???その知識も、
>・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
をしておくだけでかなり違うだろうに、それすらして無さそうだから煽られるんじゃないかと。
0609nobodyさん
2008/11/03(月) 22:47:41ID:???0610nobodyさん
2008/11/03(月) 23:04:43ID:???0611nobodyさん
2008/11/03(月) 23:15:34ID:???0612nobodyさん
2008/11/03(月) 23:39:20ID:???0613nobodyさん
2008/11/04(火) 00:06:47ID:???0614nobodyさん
2008/11/04(火) 00:25:00ID:Ba/y534Dそうさせず、「サーバが混みあってます」みたいなメッセージを出すにはどうしたら良いでしょうか?
タイマーを仕掛けるようなのでなく、一発で出来る関数というか機能はないでしょうか?
また、アップロードサイズの合計値がphp.iniで設定したpost_max_sizeの合計値を
超えたときにもメッセージを出したいです。
自分では遷移後のページでその表示をしようとしたんですが、実際にはページ遷移せず
もとのフォームのままで出来なかったのですが、どうしたらいいでしょうか?
0616nobodyさん
2008/11/04(火) 02:39:40ID:???>PHP5を使っています。処理に時間がかかりすぎると画面が真っ白になると思いますが・・・
flush()あたりの関数を使えばタイムアウトすることはない
単に処理に時間がかかってるだけならこっちにしたほうがいい
phpにもタイムアウトを制御する設定がある
set_time_limit()あたりを参照
>また、アップロードサイズの合計値がphp.iniで設定したpost_max_sizeの合計値を・・・
合計値?ディスクの容量制限か何か?それとも単純に1ファイルのサイズが設定値を超えてるか?
よくわからないけどここみる見ると幸せになれるかもしれない
http://jp2.php.net/manual/ja/features.file-upload.php
0617nobodyさん
2008/11/04(火) 02:54:17ID:vfiF2BhkhtmlでXML宣言を行う理由を教えて下さい。
0618nobodyさん
2008/11/04(火) 03:31:01ID:???で、XHTMLで書くならXML宣言が必要。
0619nobodyさん
2008/11/04(火) 07:07:02ID:vfiF2Bhk0620nobodyさん
2008/11/04(火) 07:08:38ID:vfiF2BhkなぜhtmlにXML宣言がないと不都合(正常に表示されない)があるのですか?
0621nobodyさん
2008/11/04(火) 07:13:04ID:vfiF2Bhkhttp://www.w3.org/Icons/valid-xhtml10-blue←これ
XML宣言はしていません。htmlタグ内に、xmlnsは記述してあります。
結論から申しますと、W3Cの規格に沿うのにXML宣言は不要と考えますが、いかがですか?
0622nobodyさん
2008/11/04(火) 07:20:34ID:???でcharsetを指定しているとかの条件を満たした場合だけだろ。
S-JISで書いた場合には当然必須だし、ブラウザのDOCTYPEスイッチの誤動作を防ぐ意味で
もあった方が好ましい。
0623nobodyさん
2008/11/04(火) 07:50:53ID:???<head>
<meta http-equiv="Refresh" content="0.1">
</head>
<body>
<?php
$a=rand();
print $a;
?>
</body>
</html>
3ヶ月間、必死にPHPを勉強して、初のPHPプログラムができました。
結構おもしろいとおもうんですけど、何か感想ください。
0625nobodyさん
2008/11/04(火) 10:40:27ID:z4Bdm1sAmdb2かdb_table書き直して大文字小文字の混在型でselectの結果返すようにしようかと思ったんだけど、
そもそもなんでこれどっちかしかダメなん?oracleとかがそういう仕様だから?歴史的経緯?
0626nobodyさん
2008/11/04(火) 11:20:15ID:???0627nobodyさん
2008/11/04(火) 11:27:12ID:???fetchmode_assoc設定した時の戻り値の連想配列のカラム名です。
いま定数でなんとかならないかともじもじ中です。
0628nobodyさん
2008/11/04(火) 12:31:15ID:Bw2Zgvr7<meta http-equiv="Refresh" content="1">
<title></title>
</head>
<body>
<table cellspacing="0" cellpadding="0" width="75%" border="1">
<tbody>
<tr>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
</tr>
<tr>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
</tr>
<tr>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
<td><?php $a=mt_rand(1,7); print "$a<br>\n"; ?></td>
</tr>
</table>
</body>
</html>
ちょっと改造してスロットマシン作ってみたよ
これでお金を払わずに何回でもギャンブルを楽しめるね
777がそろったかどうかを検出する機能はまだないけど。
0629nobodyさん
2008/11/04(火) 12:32:23ID:???【PHP】1が必死にPHPを勉強するスレ
http://pc11.2ch.net/test/read.cgi/php/1062053369/
0630nobodyさん
2008/11/04(火) 13:48:32ID:EdqxmwCKheader('Location: 日本語ドメイン.jpn');
みたいに飛ばすと「アドレスが見つかりません」となります。
内部文字コードはUTF-8です。
どうすればいいでしょうか?
0631nobodyさん
2008/11/04(火) 14:51:20ID:vfiF2Bhk的確なレスありがとうございます。
確かに私の作成したサイトは、UTF-8で記述されています。
また、Content-typeにcharsetが指定してあります。
逆に言うと、上記を満たしていればXML宣言は不要と考えて間違いないでしょうか?
ところでDOCTYPEスイッチの誤動作とは何でしょうか?
今度、S-JISでサイトを作ってみます。
S-JISで最後にサイトを作ったのは5年以上前のような記憶があります。
S-JISで作ったサイトでXML宣言が必要というのも何か頓珍漢な印象です。
0633nobodyさん
2008/11/04(火) 16:45:12ID:XNk+b6bAif(isset($_POST["gyouline"])){
$fp=fopen($linkfile,"w");
foreach($linkdate as$gyouban=>$ogline){
if($gyouban==$_POST["gyouline"]) {
fwrite($fp,$ogline."|".$newline);…
ogline|newlineみたいにしたいのに実際のテキスト見ると
ogline
|newline
になっちゃうのは何故
0635nobodyさん
2008/11/04(火) 16:51:52ID:???$oglineのケツに改行入ってるんじゃねーの?
0636nobodyさん
2008/11/04(火) 16:52:52ID:???0637nobodyさん
2008/11/04(火) 16:57:00ID:XNk+b6bAで、さっきstr_replaceで取り除こうとしたんだけど失敗した
もう消しちゃったけどこんな感じか
str_replace(array("\r\n", "\r", "\n"), "",$ogline );
でもこれで駄目なのは何故?
0639nobodyさん
2008/11/04(火) 17:02:19ID:XNk+b6bAサーセン
0640nobodyさん
2008/11/04(火) 17:05:10ID:???0643nobodyさん
2008/11/04(火) 17:18:51ID:???ってこと?
0644nobodyさん
2008/11/04(火) 17:20:25ID:XNk+b6bAあ・・・やってみます
回答サンクスです
0645nobodyさん
2008/11/04(火) 17:22:05ID:???0646nobodyさん
2008/11/04(火) 17:24:07ID:XNk+b6bAサーセーン!
皆さんありがとう、こんな単純なミスで質問しちゃう俺・・・ビクビクッくやしい
0647nobodyさん
2008/11/04(火) 17:31:22ID:???和んだ。
それには従わなくていいんだよw
コードの間違いは自分で気付かない事もあるから気にすんな
0648nobodyさん
2008/11/04(火) 17:46:32ID:XNk+b6bAども
0649nobodyさん
2008/11/04(火) 18:00:55ID:???0650nobodyさん
2008/11/04(火) 20:36:58ID:vpQ1bWzc複数のページにわたって、特定のパラメータ(userIdとか)に紐付けられた
同じ広告や関連情報が掲載されるスペースがあるとします。
自分の単純な発想では、userIdをキーにクエリを実行して適切な情報を出力すれば
いいと思うんですが、実際にはページ移動するたびにいちいちクエリを実行するのはサーバの
無駄な負担になるような気がします。
そういう問題を避けるように、一度取得した情報を一定期間保持する方法は
ないでしょうか?(自由に期間設定できるもの)
cookie以外の、phpを使った便利なやり方があったら教えて欲しいです。
環境はMysql5, php5, Apache2です。
漠然とした質問ですみません。
簡単なキーワードや関数名、テクニック名(?)でいいので教えてください。よろしくお願いします。
0652nobodyさん
2008/11/04(火) 21:04:28ID:moPWseJOsession
シリアル化
キャッシュ
0653nobodyさん
2008/11/04(火) 21:27:44ID:???どうもです。セッションですか〜
確かにそれでかまわない気がしてきました
http://dailynews.yahoo.co.jp/fc/entertainment/tetsuya_komuro/?1225789969
このページの右の「注目の情報」の部分みたいなことをしたいと思ったんですが、これは
ページの持つ何らかの値を調べて、ローテーションで広告を表示してるんだと思いますが
最初に一回全部の広告情報を得てセッション化し、後はリロードするたびに切り替えてるんでしょうか、、
下のほうにある「関連情報の編集履歴」っていう部分は、前回の表示時刻から
一定時間過ぎていた場合のみDBに新情報を取りにいってるって感じなのかな
初心者スレで済むような質問ですみませんでした。
こういうのや、もっとハイレベルな実務的なノウハウを知るにはDBマガジンとかを見たらいいんでしょうか?
DBとの連携や負荷も考えたPHPの解説書でお勧めのものがあればよかったら教えてください。
0654nobodyさん
2008/11/04(火) 21:32:28ID:???下のほうの奴は、単に更新時刻の早い順に5件取ってきてるだけでしょ。
0655nobodyさん
2008/11/04(火) 21:41:33ID:AKrkeosCというダブルクォ-テーション+カンマ区切りの文字列を
配列に入れたいのですが、どうすればいいのでしょうか?
0656nobodyさん
2008/11/04(火) 21:46:08ID:???それサイトと連動してないと思うが?F5で変わるし内容もあれだし
例えばHTMLファイルやPHPを生成して普段はそれを読み込むだけにして
一定時間毎にファイルを書き換えるとかでも負荷軽減になる
あとそういった関連の本はあんまり無い
あってもPHPの本というわけでは無い場合が多い(実際負荷軽減にPHPはあんまり関係ない
>>655
シングルクォーテーションで囲むもしくは\"のように”をクォートする
array('"バナナ","リンゴ","みかん"');
array("\"バナナ\",\"リンゴ\",\"みかん\"");
0657nobodyさん
2008/11/04(火) 21:55:31ID:???0658655
2008/11/04(火) 22:08:38ID:???クォートしても配列に代入されません。
>>657
explode(",",$array)
とすれば配列に代入されますが、"が付きます。
0660nobodyさん
2008/11/04(火) 22:27:54ID:???0662nobodyさん
2008/11/04(火) 23:07:49ID:???0663nobodyさん
2008/11/05(水) 01:32:23ID:???<?php
$db=sqlite_open("login.sqlite",0666,$err);
$i_pass=$_POST['admin'];
$ps=sqlite_query("SELECT l_pass FROM login",$db);
$res=sqlite_fetch_array($ps);
if($i_pass==$res['l_pass']){
sqlite_close($db);
session_start();
$_SESSION['check']=1;
header("Location: register.php");
}
else{
header("Location: accounts.php");
}
?>
このページにフォームからアクセスし、adminにはパスワードが入力されています。
これを実行するとHTTP500内部サーバーエラーが出てしまいます。
headerを使う前にhttpタグやスペースなどがあるとエラーが出るとのことですが、それらは見つかりません。
何が原因でエラーが出るのでしょうか?
使用しているバージョンはPHP5.26です。
0664633
2008/11/05(水) 01:33:40ID:JHnpKoHFsageチェックをはずし忘れていました。
0665nobodyさん
2008/11/05(水) 01:34:05ID:???0666633
2008/11/05(水) 01:43:02ID:JHnpKoHFセッションの部分を削除して実行してみましたが、同様のエラーが出ました。
■ このスレッドは過去ログ倉庫に格納されています