【PHP】下らねぇ質問はID出して書き込みやがれ 92
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/01/09(土) 20:11:42ID:lsb/cZ9k過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 91
http://pc11.2ch.net/test/read.cgi/php/1260247989/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0447nobodyさん
2010/01/27(水) 14:30:36ID:???0450nobodyさん
2010/01/27(水) 14:48:00ID:???じゃそれを削除するか場所を変えるかおかしくない奴拾ってくるかすればいいのでは?
0451nobodyさん
2010/01/27(水) 14:50:56ID:???原因がわかっているなら、登録を削除すれば解決するんでね?
楽するよりもエラーを吐いて動かない方が重症だろ
>マンドラインでどのフォルダからでも楽にphpが使用できるのですが
PHPをインストールしているディレクトリのショートカットを、デスクトップに貼っとけ
0452nobodyさん
2010/01/27(水) 14:53:53ID:???補足ですが、mysql5.1とphp5.2で動かない症状が出た場合、
mysqlに入っているlibmysql.dllをphpに入っているlibmysql.dllで上書きすると動きます
0454nobodyさん
2010/01/27(水) 15:10:59ID:???エラーを吐くDLL名でファイル検索して、バージョン違いをゴミ箱入れれ
0455nobodyさん
2010/01/27(水) 15:22:10ID:???0456nobodyさん
2010/01/27(水) 15:28:38ID:???(コマンドラインを使うことは)
0457nobodyさん
2010/01/27(水) 16:58:23ID:???夜になったら質問してればいいのに
0458nobodyさん
2010/01/27(水) 18:32:55ID:J0bFMzRrID ちょめちょめ PASS にゃーん
ID でっていう PASS すぐやる夫
・・・
</body></html>
というhtmlファイルから、各IDとPASS抜き出すのはどうすればいいんですか?
$ID1 = "ちょめちょめ";
$PASS1 ="にゃーん";
$ID2 = "でっていう";
$PASS2 ="すぐやる夫";
という形にしたいです。宜しくお願いします。
0459nobodyさん
2010/01/27(水) 18:38:11ID:???ハッシュ使った方がいい気がするが
0461nobodyさん
2010/01/27(水) 18:47:58ID:???0462nobodyさん
2010/01/27(水) 18:52:04ID:???0463nobodyさん
2010/01/27(水) 18:52:35ID:???0464nobodyさん
2010/01/27(水) 18:53:49ID:???$w=<<<_YARUO_
$ID1 = "ちょめちょめ";
$PASS1 ="にゃーん";
$ID2 = "でっていう";
$PASS2 ="すぐやる夫";
_YARUO_;
echo $w;
0465nobodyさん
2010/01/27(水) 18:58:12ID:???0466nobodyさん
2010/01/27(水) 19:36:50ID:J0bFMzRrありがとうございます。
他にいい抜き出し方があったらお願いします。
0467nobodyさん
2010/01/27(水) 19:55:59ID:???0468nobodyさん
2010/01/27(水) 20:17:23ID:???0469nobodyさん
2010/01/27(水) 21:08:43ID:J0bFMzRr$get = explode(" ",$file);
$ID1 = $get[1];
$PASS1 = $get[3];
print $ID1.$PASS1;
で一応表示されたんですが、これではダメですか?
あとこれを行数だけ繰り返してID2,PASS2と振るにはどうすればいいですか?
宜しくお願いします。
0470nobodyさん
2010/01/27(水) 21:11:59ID:???0472nobodyさん
2010/01/27(水) 21:41:05ID:J0bFMzRrありがとうございます。
arrayを使えばいいですか?
行数の分だけ繰り返すところと、置き換えの文字列を変更する作業が
手こずっています。
0474nobodyさん
2010/01/27(水) 23:38:17ID:???0475nobodyさん
2010/01/28(木) 00:02:48ID:Y7CMbuAKID2 PASS2
という感じ末尾を変更するやり方を教えてください。
>>474
すいません。
0476nobodyさん
2010/01/28(木) 04:54:47ID:???0478nobodyさん
2010/01/28(木) 10:51:17ID:???ファイルにデータを貯めるよりもデータベースに貯める方が楽でしょうか?
0479nobodyさん
2010/01/28(木) 11:10:51ID:???0480nobodyさん
2010/01/28(木) 12:24:33ID:???0481480
2010/01/28(木) 12:24:56ID:WZ4SPb0m0482nobodyさん
2010/01/28(木) 12:34:11ID:???0483nobodyさん
2010/01/28(木) 12:40:32ID:???0485nobodyさん
2010/01/28(木) 18:33:03ID:???>終了タグは「?>」です。HTMLにPHPコードを埋める際は終了タグを使いますが、
>ライブラリのようにPHPコードのみを記述する際は終了タグを省くことが慣例となっています。
というのをみて(ブログ記事の一部)、
-- test.php
<?php
〜〜
?>
改行
改行
--
みたいな場合がかなりやばい、ということはわかったのですが、
え?それだけ?で?
な気持ちです。たしかに改行改行がダメなことは初めて気付かされましたが、
2つ以上の改行に注意するのと、?>を記述しないという注意と
そんなに言うほど変わりないと思うのです。
しかしいろいろなところで、(phpコードのみの場合は)絶対?>を取り除きましょう!!
みたいなノリについていけないというか・・実際やってる人なんているんでしょうか・・
0487485
2010/01/28(木) 18:37:12ID:Wx5X+hZmよろしくお願いします
0488485
2010/01/28(木) 18:38:57ID:6pvkIKgbすみません id
0489nobodyさん
2010/01/28(木) 18:41:07ID:???0490485
2010/01/28(木) 20:28:59ID:DXCM0MC80491nobodyさん
2010/01/28(木) 20:32:21ID:???0492nobodyさん
2010/01/28(木) 21:53:49ID:CVOGs3cZ<?php
// メニュー用画像リスト
$menuimg["login"] = "<IMG src=\"./img/top.login.gif\" width=\"100\" height=\"50\" alt=\"ログイン\">";
$menuimg["regist"] = "<IMG src=\"./img/top.regist.gif\" width=\"100\" height=\"50\" alt=\"新規登録\">";
$menuimg["mail"] = "<IMG src=\"./img/top.mail.gif\" width=\"100\" height=\"50\" alt=\"管理人へメール\">";
$menuimg["osaifu"] = "<IMG src=\"./img/top.osaifu.gif\" width=\"100\" height=\"50\" alt=\"######\">";
// メニュー用URLリスト
$menuurl["login"] = "./constr.htm";
$menuurl["regist"] = "./constr.htm";
$menuurl["mail"] = "mailto:############@yahoo.co.jp?subject=【サイト名】問い合わせ";
$menuurl["osaifu"] = "http://######.com/#####/";
// タグ生成関数の定義
function writeout($name){
print "<A href=\"".$menuurl[$name]."\">";
print $menuimg[$name]."</A>";
}
// タグ発行
writeout("login");
writeout("regist");
print "<BR>";
writeout("mail");
writeout("osaifu");
?>
writeoutの引数に書かれた文字を連想配列名として出力したいのです。どうかお力をお貸しください。
0493nobodyさん
2010/01/28(木) 22:06:22ID:???writeoutの中でvar_dump($menuurl);
あと期待する動作と実際の動作を書かないと片手落ちでは?次回からね。
0494nobodyさん
2010/01/28(木) 22:18:48ID:2KkwWo9K0495492
2010/01/28(木) 22:23:49ID:CVOGs3cZvar_dump($menuurl);
の結果は以下のようになりました。
Notice: Undefined variable: menuurl in /var/www/xxx/xxx.php on line 29
writeout(login);の結果
期待した動作:
<A href="./constr.htm"><IMG src="./img/top.login.gif" width="100" height="50" alt="ログイン"></A>
に対し、実際の動作が
<A href=""></A>
になります
0497nobodyさん
2010/01/28(木) 22:41:45ID:???<?php
$str="test";
function write() {
echo $str;
}
write();
?>
0498nobodyさん
2010/01/28(木) 22:45:09ID:???・var_dumpの結果を見て自分で判断してほしかった。
・次回からねというのは今回の質問の意図は分かるので次レスではなく次質問から(=次レスでいちいち説明すんじゃねーぞ)という意味だった。
で結論としては関数内はスコープが違うので引数で渡してあげれば良いです。
0499492
2010/01/28(木) 22:56:02ID:CVOGs3cZ>>497様
global $menuurl, $menuimg;
を追加することで期待した動作をしました。
ありがとうございました。
0500492
2010/01/28(木) 23:07:10ID:CVOGs3cZいろいろとすみません。
こんな初心者丸出しの私に丁寧にご教示いただき、ありがとうございました。
おかげさまで無事に解決しました。
0501nobodyさん
2010/01/29(金) 00:45:00ID:+kLxfVXG今回、ある相対パスで指定されているアドレスを絶対パスに変換したいと思い以下のように書いたのですが、
※$Srcは相対パスの場合は../pを必ず含む。$Srcが相対パスではない事もある。
$AbsSrc = ereg_replace("../p","http://絶対パス/p",$Src);
「http://piza/〜」 というアドレスも一緒に変換されてしまいました。
相対パスを絶対パスにする良い方法があれば教えてほしいのですが。
ちなみに、realpath()は使ってみましたが、元々$Srcは文字列から引っ張ってきているので、
絶対パスを知る方法がなく上手くいきませんでした。
よろしくお願いします。
0502501
2010/01/29(金) 01:08:31ID:+kLxfVXG他サイトを見ながらもう一度トライしてみます。
スレ汚し失礼しました。
0503nobodyさん
2010/01/29(金) 01:13:34ID:???0504nobodyさん
2010/01/29(金) 04:20:40ID:???<script type="text/javascript">
function zzz() {
setTimeout('aaa1()',1000);
setTimeout('aaa2()',2000);
}
</SCRIPT>
のsettimeoutの部分を、txtファイルの行数分だけ
count関数を使って入れたいのですが、
$count=0;
$res=fopen($logfile,"r");
while(!feof($res)){
$str=fgets($res);
$count++;
$count1000 = $count*1000;
$sall = "setTimeout('aaa$count()',$count1000);}";
}
とすると
<script type="text/javascript">
function zzz() {setTimeout('aaa2()',2000);
}</SCRIPT>
になります。希望の動作になるにはどうしたらいいか宜しくお願い致します。
0506nobodyさん
2010/01/29(金) 10:09:40ID:???$hoge="aaa";
$kage="bbb{$hoge}ccc";//$kage=bbbaaaccc
定数はおっぱい括弧でくくっても展開されないようです。
define("mage","mmm");
$kage="bbb{mage}ccc";//$kage≠bbbmmmccc
勿論
$kage="bbb".mage."ccc";とすれば望んだ値が入りますが
出来れば変数と同じく、ダブルクオーテーションを増やさずに参照したいです。
0508nobodyさん
2010/01/29(金) 10:29:54ID:???質問なら質問らしく、独り言ならチラシの裏にお願い致します。
0509nobodyさん
2010/01/29(金) 10:53:33ID:???これってどこかで設定するんでしょうか?
ローカルでやってると最初のフォルダの頭で実行すると0なんですが、
サーバーで実行させると1になってます。
0511509
2010/01/29(金) 18:59:02ID:xrxVmrZ0最初のフォルダじゃなくて、スクリプトファイルでした。
0512nobodyさん
2010/01/29(金) 19:47:29ID:56kcplo8【連携ソフトウェア】mysql
【質問内容】
文字化けの件について教えてください。
データベースから抽出したデータはきちんと書き出されますが
htmlの<? ?>で囲ったところ以外の全部 (ページタイトルも) が ????? になってしまいます。
mysqlでもhtmlのmetaタグ内でもutf-8を指定してあります。
htmlファイル自体の文字コードもutf-8です。
なにか解決の手がかりになるようなことをご存知でしたらお願いします。
0513nobodyさん
2010/01/29(金) 20:50:13ID:???ヘッダに文字コード指定するといいのでは?
header("Content-type: text/html; charset=utf-8");
0514nobodyさん
2010/01/29(金) 21:50:52ID:JATQlPdVフォームからテキストを受け取って、$text_dataに入れます。それをチェックしてマッチしなかったら、
$error文を表示するのですが、123、yes、その他日本語、何を入れても$error文が表示されてしまいます。
理由が解りません。教えて下さい。お願いします。
$text_data = $_POST['person'];
if (!preg_match("/^([一-龠][ァ-ヶー][ぁ-ん]){1,8}$/uD",$text_data)){
echo $error = '漢字、カタカナ、ひらがな以外の文字が使われてます。';
}
WinXP
PHP:5.2.6
Apache:2.2
MySQL:5.1
文字コードはUTF-8で保存してます。
0515512
2010/01/29(金) 22:19:29ID:56kcplo8ありがとうございます だめでした
極限まで短くしても
<?
header("Content-type: text/html; charset=UTF-8");
?>
<HTML>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>ねこ</title>
<BODY>
いぬ
</BODY>
</HTML>
いぬとねこが??になってしまいました
0518nobodyさん
2010/01/29(金) 22:31:37ID:???>>1
正規表現の書き方がまずいのでは?
あまり使ったことがないので詳しくはわからんが
preg_match('/[^一-龠ァ-ヶーぁ-ん$]{1,8}/uD', $text_data)
こんな感じだと思う。
0519nobodyさん
2010/01/29(金) 22:37:51ID:cGTMydf+2)ファイルの行を行番号を書いてボタンで削除
はどうすればいいですか?宜しくお願い致します。
2)について
$csv_file = file("test.csv");
print "<input name=\"sakujo\" type=\"text\" size=\"3\" maxlength=\"3\">番を<input type=\"submit\" value=\"削除\" />";
$sakujo = $_POST['sakujo'];
unset($csv_file[$sakujo]);
$fp = fopen("test.csv", "w");
foreach ($csv_file as $line) {
fwrite($fp, $line);
}
とすると、1行目を削除するのが0番を削除と指定することになります。
$sakujo = ++$_POST['sakujo'];
また
$sakujo = ++$sakujo;
などに指定すると、ファイル読み込みと同時に勝手に2行目を削除します。
0521nobodyさん
2010/01/29(金) 22:42:48ID:???POSTしてない状態では$_POST['sakujo']はnullだからunsetされてないだけでしょう
ちゃんと$_POSTで表示処理と削除処理を分けて、番号を1増やせばいいかと
0522nobodyさん
2010/01/29(金) 23:17:40ID:???回答ありがとうございます。
$sakujo = $_POST['sakujo']; のあとに
$sakujo = ++$sakujo;(若しくは$sakujo++,$sakujo+1等)
としても、2行目が勝手に削除されてしまいます。
0523nobodyさん
2010/01/29(金) 23:21:11ID:cGTMydf+$_POST['sakujo'] = ++$_POST['sakujo'];
$sakujo = $_POST['sakujo'];
も試しましたが、これも自動的に削除されます。
宜しくお願いします。
0524514
2010/01/29(金) 23:22:33ID:JATQlPdVありがとうございました。解決しました。
>>520
書き方を指摘して貰えて助かりました。
それをヒントに解決できました。ありがとうございました。
0526nobodyさん
2010/01/30(土) 05:42:04ID:obVWCfxQ<?php
class Test{
function hoge(){
return 'test';
}
}
?>
というファイルがあったときに、test.phpにアクセスできないようにしてもいいのですが、
あえて何もせずtest.phpにアクセスされた場合について質問です。
(ただし、test.phpのソースをローカルにダウンロードすることはできない)
例えば、http://〜〜/test.phpな感じでブラウザからアクセスがあった場合、
これだけではインスタンスも生成していないし何も表示されることはないので、
特に危険はないかなと思ったのですが自分なりに考えたところ、
少なくともそのファイルの存在がわかってしまうし、
ファイル名がサイト独特のものだと他にも似たようなファイルがあるなと予測されてしまうし、
くらいを思いつきました。他に何か危険は潜んでいませんでしょうかよろしくおねがいします。
0527nobodyさん
2010/01/30(土) 06:11:52ID:qAKPfLy/ありがとうございます。表示処理 削除処理 PHPでぐぐっても出てきません。
初心者ですいません。
0529nobodyさん
2010/01/30(土) 06:13:29ID:???フレームワーク使いたくなってしまうよな
0530nobodyさん
2010/01/30(土) 07:30:56ID:???ただフォームを表示するだけのページと実際に削除を行うページをif文で分けるって事だと思う。
$sakujo = $_POST['sakujo'];
if(ereg("^[0-9]{1,3}$", $sakujo)){
//実際に削除を行う
}else{
//削除フォームを表示する
}
0531nobodyさん
2010/01/30(土) 07:35:16ID:???呼び出し元にフラグ立てて、test.phpで条件分岐させるってのはどうだい?
if(isset(フラグ)){
処理する
}else{
header(HTTP 404);
}
0532nobodyさん
2010/01/30(土) 09:03:20ID:qAKPfLy/回答ありがとうございます。そのままコピペしてみたところ
フォーム部分が消えてしまいました。
http://uploader.sakura.ne.jp/src/up3233.jpg
http://uploader.sakura.ne.jp/src/up3234.jpg
[0-9]{1,3}$を$csv_fileに変えてみたんですが、消えないようです。
0533nobodyさん
2010/01/30(土) 12:17:31ID:???issetとかでいいじゃんw
0534nobodyさん
2010/01/30(土) 13:34:51ID:???$csv_file = file("test.csv");
print "<input name=\"sakujo\" type=\"text\" size=\"3\" maxlength=\"3\">番を<input type=\"submit\" value=\"削除\" />";
if (isset($_POST['sakujo'])) {
if (!is_numeric($_POST['sakujo'])) {
echo "数字ぢゃないがな( ゚Д゚)ヴォケ!!";
} else {
$sakujo = $_POST['sakujo']++;
if (isset($csv_file[$sakujo])) {
unset($csv_file[$sakujo]);
$fp = fopen("test.csv", "w");
foreach ($csv_file as $line) {
fwrite($fp, $line);
}
} else {
echo "行が無いぞ(#゚Д゚)ゴルァ!!";
}
}
}
0535nobodyさん
2010/01/30(土) 13:37:08ID:???それとファイルの「1行目」を削除する場合に"1"を入力する場合は
fileで読んだ配列の[0]が該当行なので
$sakujo = $_POST['sakujo']--; デクリね
0536nobodyさん
2010/01/30(土) 13:51:46ID:???0537nobodyさん
2010/01/30(土) 14:45:07ID:yMr7jIEh【連携ソフトウェア】mysql
【質問内容】 データベースからレコードをプルダウンで取り出したい
<form method="post" action="test.php">
<table>
<tr><td>地域</td><td>
<input type="text" name="pref" value="<?php print(htmlspecialchars($_POST['pref'])); ?>" /></td></tr>
<tr><td>性別</td><td><input type="text" name="sex" value="<?php print(htmlspecialchars($_POST['sex'])); ?>"/></td></tr>
</table><input type="submit" value="検索" /></form>
<?php
中略
// プリペアド・ステートメントの準備
$sql = 'select * from address where pref = ? and sex = ?';
$type = array('text', 'text');
$sth = $mdb2->prepare($sql, $type);
// プリペアド・ステートメントの実行
$data = array($_POST['pref'], $_POST['sex']);
$res = $sth->execute($data);
if (PEAR::isError($res)) { exit('selectに失敗しました');}
0538nobodyさん
2010/01/30(土) 14:45:51ID:yMr7jIEhprint("<table border=\"1\">\n");
print("<tr>");
print("<th>ニックネーム</th><th>地域</th><th>コメント</th><th>詳細</th>");
print("</tr>");
while ($data = $res->fetchRow()) {
print("<tr>\n");
print("<td>" . $data['name'] . "</td>");
print("<td>" . $data['pref'] . "</td>");
print("<td>" . $data['comment'] . "</td>");
print("<td>" . $data['mypage'] . "</td>");
print("</tr>\n");}
print("</table>\n");
?>
現在このようにテキストボックスに文字を入力して該当すれば出力
させるようにしているのですが、これをプルダウンで選択して、該当すれば
出力という用に変更したく試行錯誤しているのですが・・・
全く動かせる気配がありません。どなたか力を貸してください、よろしくお願いします。
0539nobodyさん
2010/01/30(土) 14:53:20ID:???<select name="sex">
<option value="1">男</option>
<option value="2">女</option>
</select>
でいいかと
0540nobodyさん
2010/01/30(土) 16:28:25ID:yMr7jIEhありがとうございます
でもそれだとプルダウンにはなっても検索が出来ない状態です
0541nobodyさん
2010/01/30(土) 16:32:41ID:???0543nobodyさん
2010/01/30(土) 20:39:54ID:qAKPfLy/(´;ω;`)やっとできました。
if (isset($csv_file[--$sakujo]))
にしたら動きました。ありがとうございます。
0544nobodyさん
2010/01/30(土) 21:56:00ID:???最近ガンブラーっての多いから怖いなー
しばらく辞めとくね
0545nobodyさん
2010/01/31(日) 00:03:50ID:A4bjb08C}
でページ分けしながらサイトを作成しているのですがあまり書きすぎると容量が多くなってしまうじゃないですか。
そこで考えたのですが文字だけならテキストファイルにぶち込んで外部呼び出しすれば少しはマシになるかななんて
思ったのですが何か良い方法があれば教えて下さい。
■ このスレッドは過去ログ倉庫に格納されています