トップページ⇒php
1001コメント299KB

くだすれPHP(超初心者用)4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/13(金) 20:32:36ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
05815772008/10/23(木) 10:49:49ID:???
$userid = $_POST['userid'];
$pswd = $_POST['pswd'];
$sql = "SELECT COUNT(*) FROM user_pwd WHERE user='$user' AND pass='$pswd'";
$res = mysql_query($sql);
list($nums) = mysql_fetch_assoc($res);
if ($_SERVER["REQUEST_METHOD"]=="POST"){
if($nums==0){
echo "bad";
}else{
echo "okie";
}
}
こうですか?
出来ないよーーーーーーーーーーーーーーーーーーーーわからない
焦る 軽いノイローゼ状態だー
0582nobodyさん2008/10/23(木) 10:51:35ID:???
>>570を見た.結論からいうと>>552
何も分かってないのに偶然うまく動くとかえって自分の首を絞めるよ.

>>570のコードも addtest.php って本人が書いたわけじゃなくて
職場の既存コードのコピペじゃないの?
SQLインジェクション脆弱性あるよ.

>>578 $uid と $passwd をエスケープしないのは初心者にとって有害な例示だと思うよ.
0583nobodyさん2008/10/23(木) 10:52:51ID:???
�@接続する。
�ASQL文を作る。
ユーザーリクエストを含めるときはインジェクション対策のために専用エスケープを忘れずに。
�B発行する。
�C結果セットを受けとる。
�Dループさせるなり取り出すなりして表示。
�E接続を切る。
05845702008/10/23(木) 10:55:53ID:???
職場のではないですが、解説サイトのを少し見よう見まねしてます。
といってもSQL構文のところだけです。
他はナントナクはわかって書いてます。

「とりあえず動かしてミロ」とのことなので
セキュリティの事は後に言われると思います。
0585nobodyさん2008/10/23(木) 10:56:30ID:???
>>579
そこからなのか・・・
>>580
そんなこと言ったら「担当替えろ」で終わりだ
そもそもモデル化してないのにゴチャゴチャやったら>>581みたいなことになる
まずは最低限の動作、そこから拡張しかないのだ、この場合

>>581
DBのオープンすらやってないってことでFA?
そのスクリプトには事前処理とかないわけ?
mysql_connectはどこかで使ってるか?(認証処理より前の段階で)

0586nobodyさん2008/10/23(木) 10:57:06ID:???
それと認証して一致するユーザーは1人だろうから

if($nums==1){
//OK
}else{
//NG
}

のほうがいいような。
0587nobodyさん2008/10/23(木) 10:58:17ID:???
先輩のチェックが入るんだから、
まずは動くところまで持っていくしかないな
そこから先輩もツッコミや指導を予定してるんだろうし
0588nobodyさん2008/10/23(木) 11:11:28ID:???
>>585
モデル化とか関係ないし
とりあえずの動作も必要だが
それ以上にSQLインジェクションの事を考えさせる事の方が重要
05895812008/10/23(木) 11:13:20ID:???
みなさんのレスをコメント化して見ながらやってるので
ソースもだいぶごちゃごちゃしてました。まとめますと今こんな事書いてます。
http://amezolog.hp.infoseek.co.jp/source/up8378.zip
0590nobodyさん2008/10/23(木) 11:15:11ID:???
>>588
考えさせる・対策させる大切さは重々わかっとるが、
さすがに手順を踏まないと>>570がハゲないか?
0591nobodyさん2008/10/23(木) 11:20:45ID:???
>>589
見た

WHEREのところで「user=」ってなってるけど、
user_pwdテーブルはIDとpassフィールドなんだよな?
じゃぁ「ID=」にしないと
0592nobodyさん2008/10/23(木) 11:28:25ID:???
4行目から10行目までは認証処理だから、
11行目のifの中に入れたほうがいい
理由は、今のままじゃ毎回SQL発行しちゃうから
05935892008/10/23(木) 11:52:15ID:???
今先輩が来て「こうすんだよ」と言って
ささっと解決しました。情けない。
たぶん「あらら、出来てないのね」と思われたと思います。
>>591
そう訂正されました。はい。

>>592
その通りでした。
そう訂正されました。

みなさん、ありがとうございます。
だけど、まだまだわかってないなぁ。
次はMD5化して登録と、ログインです。
これは出来そうな気がする・・・。
05945892008/10/23(木) 13:06:38ID:???
if ($_SERVER["REQUEST_METHOD"]=="POST"){
$userid = $_POST['userid'];
$pswd = $_POST['pswd'];
$pswd2= md5($pswd);
$host = "localhost";
$conn = mysql_connect($host, "root", "");
$db_selected = mysql_select_db('webauth', $conn);
$sql = "SELECT * FROM user_pwd WHERE name='".$userid."' AND pass='".$pswd2."'";
$res = mysql_query($sql);
if(mysql_fetch_assoc($res)){
$url = "index.php";
header("Location:$url");
}else{
echo "エラー";
}
}
一応のせときます。
結局こうしました。
0595nobodyさん2008/10/23(木) 14:23:32ID:???
お前な、まずココで聞く前に先輩に聞けよ。
2chで聞いてるなんてバレたら首にされかねんぞ。
05965942008/10/23(木) 15:03:26ID:???
それもそうですね・・・確かに。
家だけにしときます。
忠告ありがとうございます。
0597nobodyさん2008/10/23(木) 15:56:27ID:vhIkvqq/
でもさ。こんなのも教えられない先輩は間違いなく無能。
ここで聞くのもわるくない。
客先行く前にきちんと疑問点は解消しておけ。
出て行って大変だよ。
0598nobodyさん2008/10/23(木) 16:18:43ID:???
それは違くね。
「とりあえず自力でやってみろ、教えるのはそれからだ」ってことじゃない?
何でもほいほい教えちゃうのはよくない。
0599nobodyさん2008/10/23(木) 16:59:24ID:???
俺が先輩でも多分最初は突き放すな。検索すりゃ少なくとも動くもの作れるし、
作れないってことは検索力が欠けてるってことがわかるし。
ま、2chとか掲示板で聞いてたらぶん殴るがw
0600nobodyさん2008/10/23(木) 17:05:54ID:???
まったく基礎が無いように見えるが、
どうしてそんな職に就いたかねぇ・・・
0601nobodyさん2008/10/23(木) 18:07:36ID:???
>>600
そんなもんさ
俺の下についてる連中もやる気だけある素人だし
その方が変なクセとか勘違いとか腐ったプライドとかなくていいがの
0602nobodyさん2008/10/23(木) 19:27:42ID:vhIkvqq/
がんばってほしいな
0603nobodyさん2008/10/23(木) 20:17:53ID:???
それは同意だが頑張り方が間違ってる気もするけどな
都合が悪い意見は無視とかいい性格してるし
0604nobodyさん2008/10/23(木) 21:19:01ID:???
mysqlのインストールがうまくいかない・・・
verは5.0.5なんですけど、インストールが終わって設定もやって、最後のチェックで、必ず一番下の
Apply security settingsでエラーになります

大学の研究でPHPはじめたのですが、環境そろえる段階でこけています。
どなたかお力をお貸しください
0605nobodyさん2008/10/23(木) 21:21:20ID:???
インストールされてね?プログラムからチェックしてみ
それとなんでわざわざ古いの使うのか
0606nobodyさん2008/10/23(木) 21:53:51ID:LaxpC4NS
先輩方おねがいしマス。


掲示板 / 問い合わせフォーム / UPロダ / ショッピングカート


PHPを独学で↑を0から作成できるレベルになりましたが、実際の
PHPプログラマとして就職するには、次に何を作れたら良いでしょう?

どれ位のレベルになれば、PHPプログラマとして雇ってもらえますか?

ちなみに今は、本屋のバイト(23歳)です。
0607nobodyさん2008/10/23(木) 21:55:09ID:???
作った奴見せてみ
0608nobodyさん2008/10/23(木) 21:58:25ID:???
自動車メーカーに就職するのに、自動車が作れる必要はないと思います。
本当の勉強は就職してから始まるので、いまは面接のレベルを上げた方がいいと思います。
0609nobodyさん2008/10/23(木) 22:00:36ID:???
面接のレベルだけ上げても薄っぺらい人間ができあがるだけだと思うが
0610nobodyさん2008/10/23(木) 22:08:27ID:???
>>605
一度アンインスコしてから入れなおしましたが、必ず上記の項目でエラーが出ます
原因わからず・・・

verですが、研究室で使用しているのがこれなんで、使えとのことです
06116062008/10/23(木) 22:10:01ID:LaxpC4NS
知り合いに頼まれて問い合わせフォームを1万円でつくりました。

feiz−design.コム/inquiry.ピエチピ
0612nobodyさん2008/10/23(木) 22:11:35ID:???
>>606
ん、十分じゃね。本屋のバイトなら対人もある程度大丈夫だろうし。
技術的な部分は就職してからでいいし。自信もってGo。
0613nobodyさん2008/10/23(木) 22:23:55ID:???
>>611 見たけど、漏れなら雇わないかな。。

valueの値をクォーテーションで囲ってないのと、
メールアドレスバレバレ。。
0614nobodyさん2008/10/23(木) 22:26:31ID:???
これで30歳超えならアウトだが23歳なら全然おk
0615nobodyさん2008/10/23(木) 22:33:52ID:???
でもお金もらってんだぜ?
0616nobodyさん2008/10/23(木) 22:36:04ID:???
>>611
というか、ここに自分のつくったページの URL を掲載する時点で……
0617nobodyさん2008/10/23(木) 22:39:31ID:???
これで16歳女子高生ならおkだけど、23歳だと厳しいかも。
バカ専門学校出ててもこんなふうには作らない。

でも、こういうことは独学じゃわからないことだから、
まず就職した方がいいよ。2ちゃんでぐだぐだ言い合ってるより。
06186062008/10/23(木) 22:39:41ID:LaxpC4NS
>>613
『htmlspecialchars』でやれば上手くでしょうか・・・
『’』なしてもテスト送信できたのでスルーしてしまいました(汗


そんで、私はどーすれば・・・
今後の目標なんかを・・・
0619nobodyさん2008/10/23(木) 22:42:19ID:???
まぁ ここでいうのもなんだがPHP以外の事を勉強するのが一番だと思う
0620nobodyさん2008/10/23(木) 22:50:22ID:???
>>618
よし次はMVCで掲示板だ
0621nobodyさん2008/10/23(木) 23:10:49ID:???
俺22だけどなんか凄い安心した
0622nobodyさん2008/10/23(木) 23:13:29ID:???
>>621 自分より下を見て安心してどうする
0623nobodyさん2008/10/23(木) 23:15:38ID:???
>>618
まず人生を2chに委ねるのをやめる
0624606さんへ2008/10/24(金) 00:15:22ID:wH/GxTYw
phpで作るのはもういいから。十分とはいわないけど。
基本はわかっていそう。
次はそうだな。サーバー立てて自分でUPしてみて。
もちろんここにさらす必要はないから。
でその作った掲示板とショッピングカートをのせる。
後HTML+CSSの練習かな?
feiz−design.コム/inquiry.ピエチピ
って自分で全部は作っていないんでしょう?



0625nobodyさん2008/10/24(金) 00:27:34ID:???
画伯に慰められるならもうおしまいだ
0626nobodyさん2008/10/24(金) 01:01:51ID:wH/GxTYw
すいません。
俺の責任でつね
0627nobodyさん2008/10/24(金) 01:31:05ID:???
PHP である文字列が正当な書式にのっとったメールアドレスかどうか判定するような関数はありますか?
0628nobodyさん2008/10/24(金) 03:32:30ID:???
>>627
無い
正規表現でチェックするのが一般的
0629nobodyさん2008/10/24(金) 03:46:06ID:???
>>628
やっぱりそうなのですね。ありがとうございました。
0630nobodyさん2008/10/24(金) 04:26:04ID:???
だが厳密に判定しようとするとえらいことになる。
うちでは@数えるだけ。
0631nobodyさん2008/10/24(金) 05:00:30ID:???
>>630
そうですね。ごく簡単に判定することにします。
CPAN の Email::Valid や Mail::CheckUser みたいなものが提供されているかと期待したのですが。
0632nobodyさん2008/10/24(金) 05:03:30ID:???
>>631
それなら移植すれば良いのではー・・・
0633nobodyさん2008/10/24(金) 05:07:25ID:???
>>632
そんな実力あったらいいですけどねーっw
0634nobodyさん2008/10/24(金) 05:21:44ID:???
中見て置き換えるだけじゃん
0635nobodyさん2008/10/24(金) 05:25:14ID:???
じゃあお前がやれと
0636nobodyさん2008/10/24(金) 05:27:02ID:???
なんでだよwどんな必要性がw
0637nobodyさん2008/10/24(金) 08:50:51ID:???
そういうライブラリがあるかと思ったって話じゃないのか
移植すれば?とかアホかと
0638nobodyさん2008/10/24(金) 09:16:03ID:???
ライブラリならZFとかPEARとかに多分あるだろ
0639nobodyさん2008/10/24(金) 12:48:51ID:???
function f($text, $num)
{
if (mb_strlen($text) > $num) {
$after = mb_substr($text, 0, num);
return $after.'<略>';
} else {
return $text;
}
}

という,文字列が一定以上の長さならそこで切って、
語を付加する関数を作ろうとしたのですがうまくいきません
なぜなのか分かる方いらっしゃいませんか?
0640nobodyさん2008/10/24(金) 12:51:59ID:???
num
0641nobodyさん2008/10/24(金) 13:03:57ID:???
>>639
そんなもん作るな・・・
http://jp.php.net/mb_strimwidth
0642nobodyさん2008/10/24(金) 17:48:45ID:45nbMWSd
$url = "http://localhost/test.xml";
$xml = simplexml_load_file($url);
var_dump($xml);

↑この結果が↓このようになります。
objet(SimpleXMLElement)#1 (2) { ["社員番号"]=> string(5) "00001" ["氏名"]=> string(7) "ABC DEF" }

社員番号を表示したいのですが
echo($xml->社員番号);
とやっても表示されませんでした。
XMLの要素名が日本語なのが問題なのでしょうか?


0643nobodyさん2008/10/24(金) 20:15:35ID:???
>>641
さ、さすがphp・・・
どうもありがとうございました
0644nobodyさん2008/10/24(金) 21:18:49ID:???
>>643
MVC的にはビュー側で対応したほうがいいかも
>>642
出たよ
0645nobodyさん2008/10/25(土) 03:08:02ID:???
>>642
どうせソースの文字コードとXMLの文字コードが違うとかいうオチだろ
0646nobodyさん2008/10/25(土) 09:29:46ID:hQkPyR+6
社員番号の要素をIDにして
$xml->IDだと表示されたので
要素名が日本語だとまずいのかなと思ったです。
0647nobodyさん2008/10/25(土) 13:24:59ID:???
そうか
0648nobodyさん2008/10/26(日) 18:47:14ID:???
http://www.gyao.jp/tag/?keyword_id=2518

のようなgyaoのURL(tag/?keyword_id=****)からHTMLソースを取得する方法はないでしょうか
fsockopenを使うような気がしたのですがうまく取得できません

PHP4.43
0649nobodyさん2008/10/26(日) 19:34:59ID:???
fopenじゃだめなのか?
0650nobodyさん2008/10/26(日) 20:31:06ID:???
fopenで他鯖にアクセスできたっけ?
0651nobodyさん2008/10/26(日) 21:48:04ID:???
できなかったっけ?
0652nobodyさん2008/10/27(月) 01:44:12ID:???
httpラッパーが有効なら出来るよ
レン鯖では無効にしてる場合も多いけど
0653nobodyさん2008/10/27(月) 11:28:17ID:???
file_get_contentsじゃだめなの?
0654nobodyさん2008/10/27(月) 11:33:39ID:???
file_get_contentsで他鯖にアクセスできたっけ?
0655nobodyさん2008/10/27(月) 11:40:20ID:???
できなかったっけ?
0656nobodyさん2008/10/27(月) 12:15:24ID:???
httpラッパーが有効なら出来るよ
レン鯖では無効にしてる場合も多いけど
06576482008/10/27(月) 13:18:28ID:???
$fp = @fopen("http***********", "r");
でできるようです
Anhttpdでローカルテストしてたんですが、実はAnhttpdだと上のような外部fopenが強制終了されてしまうというオチでした
file_get_contentsも同じく
さーてこまった
0658nobodyさん2008/10/27(月) 13:52:47ID:???
できるんならいいじゃん
0659nobodyさん2008/10/27(月) 14:05:00ID:???
anhttpd使わなきゃいいから困らない
0660nobodyさん2008/10/27(月) 14:05:47ID:???
自分で「AnHTTPd を捨てれば解決しそうです」って書いてるんだから
困ってるように見えない。

ところでよその鯖から取って来るときってあんまりファイルポインタの操作に
用事はないような。たいてい file_get_contents() な感じの用事じゃないのかな。
06615872008/10/27(月) 15:48:44ID:???
アパッチ2.2.10入れたもののサードパーティ製のphp4apache2.dllないとPHP4が動かない仕様らしくしかもそのサードパーティサイトが死んでて何もできなそうです
PHP5入れてみます

やりたいことは他鯖からとってきたHTMLデータから特定の部分を抽出して、置換して整形してから表示したいっていう感じです
0662nobodyさん2008/10/27(月) 15:51:25ID:???
今更PHP4使うこともない、最初からPHP5でGO
0663nobodyさん2008/10/27(月) 15:53:47ID:???
レンタ鯖かなんかが4なんだろ
0664nobodyさん2008/10/27(月) 16:00:00ID:???
そこはPHP4対応箇所と5対応箇所を確認すれば問題なさそう
Zend1互換モード使えばクラス関係以外はPHP4として動作するしな

あとHTMLを改変する場合コピーライト注意な、公開してると無断転記となる場合も・・・
0665nobodyさん2008/10/27(月) 16:42:05ID:???
php4にapache2.2になにが問題あるのかと思ったら難解だなこりゃ。
30分粘ったが投げた。
0666nobodyさん2008/10/27(月) 18:20:29ID:???
PHP5にて、以下のような何十行かの文字列が入った配列から>>を探しだし、
マッチしたらマッチしたのが後から何番目の配列か知りたいのですが何か良い方法はないでしょうか?
>>はかならず配列の後から数えて数番目という位置にあり、前から順にマッチさせていくとすごく時間がかかってしまいます。

aaa
bbb
ccc
ddd
eee
ff>>f
ggg
0667nobodyさん2008/10/27(月) 20:16:21ID:???
>>666 配列の要素数を求めて、for で後ろから検索する。
0668nobodyさん2008/10/27(月) 20:20:31ID:???
str_replaceで全部まとめて変換すりゃいいんじゃないの?
06696662008/10/27(月) 21:42:44ID:???
>>667
できました。ありがとです。
0670nobodyさん2008/10/29(水) 17:11:52ID:???
035
0430

みたいな数桁の数字の、頭のゼロを一律に削除する方法はないでしょうか
0671nobodyさん2008/10/29(水) 18:23:27ID:???
(int)でキャストしてしまえ
0672nobodyさん2008/10/29(水) 19:09:05ID:???
http://blog.ohgaki.net/php_5_3_namespace
0673nobodyさん2008/10/29(水) 19:15:52ID:???
PHPの入門書を読んでいて次のプログラムの「&」の意味がわかりません。
$mdb = &MDB2::factory($DSN);
どなたか教えてください。
0674nobodyさん2008/10/29(水) 19:18:20ID:???
参照返しでぐぐれ
0675nobodyさん2008/10/29(水) 19:22:28ID:???
>>674
ありがとうございました。
0676nobodyさん2008/10/30(木) 00:40:27ID:???
>>670
str_replace("^0+","",$str)
0677nobodyさん2008/10/30(木) 02:43:57ID:???
>>676
str_replaceで正規表現ですか、そうですか
0678nobodyさん2008/10/30(木) 02:50:00ID:???
ereg_replaceですよねもちろん
0679nobodyさん2008/10/30(木) 03:01:55ID:???
pregの方が良い
大抵はpregの方が速い

と言うか>>671のが一番速そうに思う
速さうんぬんの処理内容じゃないが・・・
0680nobodyさん2008/10/30(木) 07:18:03ID:???
んじゃ俺も
>>670
035 += 0
■ このスレッドは過去ログ倉庫に格納されています