くだすれPHP(超初心者用)2
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/27(月) 17:46:42ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
0331nobodyさん
2007/04/15(日) 04:14:58ID:???世知辛い世の中だ
「ありがとう」と「ごちそうさま」が言えないなんてろくな大人にならねぇ
0332nobodyさん
2007/04/15(日) 08:15:02ID:y1bDpLfE私はWebサイトでフレームを使うのが嫌なので、includeでmenu.phpの外部読み込みをしています。
include命令を書いているファイルはa/index.phpです。
a/menu.phpの内容
<A HREF="a.php"></A><BR>
<A HREF="b.php"></A><BR>
しかし、階層が違うとファイルのパスを変えなくてはなりません。
例えば1つ下の階層だと、
a/b/index.phpに読み込むa/b/menu.phpの内容
<A HREF="../a.php"></A><BR>
<A HREF="../b.php"></A><BR>
にしなければなりません。
どの階層でもa/menu.phpファイルを呼び出すだけなら、
$_SERVER['DOCUMENT_ROOT'] を使う方法で大丈夫だと思うのですが、
(参考:ttp://minic.press.ne.jp/blogs/web/000046.html)
a/b/index.phpから上記の方法でa/menu.phpファイルを読み込むと、リンク先は
a/b/a.phpとa/b/b.phpになってしまいますよね。
どの階層から読み込んでも、ちゃんとa/a.phpやa/b.phpにリンクさせる方法なんてあるのでしょうか。
0333nobodyさん
2007/04/15(日) 08:26:42ID:???include パスの指定の仕方を聞きたいのか <a href 要素・属性の相対パスの
指定の仕方を聞きたいのかどっちなんだ。
0334nobodyさん
2007/04/15(日) 10:35:06ID:???<a href="http://a.php">a</a>
のようにhttpから書く
0336317
2007/04/15(日) 12:34:45ID:???そのまま逃げてたんではなくて
SessionとAuthenticationの理解が足りないと思って
もう一度やりなおししてたんで
サンプルにはあくまでも出力後のHTMLしか出ないので
仕組みをまともに予想できてないから
意味不明な質問になるんじゃないかと思って
>>328
adminとuserの2人しかアカウントが無い場合、
if($PHP_AUTH_USER=="admin")&&($PHP_AUTH_PW=="pass"))
{header("Location:admin_menu.php");}....
if($PHP_AUTH_USER=="user")&&($PHP_AUTH_PW=="word"))
{header("Location:user_menu.php");}
これでいけると思ったんですが、adminがユーザーを増やした場合、
このままだと新規のユーザーは認証ができないと思うんです
属性というか、adminはlv1、userはlv2という風にされてるので
ループできるか試してみます
>>329
管理者はユーザーの数を任意に設定できるので
ユーザーが1人のときもあれば5人のときもあって10人のときもあるので
上記のコードじゃ限界があるなと思ったんです
説明がわかりにくくてすみません
>>330
聞き逃げしたつもりはなかったんですが
とりあえず自分で最初からやり直して
最低限何をしたかったのかを説明できるように
しようと思ってたら結果的に逃げた形になりました
申し訳ないです
0337nobodyさん
2007/04/15(日) 12:42:41ID:???とすれば、とりあえず、つねにincludeしたいmenu.phpに
(menu.phpがa.phpなりなんなりより同一階層ないしはそれより上の階層にあるのが前提みたいだから)
function relative_url(){
if ($relative = substr_count($_SERVER['SCRIPT_FILENAME'],'/') - substr_count(__FILE__,'/')){
return str_repeat ('../',$relative);
}
}
と書いておいて、a.phpなりなんなりは、それぞれ
echo '<a href="'.relative_url().'a.php">aaaaaaa</a>';
とか、しておけばよろしかろう。
勉強が進んだら、これも馬鹿くさい場当たりの手段で危険を伴うってこともわかってくる
ので一歩ずつがんばってください。
なお、レスで参照してるサイトの情報は初心者が見るものとしては、セキュリティ的に
不正確なので本当に参考程度にとどめておくこと。
0338nobodyさん
2007/04/15(日) 12:52:30ID:???if($PHP_AUTH_USER=="user")&&($PHP_AUTH_PW=="word"))
ひとまず user と word を変数にして、いくら増やしても問題無いロジックを考えなさい。
配列とforeachでなんとかなるはず。
っていうか基礎の勉強が必要じゃね、このレベルだと・・。
何か気に入った入門用書籍を一からやってみる事をオススメする。
0339nobodyさん
2007/04/15(日) 12:55:44ID:???if文で書いてるのでユーザが増えたら認証できなくなるってことですか。
なるほどわかりました。
でも気になるんだけどmember.txtはどこに使ってるの?
0340317
2007/04/15(日) 13:44:02ID:???$listf = fopen ("member.txt", "r");
list($duserid,$dpassword) = fgetcsv($listf, 1024, "|");
$duserid=trim($duserid);
$dpassword=trim($dpassword);
while (!feof ($listf))
{
if (($_POST[userid]==$duserid)&&($_POST[password]==$dpassword) )
{
$_SESSION[‘valid_user’]=$_POST[userid];
break;
}
list($duserid,$dpassword) = fgetcsv($listf, 1024, ":");
$duserid=trim($duserid);
$dpassword=trim($dpassword);
}
fclose($listf);
>>338
まだPHPはじめて1ヵ月半で、基礎が足りないのは身にしみてます
あまり頭がよくないのはもう十分わかってらっしゃると思うので
こういう演習で体に覚えさせないとなかなか身につかないので
本はちょっと手に入れるのが難しい環境だもんで、サイトのチュートリアル等を
コツコツやってみます。ありがとうございました
>>339
上記のコードだとさっきよりかは自分のしたいことがわかってもらえるかなと
書いてみたんですが、文章よりもわかりやすいことを祈ります
0341nobodyさん
2007/04/15(日) 13:56:18ID:???間違ってるのでこれじゃ動かんでしょ。一応、そのまま使うとすれば、
$listf = fopen ("member.txt", "r");
while (($IDPWD = fgetcsv($listf, 1024, "|")) !== FALSE)
{
list($duserid,$dpassword) = fgetcsv($listf, 1024, "|");
}
list($duserid,$dpassword) = fgetcsv($listf, 1024, "|");
$duserid=trim($duserid);
$dpassword=trim($dpassword);
while (!feof ($listf))
{
if (($_POST[userid]==$duserid)&&($_POST[password]==$dpassword) )
{
$_SESSION[‘valid_user’]=$_POST[userid];
break;
}
list($duserid,$dpassword) = fgetcsv($listf, 1024, ":");
$duserid=trim($duserid);
$dpassword=trim($dpassword);
}
fclose($listf);
0343341,342
2007/04/15(日) 14:00:30ID:???ってだけで書き直すと次のようになる。
$listf = fopen ("member.txt", "r");
while (($IDPWD = fgetcsv($listf, 1024, "|")) !== FALSE)
{
list($duserid,$dpassword) = $IDPWD;
$duserid = trim($duserid);
$dpassword = trim($dpassword);
if (($_POST['userid']==$duserid) && ($_POST['password']==$dpassword) )
{
$_SESSION[‘valid_user’]=$_POST['userid'];
break;
}
}
fclose($listf);
0344317
2007/04/15(日) 14:03:31ID:???確かに簡単にユーザーIDとパスワードだけのテキストをおいて
やってみたんですけど動かなかったです
パスワードをテキストファイルにおいてる段階でかなりありえないし
とりあえず動かして見て、自分でどの部分が間違ってどうするべきか
ってのをちょっと考えてみます
本当にありがとうございます
0345nobodyさん
2007/04/15(日) 14:08:33ID:???とりあえず句読点を付けてください。
それから関係ない情報は省いてください。
回答者にとって読みやすい、理解しやすい文章を書くという意識が抜けていると思います。
思ったことをそのまま書いていたら質問として最低の文章になります。
何がしたくて、何が問題で、何を聞きたいのか、を明確にしてください。
もしかして女性だったりしますか?
0346341,342
2007/04/15(日) 14:18:45ID:???ひとつ言っておくと、パスワードがファイル格納だから、
危険だなんて思うのがもっとも危険ですよ。
そんなこと言ったらUNIXの認証システムは全部危険になる。
PHPを生半可にかじって、次はDBとの連携だ、なんて考えるのは穴を増やす
のと同じ。ちゃんとしたパスワードファイルとハッシュを扱えて、またネットワーク経由
でのデータ漏れがないようにプログラムをちゃんと書くことがまず大切。
ユーザが大したことないなら、私はパスワード認証周りにDBを使いません。
上で書いた「危険」というのも、パスワードファイル云々ではなくて、
$_POST[userid]みたいな書き方を$_POST['userid']とちゃんと書くとか、
isset($_POST['userid'])を確かめたり$_POST['userid']がFALSEじゃないかとか
チェックするなど。
そういう部分を書き直す必要があるけど、それは端折れば、って意味です。
0347317
2007/04/15(日) 14:18:47ID:???すいません。ちゃんと付けるようにします。
質問する前に何が問題点で、何を知りたいのか、
というのをもっと考えるようにします。
今回、自分でもあやふやだったとわかりますし。
一応女です。
0348nobodyさん
2007/04/15(日) 14:38:57ID:???0349317
2007/04/15(日) 15:11:00ID:???大変参考になりました。
文法とかもチェックするようにします。
一応動いてくれたのでそれを自分の求める形にapplyさせてみます。
色々と本当にありがとうございました。
0351nobodyさん
2007/04/15(日) 15:25:41ID:Fa0l1a7N変わってログイオンできなくなりました。CURL専用掲示板とかはないですか?
0352nobodyさん
2007/04/15(日) 15:46:25ID:???PHPモジュールに組み込みしたCURL関数の質問ならすれ違いじゃない
0354nobodyさん
2007/04/15(日) 16:59:44ID:???特定の項目(エクセルでいう行)を一度に改変したいのですが
具体的に何かコマンドを打ち込んでやるのですか
それともどこかをクリックすれば可能なのですか?
0355nobodyさん
2007/04/15(日) 17:00:52ID:???全部0に書き換えたいのです。
0356nobodyさん
2007/04/15(日) 17:17:58ID:???その行の編集ページに飛ぶと思います。
0357nobodyさん
2007/04/15(日) 17:34:10ID:???0358nobodyさん
2007/04/15(日) 23:58:29ID:5HEOKy6khref内の数字を半角数字にする方法はないでしょうか。
$Res = mb_eregi_replace( "(>>|>>|>>)(\d{1,4}|[0-9]{1,4})", "<a href=\"#\\2"\" target=\"_blank\">\\1\\2</a>", $Res );
0359358
2007/04/16(月) 00:09:12ID:???$Res = mb_eregi_replace( "(>>|>>|>>)(\d{1,4}|[0-9]{1,4})", "<a href=\"#\\2"\" target=\"_blank\">\\1\\2</a>", $Res );
0360nobodyさん
2007/04/16(月) 00:17:21ID:???0362358
2007/04/16(月) 01:35:50ID:???リンクタグにはさまれた部分まで半角になってしまう方法しか思いつかなくて
$datRes = mb_eregi_replace( "(>>|>>|>>)(\d{1,4}|[0-9]{1,4})", "<a href=\"#" . mb_convert_kana( "\\2", 'n' ) . "\" target=\"_blank\">\\1\\2</a>", $datRes );
これだと、ちゃんと動かないし
0363nobodyさん
2007/04/16(月) 08:18:29ID:???0364nobodyさん
2007/04/16(月) 16:10:54ID:???0365nobodyさん
2007/04/16(月) 16:38:16ID:???wordpressのテーマファイルをいじっていて気になったのですが、
普通なら、{ }がくると思うのですが。
0366nobodyさん
2007/04/16(月) 17:52:39ID:???{}で制御するか:...endなんたら で制御するかは完全等価。
別に不思議でもなんでもない。
0367nobodyさん
2007/04/16(月) 20:25:20ID:KZll3+phどのようにすればいいのでしょうか?
着メロファイルは、自分で作るように考えています
0368nobodyさん
2007/04/16(月) 21:57:19ID:???0369nobodyさん
2007/04/16(月) 23:46:28ID:???0370nobodyさん
2007/04/17(火) 08:21:05ID:???「あなたの最近ご覧になった商品」みたいな感じで一覧がでますが、
あれってどういう仕組みでできているのでしょうか?
PHPサイトでした。
0373nobodyさん
2007/04/17(火) 09:53:14ID:???0374nobodyさん
2007/04/17(火) 10:11:15ID:???セッションIDとか管理とかまでは行き着いたのですが、
なかなか具体的に説明しているサイトに出会えません^^;
クリックされた商品を一覧としてだしたいのですが・・
0375nobodyさん
2007/04/17(火) 11:01:02ID:???0377nobodyさん
2007/04/19(木) 04:19:36ID:???0378nobodyさん
2007/04/19(木) 04:38:46ID:???0379nobodyさん
2007/04/19(木) 04:59:30ID:???0380nobodyさん
2007/04/19(木) 05:26:02ID:???例外飛んでrollBack()しても途中までの処理実行されてる。
0381nobodyさん
2007/04/20(金) 16:26:08ID:qxeO8g24MySQL4.1以上?テーブルタイプはInnoDBになってる?
0382一日駅長
2007/04/21(土) 14:14:19ID:hBjr2D0lいきなりですが、PHPで作りたいものがあるんですが、
WINDOWS XPを使ってるのでAPACHE(←スペル合ってる?)をダウンロードしよ
うと思ったのですが。APACHE MONITOR IS ALREADY STRATEDとエラーが、、
なんか上手くいかんのです。全てのプログラム→からクリックしてもなにも出来ない
し、ためしにXAMPPをダウンロードしたのが影響してるのかな?????
上のを削除しようとしてもXAMPPが既に起動してますと表示されます。起動してないつもりだけど(涙)
スレ違いならスマソ。初心者で用語とか全くチンプンカンプンなので分かり易く
説明キボン。
0383一日駅長
2007/04/21(土) 14:26:22ID:???アパッチ使うなら
これみてみ
つttp://pc11.2ch.net/test/read.cgi/php/1167984858/
0384nobodyさん
2007/04/21(土) 15:02:25ID:???Apache自体のインストールや起動や動作には全く無関係。
やり直したいならXAMPPのフォルダ消して再度インストールすべし。
0385一日駅長
2007/04/21(土) 17:51:55ID:hBjr2D0l拡張子を消してから削除してんですけど問題ないですよね?
0386nobodyさん
2007/04/21(土) 17:57:58ID:???0388nobodyさん
2007/04/27(金) 02:23:00ID:lDaJhRAcDBの接続は成功とでていますし、PHPinfo();もできるんですが。
なにが原因なんでしょうか?
調べたところ文字コードが関係していると思うのですが、
アドバイスをください。
よろしくお願い致します。
0389nobodyさん
2007/04/27(金) 04:36:15ID:???0390nobodyさん
2007/04/27(金) 08:20:44ID:???とりあえず、書いたプログラムと、いくつかの設定(文字コードが気になるなら文字コードの設定)を晒してみたら?
0392nobodyさん
2007/04/27(金) 14:52:09ID:SXL9ZI61「\」を[¥]に置換したいのですができません。
このように一応やってみたんですが…
$check = ereg_replace("\\", "¥", $check);
0394nobodyさん
2007/04/27(金) 15:38:43ID:SXL9ZI61できません…
\\ってのがいけないのかと思いつつも手が出せない状況です
0395nobodyさん
2007/04/27(金) 15:43:10ID:SXL9ZI61スイマセン、アップロードのし忘れでした。
ありがとうございます。
0396nobodyさん
2007/04/27(金) 18:43:54ID:???0397nobodyさん
2007/04/28(土) 09:28:36ID:MD2a4YGk予算なきゃ仕方ないだろ。
0398nobodyさん
2007/04/28(土) 09:43:38ID:???0399nobodyさん
2007/04/28(土) 10:05:40ID:???0400nobodyさん
2007/04/28(土) 11:31:12ID:???0401nobodyさん
2007/04/28(土) 12:43:09ID:???foreach($word as $henkan) {
$com = ereg_replace($henkan, "府", $com);
}
という感じで$comに$wordが記入された場合$henkanに変換されるよう処理したいのですが
不にスペースなどが加わると変換が上手く出来ません。
$wordに設定されている文字が含まれていれば全て$henkanに変換するようにするにはどうすれば良いでしょうか。
お知恵を。
0402nobodyさん
2007/04/28(土) 12:54:22ID:???http://jp.php.net/ereg_replace
まずここを読もう
0404nobodyさん
2007/04/28(土) 14:02:01ID:???0405nobodyさん
2007/04/28(土) 18:51:35ID:???$word = array('不','二','家');
foreach($word as $henkan) {
switch($henkan){
case '不':
$com = ereg_replace($henkan, "く", $com).'<br>';
break;
case '二':
$com = ereg_replace($henkan, "じ", $com).'<br>';;
break;
case '家':
$com = ereg_replace($henkan, "ら", $com).'<br>';
break;
default:
}
}
echo $com;
0406nobodyさん
2007/04/28(土) 22:26:07ID:???$word = array('不','二','家');
foreach($word as $henkan) {
$com = ereg_replace($henkan, "府", $com).'<br>';
}
echo $com;
0407nobodyさん
2007/04/30(月) 22:54:10ID:YPFQGcFE本とサイトを見て、
DBをEUCに
後PHPを
default_charset = EUC-JP
mbstring.http_output = EUC-JP
mbstring.internal_encoding = EUC-JP
mbstring.http_input = ASCII,JIS,EUC-JP,SJIS
mbstring.detect_order = ASCII,JIS,EUC-JP,SJIS
mbstring.substitute_character = none
か
default_charset = Shift_JIS
output_buffering = On
output_handler = mb_output_handler
mbstring.http_output = SJIS
mbstring.internal_encoding = EUC-JP
mbstring.http_input = ASCII,JIS,SJIS,EUC-JP
mbstring.detect_order = ASCII,JIS,SJIS,EUC-JP
mbstring.substitute_character = none
にあわせようと思うのですが、どうでしょうか?
0409nobodyさん
2007/04/30(月) 23:07:10ID:YPFQGcFE自己責任でやります。
教えてください。
0410nobodyさん
2007/04/30(月) 23:12:02ID:???0411nobodyさん
2007/05/01(火) 00:10:03ID:1OYzEHDwなんでそんな悪いことしました?
設定でどっちに設定したら表示されるかということなんですが。
0412nobodyさん
2007/05/01(火) 00:15:16ID:???0416nobodyさん
2007/05/01(火) 00:48:09ID:EEwZpxpSわらえるww
0417nobodyさん
2007/05/01(火) 01:02:50ID:???0418nobodyさん
2007/05/01(火) 01:05:35ID:1OYzEHDwそんなに笑える?
php.iniの設定を
http://www.hizlab.net/app/phppg.html
見てやったんですが.....
後データベース言語はEUC-JPです。
0419nobodyさん
2007/05/01(火) 01:09:00ID:???0420nobodyさん
2007/05/01(火) 01:20:00ID:1OYzEHDwマルチポストは確かにいけないです。
ごめんなさい。
迷惑かけてすいませんでした。
0421nobodyさん
2007/05/02(水) 07:43:54ID:M/75jEZIブラウザでtest.phpというのを開いて表示確認しようとしたら
"保存しますか?"ウィンドウが出てきて困ってるんだけど…
サーバーにアップしたファイルは普通に見れてるんでプログラムは
間違ってないんだけど、どうしたらええんやろ…
だれか助けて〜
0422nobodyさん
2007/05/02(水) 08:06:50ID:???これの意味が分からんのだが説明してくれ
0423nobodyさん
2007/05/02(水) 08:20:07ID:M/75jEZIでも、そのファイルを有料サーバーとかにアップしてブラウザで見るとちゃんと表示されるので
この違いをなんとかしたいなぁ…と。
よくわからないんですけど、アパッチとPHPをインストールすれば、ローカルでもPHPファイル
が見れるようになる…はず。
0424nobodyさん
2007/05/02(水) 09:00:11ID:M/75jEZIどうしたらええんやろか…
httpd.exe: Syntax error on line 115 of C:/Apache Group/conf/httpd.conf: Cannot Load C:\php/sapi/php4apache.dll into server:
0425nobodyさん
2007/05/02(水) 09:25:32ID:???0426nobodyさん
2007/05/02(水) 09:37:49ID:M/75jEZI0427nobodyさん
2007/05/02(水) 09:51:45ID:???君の知識ではまだWebサーバ構築は早いんでないかな。
とりあえずここでも読んでみるといいかも。
http://www.php.net/manual/ja/install.windows.php
0428nobodyさん
2007/05/02(水) 13:00:32ID:???Load C:\php/sapi/php4apache.dll into server
なんかパスの区切りに\と/が混在してるなあ。
0429nobodyさん
2007/05/02(水) 13:19:05ID:7CR3PRanなぜ、だれもおしえてやらないんだ??簡単な問題なのに。
Syntax error on line 115 of C:/Apache Group/conf/httpd.conf
とある。要するにApacheの設定ファイルhttpd.confの115行目がシンタックスエラー(Syntax error)
なんだ。
115行目付近で記述違いがある。
0430nobodyさん
2007/05/02(水) 15:52:30ID:???>>424==ID:M/75jEZI
>>426==ID:M/75jEZI
つまり
>>424=426
なんだぜ!
その上で426読んでみ?
■ このスレッドは過去ログ倉庫に格納されています