【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等)・フレームワークは各該当スレへ
0495492
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}
でページ分けしながらサイトを作成しているのですがあまり書きすぎると容量が多くなってしまうじゃないですか。
そこで考えたのですが文字だけならテキストファイルにぶち込んで外部呼び出しすれば少しはマシになるかななんて
思ったのですが何か良い方法があれば教えて下さい。
0546nobodyさん
2010/01/31(日) 00:10:58ID:???0547nobodyさん
2010/01/31(日) 00:12:40ID:A4bjb08C文字数の多いページはtest.txtに分けて呼び出せないかなと思いまして・・・。
0548nobodyさん
2010/01/31(日) 00:24:51ID:H20xeiLOif ($_POST['message'] && $_POST['name'] && $_POST['URLID']){
$message = $_POST['message'];
$name = $_POST['name'];
$message = "$name $message<br>\n";
//$cnt = count($lines);
$fp = @fopen($logfile , "w");
fputs ($fp, $message);
for($i = 0; $i < $logmax; $i++)
fputs($fp, $lines[$i]);
fclose ($fp);
echo $message;
}
for($i = 0; $i <= $max; $i++)
echo $lines[$i];
のとき、$lines[$i]の前に行番号を振るにはどうしたらいいでしょうか?
count関数を使ってみましたが、何も入っていない行として$max
の値まで出力してしまいます。
宜しくお願いしますm__m
0549nobodyさん
2010/01/31(日) 00:41:20ID:???いいと思うよ。何が分からんの?
>>548
よく分からんがecho $i . $lines[$i];ということ?
0550nobodyさん
2010/01/31(日) 00:59:21ID:A4bjb08Cいやその方法しかないのかーっと思いまして。
それとも300行ぐらいでもphpって重くなったりしませんかね?
0552nobodyさん
2010/01/31(日) 02:20:58ID:H20xeiLOecho $i . $lines[$i];やecho ++$cnt . $lines[$i];
で表示すると、$maxで指定した値まで表示されてしまいます。
0553nobodyさん
2010/01/31(日) 02:25:15ID:???$max に何が入ってるのかとかはわからないよ。
0554nobodyさん
2010/01/31(日) 03:13:53ID:???$i <= $max
になってるからじゃ?
$i < $max
にすればおk
0555nobodyさん
2010/01/31(日) 03:35:09ID:H20xeiLO説明不足でした。
ログの保存件数を指定しています。$max=200;です。
>>554
同じ動作になりました(´・ω・`)
0556nobodyさん
2010/01/31(日) 03:46:20ID:???なら$maxまで到達するわけないじゃん
0557nobodyさん
2010/01/31(日) 09:22:21ID:T8yUchyAよろしくお願いしますm(__)m
0558nobodyさん
2010/01/31(日) 12:31:37ID:???聞きたい部分に絞ろうよ ifの中、意味ないことしかしてないんだし。
if ($lines = file($logfile)){
for($i = 0; $i < count($lines); $i++)
echo $i+1,$lines[$i];
}
0560nobodyさん
2010/01/31(日) 22:15:48ID:wRz92uaA【PHPのバージョン】php5.3.1
【連携ソフトウェア】mysql
【質問内容】
コマンドプロンプトをまったく触らずに、MySqlを操作したい。
データベース「テーブル」を作れるPHP関数ってあるの?
速攻で回答願います。
0561nobodyさん
2010/01/31(日) 22:18:46ID:???0563nobodyさん
2010/02/01(月) 00:42:58ID:1FY3W001ログイン後のページを、そのユーザ個人に応じた内容を変えるには
どうすればいいでしょうか?
sessionを使って認証しています。
ID,PASSを入力して進みます。
宜しくおねがいします。
0564nobodyさん
2010/02/01(月) 00:58:31ID:???0565nobodyさん
2010/02/01(月) 00:58:50ID:???0567nobodyさん
2010/02/01(月) 01:51:12ID:6W20Cbxr ̄  ̄ . (;;)・(ェ)・`)
. ' ヽ ;;;、`;。;`ξ
/ //
/ //
,-( ヽ i /
/ メ、ヽ ヽ | /
/ ヽl | | /
/ // / ! ,
/∧_∧// /
/ ( ´Д/ /
/ γ / /
θ ヘ | / .;:*
) | , .;
/ |
/ ヘ | /
i / | | / / , ' _/ |l
/ / | | し',;;、'。.;;/ / ̄/
/ /. / | ;;ヾ#丶;;、;。;` ( / / 〃,
( / / l と と ) て ̄ /
し' /__) (_(_,J
0570nobodyさん
2010/02/01(月) 02:06:28ID:???0571nobodyさん
2010/02/01(月) 03:19:28ID:t1E2Bg3p<textarea></textarea>にて空欄でPOST受け取った場合、
htmlspecialchars(sqlite_escape_string($_POST[key]));
・Λ8Sというようなデータや、よくわからないバイトが入り込んで、ページに反映させるとレイアウトバグしてしまいます。どうしたら良いのでしょうか?
0572nobodyさん
2010/02/01(月) 03:20:33ID:???0573nobodyさん
2010/02/01(月) 03:31:43ID:t1E2Bg3p<textarea name="value"><?php echo $value[key];?></textarea>
↓
@database.php
$key = htmlspecialchars(sqlite_escape_string($_POST[key]));
データベース登録 sqlite
header("Location: page.php");
↓
@page.php
<textarea name="value"><?php echo $value[key];?></textarea>
ってな感じなんですが、、、基本的に間違ってますかね?
0574nobodyさん
2010/02/01(月) 03:37:23ID:1FY3W001宜しくお願いします。
ログインしたIDによって読み込むファイルを変えるということですか?
0575nobodyさん
2010/02/01(月) 03:42:42ID:t1E2Bg3p0576nobodyさん
2010/02/01(月) 04:14:38ID:???$key = sqlite_escape_string($_POST[key]);
<textarea name="value"><?php echo htmlspecialchars($value[key]);?></textarea>
0578nobodyさん
2010/02/01(月) 07:29:09ID:1FY3W0010579nobodyさん
2010/02/01(月) 08:47:03ID:qPPXPqzwが、でるってんて、対処法を聞いたら
<?
を
<?php
と、すると、治るよ! と言われ、実際、治りました。
<? と <?php は、全く同じと思っていたのですが、違うのですか?
普通に <? で書いてましたが...
0580nobodyさん
2010/02/01(月) 10:31:04ID:???0581nobodyさん
2010/02/01(月) 10:32:38ID:???0583nobodyさん
2010/02/01(月) 10:45:11ID:???0584560
2010/02/01(月) 11:25:08ID:czJgSBEV0585nobodyさん
2010/02/01(月) 11:48:31ID:45qXJ7z2<? 非推奨
0586nobodyさん
2010/02/01(月) 11:52:19ID:???0588nobodyさん
2010/02/01(月) 13:40:15ID:4LOdROLiif (($i == 10) or ($i == 20) or ($i == 30) or ($i == 40) or ($i == 50)){ echo "ぬるぽ";}
この式をもっとスマートに書くにはどうすればいいですか?
0589nobodyさん
2010/02/01(月) 13:41:48ID:???case 10:
case 20:
case 30:
case 40:
case 50:
echo "ぬるぽ";
}
0590nobodyさん
2010/02/01(月) 13:48:50ID:???0591nobodyさん
2010/02/01(月) 13:50:33ID:???0592nobodyさん
2010/02/01(月) 13:57:14ID:???if(in_array($i, array(10,20,30,40,50))) echo "ぬるぽ";
0593nobodyさん
2010/02/01(月) 13:58:16ID:???$value = array(10,20,30,40,50);
if (in_array($value, $i)) {
echo "ぬるぽ";
}
0595nobodyさん
2010/02/01(月) 14:10:22ID:???■ このスレッドは過去ログ倉庫に格納されています