のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,363,557人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレ【PHP】下らねぇ質問はID出して書き込みやがれ 93

    php覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    301 = :

    >>299
    http://php.net/manual/ja/language.types.type-juggling.php

    302 = :

    サナクス

    303 = :

    (C 言語で行われるように) 数値に変換することで 一つの文字のコードを取得できると期待してはいけません。 文字と文字コードを相互に変換するには ord() および chr() 関数を使用してください。

    305 = :

    >>304
    最後のだけ改行なしで終わってるんだろ
    >>279

    306 = :

    半角とEUC-jpが混在している文を、特定文字を置換すると
    本来、区切れない部分を置換してしまうことがあります。
    対処法はありますか。
    ユニコード文字列みたいなのが出来ればいいですが。
    一語が一つの配列入りしてれば

    307 = :

    >>304
    なんでforeachのブロックが終わったのに$tmp使ってるの?
    その$tmpはforeach内のみで使うローカル変数でしょ
    何やってるか理解できてないでしょ?
    答え書いても分かるとは思えないけど

    $data = file("ttttt.txt");
    $users = array();
    foreach ($data as $row) {
    $tmp = explode("<>", $row);
    $users[$tmp[0]] = $tmp[1];
    }

    この処理が終わった時点で
    $usersは
    $users['hoge'] = "geho";
    $users['aaaa'] = "bbbb';
    $users["1111"] = "2222";
    こうなってるでしょ

    セッション処理してるけど理解してないだろうしそこは省いて簡素化して続き書くと

    if (isset($_POST['username']) && isset($_POST['password'])) {
    if ($users[$_POST['username']] == $_POST['password']) {
    echo "認証成功";
    } else {
    echo "認証失敗";
    }
    }

    308 = :

    と説教たれといてなんだが色々間違えてたわ
    ちょっと手直しする

    309 = :

    別に間違ってなかったか・・・他の人が指摘してる通りrtrim挟んでなかったんだね

    <form method="post" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
    N<input type="text" name="username" value="">
    P<input type="text" name="password" value="">
    <input type="submit">
    </form>
    <?php
    $data = file("ttttttxt");
    $users = array();
    foreach ($data as $row) {
    $tmp = explode("<>", rtrim($row));
    $users[$tmp[0]] = $tmp[1];
    }

    if (isset($_POST['username']) && isset($_POST['password'])) {
    if ($users[$_POST['username']] == $_POST['password']) {
    echo "認証成功";
    } else {
    echo "認証失敗";
    }
    }
    ?>

    array_key_existsとか使ったほうがいいかもしれないがとりあえず簡素化したものなのでこれで
    あと本番ではエスケープ忘れずに

    310 = :

    たびたびスマン・・・やっぱ>>309はよくない
    何も入れなくても認証されてしまう
    isset使ってるのが原因でもあるがやっぱarray_key_exists使って

    if (isset($_POST['username']) && isset($_POST['password'])) {
    if (array_key_exists($_POST['username'], $users)) {
    if ($users[$_POST['username']] == $_POST['password']) {
    echo "認証成功";
    } else {
    echo "認証失敗";
    }
    } else {
    echo "認証失敗";
    }
    }

    まぁ書き方は色々あるのでとごまかしつつ寝ます・・・

    311 = :

    これはヒドイ・・

    312 = :

    >>296
    答えてくれてありがとう。
    普通ならバッチ処理でいいのですが、今回はGUIを作っていまして。。

    いろいろ試した結果
    proc_open()で時間が掛かるプログラムを起動
    proc_open()のオプションでbypass_shellをtrueにする
    終了時にproc_terminate()
    こんな感じでできました。

    313 = :

    textareaにデフォルト値入れたいんだけど、中に何が入るか分からない場合htmlspecialcharsすべき?

    315 = :

    >>313
    ×すべき?
    ○すべきですか?

    317 = 316 :

    色々と構成をいじってしまったので、
    とりあえず、サーバーを再起動して見てみます。

    318 = :

    mysqlの拡張を読み込めてないだけやで

    319 = 316 :

    再起動してみましたが、やっぱり症状変わらずです。

    MYSQL単体だとログインが出来て、テーブルも作れます。
    PHP5もphpinfo()で動作は確認しています。

    やっぱり、接続中に何らかしらのトラブルが発生しているようです。
    ネットワーク周りとかで、疑った方がいい設定値などありますか?

    320 = 316 :

    >>318
    mysqlが原因ですか・・・
    DBサーバー関係が疎いので、色々やっているうちに、どこかの設定を間違っていじっていたかもしれません。
    今から、再インストールしてみます。
    ありがとうございます。

    321 = :

    >>320
    mysqlではなくphpのmysql用のモジュールが読み込めてないだけ
    phpinfo()にMySQLの項目がでてこないと使えない

    322 = :

    >>319
    PHP5(2系3系)とMySQL5.xはdllの相性が悪い
    5.2なら「php mysql 修正版 dll」でググレ
    王道的な解決策は>>6のブログに書いてある

    323 = :

    【OS名】linux
    【PHPのバージョン】php5
    環境は特に限定せず、普通のレンタル鯖等での動作を想定。

    数値での++的な事をアルファベットでやりたいです。
    a,b,c....と事前に配列で定義することなく、プログラム的にa,b,c....をループの中などで出力する方法はないでしょうか?

    328 = :

    `hoge.exe`;

    329 = 327 :

    >>328
    いやそうやって書いてたんですがエラーでて(´・ω・`)
    っておもってたんですがスペルマミスでしたwwwwwwwwwwwwwwwwwサーセンwwww
    そして直して再度やってみたら、なんかブラウザが読み込み中のままで
    サーバー側でアプリが起動してないんですが
    他に何か気をつける点があったら教えてください

    330 = :

    `GUIなアプリ.exe`; とかしてない?

    331 = :

    サーバー側のログは?

    332 = 327 :

    >>330
    えっと普通のWinアプリなのでGUI的な感じですが・・・
    >>331
    ログどこにありますかログ。みてみます

    333 = :

    GUIかよ
    `~` は文字出力して戻ってくるのが前提のコマンドだ。
    もしサーバー側で実行が成功してるなら
    そのphp、つまりhttpdの実行ユーザーで実行されている
    デスクトップがそのユーザーのものじゃないからそのままじゃ出ないだろう
    サービスの設定でデスクトップとの対話を許可するとかやれば出るかもしれない

    実行してphpkら切り離すのは、、、&使えたっけ?forkしてexecとかか

    334 = 327 :

    >>333
    すごいありがとうございます。
    確かに画面には出ていませんでした。。。
    んでタスクマネージャみてみたらボタン押した回数分起動してましたww
    すみません、サービスの設定はどうやってやるのですか?><
    んで、サイトに書いてるようにexecやったらphpが抜けてこないっぽいので
    切り離すやりかたを><

    335 = :

    サービスは、、、マイコンピュータの右クリックから管理でサービス選んで
    Apacheのプロパティ出してログオンのとこにあるデスクトップ~をチェック

    336 = 327 :

    >>335
    できました!!!
    タスクトレイのアイコン右クリのサービスでもOKでした。
    おかげでアプリは見事に表示されました!!

    で、これやっぱりアプリ終了させるまでexecで止まってるみたいですね。
    アプリは起動されたら一連の動作を終えたら終了するようにするので
    これはこれでOKかなとおもいました。

    いろいろありがとうございました。
    ほんと助かりました。。。

    337 = :

    >>313
    htmlspecialcharsは表示のタイミングで使うものなので
    受け取った値をどう使うかによる
    表示するのなら(そのタイミングで)使うべき
    内部で処理するために使うだけならいらない

    338 = :

    何言ってんだこの馬鹿は

    339 = :

    スーパーチンピラタイム

    341 = :

    まぁはじめからうまくいくようなもんじゃないしガンガレ

    342 = :

    >>340
    http://jp.php.net/manual/ja/function.file.php
    注意: FILE_IGNORE_NEW_LINES を指定しない限り、 配列に取り込まれた各行は行末文字も含みます。
    行末文字を取り除きたい場合には rtrim() を使用する必要があります。

    fileで配列に入った1行ずつの最後には改行が入ってるよってこと。
    だからexplodeした最後の配列の中は
    "geho[行末文字]"になっていて比較する"geho"とは違う文字列となってしまう。

    こういうときは自分なら
    hoge<>geho<>
    aaaa<>bbbb<>
    1111<>2222<>
    と余分に<>を付けとく

    348 = 340 :

    >>342
    ふむふむ。
    file関数をバカにしてました・・・。

    勉強になります。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について