くだすれPHP(超初心者用)3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/25(木) 16:04:31ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
---前スレのテンプレここまで---
前スレ: くだすれPHP(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1164617202/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1187729623/
完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0409nobodyさん
2008/02/18(月) 22:25:40ID:???パスワードが通っていない感じのエラーが出ていました
ただ、パスワードは合っていて
コンソールで mysql -u user -pでログインが出来ている状態です
/etc/hosts にもデータベース名は記述してあり(localhost)
なんで通らないのかわからなくなっています
今まで使っていたときは大丈夫で
突然この状態になってしまいました。
どなたかお願いします…
0410nobodyさん
2008/02/19(火) 02:56:13ID:???0411nobodyさん
2008/02/19(火) 10:06:45ID:???PHPには、.NET Framework の ADO.NET のように、自作した csv ファイルに SQL 文で
データを抽出することは可能なのでしょうか。
以下のサイトのような感じで動かす場合です。
ttp://park5.wakwak.com/~weblab/selectTextFile.html
一般的なテキストファイルを開いたり、書き込んだりする方法とは別という意味です。
こういった方法以外でという意味です。
$fh = fopen("csv.txt", "r");
$line = fgets($fh, 1024);
// ここで$lineの条件を調べる。
fclose($fh);
ヒントとなるキーワードでもいいので、お願いします。
0412nobodyさん
2008/02/19(火) 10:26:38ID:???0413nobodyさん
2008/02/19(火) 12:43:40ID:???よく情報が足りないといわれるのですが
どこら辺が足りないですか
>>407でバージョンやOSも書いてますが
エラーはサーバーから離れていたので書けなかったですが
後学のためにもお願いします
0416nobodyさん
2008/02/19(火) 19:38:04ID:???http://kissho.xii.jp/1/src/1jyou27419.txt.html
0417nobodyさん
2008/02/19(火) 20:44:23ID:???よくわからんが、こんなコードがある時点でろくなもんじゃない
if(file_exists("B:\\")){
echo "<center><a href='./$this_file?dir=B:\\'>B:\\</a></center>";
} else {}
if(file_exists("C:\\")){
echo "<center><a href='./$this_file?dir=C:\\'>C:\\</a></center>";
} else {}
if (file_exists("D:\\")){
echo "<center><a href='./$this_file?dir=D:\\'>D:\\</a></center>";
} else {}
if (file_exists("E:\\")){
echo "<center><a href='./$this_file?dir=E:\\'>E:\\</a></center>";
} else {}
if (file_exists("F:\\")){
echo "<center><a href='./$this_file?dir=F:\\'>F:\\</a></center>";
} else {}
if (file_exists("G:\\")){
echo "<center><a href='./$this_file?dir=G:\\'>G:\\</a></center>";
} else {}
if (file_exists("H:\\")){
echo "<center><a href='./$this_file?dir=H:\\'>H:\\</a></center>";
} else {}
0418nobodyさん
2008/02/21(木) 03:11:11ID:???Windowsの拡張漢字(IBM拡張やNEC拡張)や、外字領域も
きっちり対応してくれるような、関数とかないんでしょうか?
0419nobodyさん
2008/02/21(木) 03:39:48ID:???0420nobodyさん
2008/02/21(木) 04:46:45ID:uBvv/k1HXAMPPをインストール後に以下の手順でエラーがでてしまうのですが、何が原因なのでしょうか???
1. Terminal shellに行って、システム管理者ルートでログインします。
sudo su
2. XAMPPをスタートするには、このコマンドをコールしてください:
/Applications/xampp/xamppfiles/mampp start
ここで、このような感じのエラーメッセージがでていまいます。
(No such file or directory, errno = 2)
XAMPP: Error 133! Couln't start ProFTPD!
ちなみにこの段階でXAMPP Control Panelを起動しようとすると「このシステムとは互換性がないためアプリケーションを起動できません」とメッセージが出てしまいます。
OSはMacOSX.2.8で、インストールしたのがXAMPP Mac OS X 0.7.2です。PHP使用以前の問題で恐縮ですがとても困っていますのでどなたかよろしくおねがいします。
0421nobodyさん
2008/02/21(木) 08:00:49ID:???0422420
2008/02/21(木) 15:40:03ID:uBvv/k1Hありがとうございました。。。
0423nobodyさん
2008/02/21(木) 20:36:09ID:???0424nobodyさん
2008/02/21(木) 21:13:13ID:???0425nobodyさん
2008/02/21(木) 22:15:59ID:FbPK8kbcなぜか本文とか件名が化けてしまいます。
文字化け
「あ」→「$B$"(B」
このサイトを参考にしてます。
http://www.phppro.jp/phptips/archives/vol35/1
改行コードが「LFのみ」にしてるからかな?と思うのですが、わかりません。
ご教授お願いします。
0426nobodyさん
2008/02/21(木) 22:17:02ID:???0428nobodyさん
2008/02/21(木) 22:29:31ID:FbPK8kbcsjis,EUC,utf-8に変更したんですが、何も変わりません。。。
0429nobodyさん
2008/02/21(木) 22:37:31ID:???0430nobodyさん
2008/02/21(木) 22:40:10ID:???0431nobodyさん
2008/02/21(木) 22:56:44ID:FbPK8kbcとりあえず33行目から変更してみたんですが、今度はなにも表示されなくなってしまいました。
33 switch(strtolower($structure->ctype_primary)){
34 case "text": // シングルパート(テキストのみ)
35 $diary_body = $structure->body;
36 $diary_body = mb_decode_mimeheader( $diary_body , 'ISO-2022-JP');
あと言い忘れたんですけど、スクリプトはSJIS、DBもSJISでやってます。
0432nobodyさん
2008/02/21(木) 23:00:32ID:???header見て文字コードが何か確かめてSJISに変換しなされ
0433nobodyさん
2008/02/21(木) 23:10:41ID:???0434nobodyさん
2008/02/21(木) 23:14:40ID:FbPK8kbcすみません!!
あと>>432さんの書き込みの意味がわかないんですが、具体的にはどうすればいいんでしょうか?
0435nobodyさん
2008/02/21(木) 23:57:05ID:FbPK8kbcご迷惑欠けて申し訳ありませんでした。
0437nobodyさん
2008/02/26(火) 22:29:16ID:8JcMjBPY$str = $i;
}
こうすると$strには0〜99999999が入りますが、a〜zzzzzzzzまでを$strに入れるにはどう書けばよいのでしょうか?
0438nobodyさん
2008/02/26(火) 23:24:57ID:???aを0、bを1、cを2・・・て対応させればとりあえず入るな。
0439nobodyさん
2008/02/27(水) 00:33:52ID:???$str[] = $i;
}
0441nobodyさん
2008/02/27(水) 04:36:01ID:???0442nobodyさん
2008/02/27(水) 13:31:31ID:???ネタかと思ってやってみたら本当に動きました
文字列をプラスするとこういうことになるんですね
ありがとうございました
0443nobodyさん
2008/02/27(水) 17:43:11ID:???「form.html内のinputタグで送信した値をpost.php内の<?= $_post["abc"] ?>で表示させる。」
ですが、
↓
「phpファイルではなく、htmlファイル内で表示させる」
にはどうすればいいのでしょうか?
1回の入力で、複数ページ共通ヘッダの「更新日」が変更できたらいいな、と考えております。
きっと超基本的な事柄なのでしょうけれど、ネット上でもなかなか見つからないので...。
よろしくお願いします。
0444nobodyさん
2008/02/27(水) 19:05:32ID:???0445nobodyさん
2008/02/27(水) 19:12:22ID:???なるほど、設定が必要なんですね。
助かりました。
ありがとうございます。
0448nobodyさん
2008/02/28(木) 00:23:44ID:???以下のPHPを作ったところ、画面が真っ白になりました。
真っ白=エラー無しと思い、tablenameを確認したところデータが入っていませんでした。
>>407と同じエラーかと思い、>>408を確認したところONになっていました。
自分では原因がわからないため、どなたかご指摘願えないでしょうか。
<作っているつもりのもの>
別ページのフォームから送信(reg)されたデータを、データベースに入れるPHP。
環境…SQL=PostgreSQL OS=Linux PHP=5.2.5
確認…FireFox
$con = pg_connect('dbname host user password');
$a = $_POST["a"];$b =$_POST["b"];$c = $_POST["c"];
if(isset($_POST["reg"])){
$sql = "select max(log) from tablename";
$result = pg_query($con,$sql);
$array = pg_fetch_array($result);
$new_log_no = $array[0] + 1;
$sql = "select current_timestamp";
$result_date = pg_query($con,$sql);
$in_date = pg_fetch_array($result_date);
if(isset($_POST["b"])){ $d = $b; } else { $d = $c; }
$sql = "insert into tablename (log,a,d,_in_date)
values('$new_log_no','$a','$d','$in_date')";}
else{ header("Location: menu.php"); }
if(!$result){ echo "送信に失敗しました";}
0449nobodyさん
2008/02/28(木) 00:40:01ID:???あとプログラムのどこまで実行したら真っ白になるか切り分けてみたら?
0450nobodyさん
2008/02/28(木) 01:14:23ID:???レスありがとうございます。
AccessLogはこうなっていました。
127.0.0.1 - username [28/Feb/2008:00:59:35 +0900] "GET /test/in.php HTTP/1.1" 200 555
127.0.0.1 - username [28/Feb/2008:00:59:41 +0900] "POST /test/in_date.php HTTP/1.1" 200 5
in.phpがフォーム、in_dateが問題のPHPです。
よくわからないですが、データベースに問い合わせていない?気がするので調べてみます。
0451nobodyさん
2008/02/28(木) 01:43:16ID:???httpd.conf とか確認してみたら?
0452448
2008/02/28(木) 02:15:26ID:???httpd.confは本を参考に次のように設定追加してます。
AddType application/x-httpd-php .php
0453nobodyさん
2008/02/28(木) 02:48:59ID:???0454nobodyさん
2008/02/28(木) 14:23:55ID:???0455448
2008/02/28(木) 19:24:05ID:???$sql = "insert into tablename (log,a,d,_in_date)
values('$new_log_no','$a','$d','$in_date')";}
の部分のSQLに対し
pg_query($con,$sql);
を設定するとテーブルにデータを追加することが出来ました。
しかし作成されたデータは中身が空でしたorz
insertが動いてるのでPHPとデータベースの連携は取れてると思います。
>>454
Loaded Modulesを調べた所次の通りの結果でした。
mod_php5, mod_setenvif, mod_so, mod_auth, mod_access,
mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis,
mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status,
Momod_negotiation, mod_mime, mod_log_config, mod_env, http_core
0457nobodyさん
2008/02/29(金) 10:18:45ID:???白紙のときにブラウザの機能でソース見るとどうなってるとか
いろいろやってんのかな
0458nobodyさん
2008/03/05(水) 16:03:25ID:???言っていたものですがa+モードとファイルロックのタイミングで
何とか実現できました。
その後に続くwモードのファイルーオープンで
ログ数を調整しようと思ったのですが
この処理を付けるとログが全部消えてしまいます。
何か間違えていますか?
0459458の続き
2008/03/05(水) 16:05:57ID:???$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
$yojyou = $delcountlines - 2;
$delhandle = fopen($filename, "w");
$delnewlog = "";
flock($delhandle,LOCK_EX);
for ($i = $delcountlines; $i <= $yojyou; $i--) {
array_unshift($delnewlog, $dellines[$i]);
}
fwrite($delhandle,$delnewlog);
flock($delhandle,LOCK_UN);
fclose($delhandle);
0460458の改正
2008/03/05(水) 16:41:48ID:???ログ二行以上ならログの先頭から余剰分消していくと言う感じで
//指定行数以上のログの削除
$delfilename = ('card-walin.txt');
$dellines = file($delfilename);
$delcountlines = count($dellines);
if ($delcountlines > 2) {
$yojyou = $delcountlines - 2;
} else {
$yojyou = 0;
}
$delhandle = fopen($delfilename, "w");
flock($delhandle,LOCK_EX);
$delnewlog = "";
for ($i = $delcountlines; $i <= $yojyou; $i--) {
fwrite($delnewlog, $dellines[$i]);
}
flock($delhandle,LOCK_UN);
fclose($delhandle);
0461nobodyさん
2008/03/05(水) 16:42:58ID:bSWg3SQNこの書き方だとファイル名test.phpを他の名前にするたびに$this_script_nameを書換えないといけません
ファイル名を書換えてもソースを変えずにフルパスを取得する書き方を教えてください
$this_script_name = 'test.php';
$full_path = ereg_replace($this_script_name ,'' ,$_SERVER['SCRIPT_FILENAME']);
0462nobodyさん
2008/03/05(水) 16:58:07ID:OQixiW/qググってみると”必要ファイルをコピーして ini_set や .htaccess を使えば良い”
との事ですが、どこまでが必要ファイルなのか良く分かりませんでした
(ローカルにインストールしたPEARディレクトリ丸ごとホームディレクトリにコピーなのか
installコマンドでダウンロードしたファイルだけコピーなのか)
質問は最初の一行の通りなのですがPEARを使うにはどのファイルが必要なのでしょうか?
0464nobodyさん
2008/03/05(水) 17:16:55ID:bSWg3SQNおおお できました
これだけで出来るとわ・・・
ありがとうございました
0465nobodyさん
2008/03/08(土) 00:22:24ID:???場合によっては重複しませんか?
if ($_POST['delete']) {
for ($i = 0; $i < count($lines); $i++) {
$items = explode("\t", $lines[$i]);
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
array_splice($lines, $i, 1);
}
}
}
0466nobodyさん
2008/03/08(土) 07:01:18ID:???if (isset($_POST['delete']) && $_POST['delete']) {
foreach ($lines as $key => $value) {
$items = explode("\t", $value);
if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
unset($lines[$key]);
}
}
}
書き込みの部分を見ないとなんとも言えない
0467466
2008/03/08(土) 11:35:25ID:???$deletionlogname = ('card-walin.txt');
$deletionloglines = file($deletionlogname);
$deletioncountloglines = count($deletionloglines);
$deletionlognumbers = $deletioncountloglines - 1;
$deletionfopen = fopen($deletionlogname, "w");
flock($deletionfopen,LOCK_EX);
for($i=0; $i<$deletionlognumbers; $i++){
$deletionlogitems = explode("\t", $deletionloglines[$i]);
if($deletionlogitems[0]==$_POST['deletionradio'] && $deletionlogitems[3]==$_POST['deletionkey'] || $deletionlogitems[0]==$_POST['deletionradio'] && 'masterpass'==$_POST['deletionkey']){
continue;
}else{
fwrite($deletionfopen,$deletionloglines[$i]);
}
}
flock($deletionfopen,LOCK_UN);
fclose($deletionfopen);
}
0468nobodyさん
2008/03/08(土) 11:41:55ID:???何これ
0469465
2008/03/08(土) 11:42:09ID:???んでこれは記事の固有IDとパスが一致した行を削除と言う流れで
書いてるんですがどうも訳わからん記事まで削除されてしまいます。
>>465の質問とあわせてアドバイス頂けないでしょうか?
0471nobodyさん
2008/03/08(土) 11:44:26ID:???0472465
2008/03/08(土) 11:44:56ID:???ログの並びはこんな感じです。
0473465
2008/03/08(土) 11:46:30ID:???POST['deletionradio']が記事の固有IDになります、
説明不足ですいません。
0474nobodyさん
2008/03/08(土) 11:51:30ID:???0475465
2008/03/08(土) 11:56:53ID:???その部分もしログが0だった場合とか書いてませんね、迂闊でした。
ログの記事数のカウントが0から始まるのでそうやってみたのですが・・・・・
0476nobodyさん
2008/03/08(土) 12:01:17ID:???0477465
2008/03/08(土) 12:06:56ID:???例えば記事が3つあって、3つめの記事で固有ID3の記事を削除したら
1つめの記事も同時に消えたりします。
0478nobodyさん
2008/03/08(土) 12:08:50ID:???0479465
2008/03/08(土) 12:17:38ID:???今試したら記事3つのログで2つめの記事消したら
3の記事も同時に消えました。
つかその後、削除ボタン押したら全部消えたw
どうも記事固有IDとパスワード一致しなかった場合書き換えしないと言う
処理が抜けてたようです。
ただこれを直しても記事の同時消えが直る気がしない・・・・
ロジック的には大体上にあげたプログラムである程度あってるのでしょうかね。
0480nobodyさん
2008/03/08(土) 12:26:00ID:???フラグ変更することをお薦めする。
0483nobodyさん
2008/03/08(土) 14:14:06ID:???0485nobodyさん
2008/03/08(土) 14:46:24ID:???||と&&の使い方を覚えよう
466でも書いたけど(最初のifで要らん部分あるけどw)
ループ中にある
if ($items[0] == $_POST['delradio'] && $items[4] == $_POST['delkey2'] || $items[0] == $_POST['delradio'] && 'masterpass' == $_POST['delkey2']) {
これは変です(処理的には通るけど)
if ($items[0] == $_POST['delradio'] && ($items[4] == $_POST['delkey2'] || 'masterpass' == $_POST['delkey2'])) {
やりたい事は多分これ
んで、POST内容は意図したものがきてるの?
0487465
2008/03/08(土) 16:30:22ID:???$items[4]がパス格納部じゃなくて$items[3]でした・・・・・・・・
今から皆さんにご指摘頂いた部分の修正に入ります、
本当にすいませんでした。
0489465
2008/03/08(土) 16:38:20ID:???0490nobodyさん
2008/03/08(土) 17:05:38ID:???http://2ch.pne.jp/img/jpg/w_h/img_cache_d_180941_1_1204957189_jpg.jpg
【ユビキタス銀河】 詐欺師プログラマー 武田洋幸
http://pc11.2ch.net/test/read.cgi/antispam/1204457908/l50
0491nobodyさん
2008/03/08(土) 17:42:02ID:???もう一度書き込まれてしまうのですがこれを防止するのは2重書き込み防止処理だけでいいのでしょうか?
これだとたまに別の人が書き込んだ後に更新押した場合
書き込まれちゃいますよね。
皆さん過去ログの内容走査処理したりしてるのでしょうか?
0493nobodyさん
2008/03/08(土) 18:01:26ID:???0494nobodyさん
2008/03/08(土) 18:26:21ID:???b.php←post先
c.php←投稿完了しました表示
b.phpで投稿完了したら
header('Location : http://example.com/c.php');
これでa.htmlまで戻るとかで戻らない限り2重投稿はある程度防げる
0495nobodyさん
2008/03/08(土) 18:29:46ID:???html作成せずにphp1つだけで全部やろうとしてもややこしそうですね・・・・・
0498nobodyさん
2008/03/08(土) 23:16:31ID:???なんかリファレンス読んでも見つからないのですが。
0499nobodyさん
2008/03/09(日) 01:35:03ID:BZEq18rGその際にをtarget.phpへ送るリファラを http://example.com とするにはどうしたらいいのでしょうか。
過去ログを探して、
ヘッダに ""Referer: http://example.com\r\n" を追加すればいいと書いてあったのですが、
どのように追加したらいいのかがわかりません
location みたいな書き方が思い浮かんだのでやってみましたができませんでした。
正しいやり方を教えてください。お願いします。
-------------------------------------
【get.php】
<?php
header("Referer: http://example.com\r\n");
?>
<iframe src="target.php">
</iframe>
-------------------------------
【target.php】
<?php
echo $_SERVER["HTTP_REFERER"];
?>
-------------------------------
get.phpの実行結果
http://****.jp/get.php
0500nobodyさん
2008/03/09(日) 02:10:54ID:???【get.php】
<?php
echo '<iframe src="target.php?referer='.$_SERVER["HTTP_REFERER"].'"></iframe>';
?>
【target.php】
<?php
echo $_GET["referer"];
?>
0501nobodyさん
2008/03/09(日) 02:31:20ID:BZEq18rGせっかく答えていただいたのに恐縮ですが、
それはget.phpで取得したリファラをtarget.phpへgetメソッドで渡す方法ですよね
私が知りたいのは、
get.phpでtarget.phpを開くけれども、
target.phpで取得されるリファラはget.phpではなく、http://example.com にしたいということなのです
印象の良くない言葉なので使いたくはなかったのですが、つまり、リファラ偽装ということです
書き方悪くてすいません
0502nobodyさん
2008/03/09(日) 02:41:06ID:???http://example.com
これは固定値かそれともget.phpで取得できる値かどっち?
get.phpで取得するリファラの値なら方法は無いよ?
get,php内でgetのリクエストをtarget.phpに宛てに投げて
その時のヘッダにリファラ偽装して渡すとかなら可能だけど
0503nobodyさん
2008/03/09(日) 03:08:23ID:BZEq18rG説明不足で本当にすいません
固定値です
0504nobodyさん
2008/03/09(日) 04:55:14ID:???ファイルに対してアクセスあった場合
強制的に.htaccessとかでSetEnvとかかなぁ・・・
もしiframeのが別のサイトなら
getのリクエスト投げた方が早い
0505nobodyさん
2008/03/09(日) 05:16:16ID:???0はNULLやfalseと判定されますか?
その変数を変数-1としても-1とはならない?
0506nobodyさん
2008/03/09(日) 05:24:57ID:???変数=0
変数=変数−1としたら変数の中身は−1になる。
0507nobodyさん
2008/03/09(日) 05:29:10ID:???0508nobodyさん
2008/03/09(日) 05:31:25ID:???■ このスレッドは過去ログ倉庫に格納されています