【PHP】下らねぇ質問はここに書き込みやがれ 10
レス数が950を超えています。1000を超えると書き込みができなくなります。
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 9
http://mevius.5ch.net/test/read.cgi/tech/1513760420/
次スレは>>980以降
本文の1行目に以下を追加すること
!extend:on:vvvvv:1000:512
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured phpのechoを使ってルートフォルダからの絶対パスを指定して
ナビ部分のリンク変更をサイト全体に一括で行えるような書き方を教えてください
3年くらい前にやってたんですが
やり方がわからなくなってしまいました >>885
echoにそんな機能ないし、何が聞きたいのか伝わらないと思う。
find(grep)+sedのような、ファイルの中身に特定の文字列があれば、
それを一括で書き換えるようなことをしたいわけでもなさそうだし、
何かナビ用のリンクのリストをincludeしてるなら、
そのリストの中身を書き換えろで終わる話だけど、そんな簡単な話でもなさそうだし。 細かく言いますと
一時期Web製作会社でコーディング業務をしており
html/cssは扱えるのですがphpはヘッダー、ナビ、フッターなど共通部分をincludeフォルダで共通化できる程度しか扱えませんでした
そして自社のドメインのサブドメインでテスト環境を作り、そこでHPを作成して客先の本番サーバにアップロードという工程で納品、保守管理をしていました
その場合、リンク先を絶対パスで書けないので相対パスにする訳ですが
phpで常にルートフォルダを取得して書き出し、それに続けて下層のリンク先を明記するようにしていたんですが
そのやり方を忘れてしまったので教えて欲しいのです それだけ具体的に説明できるんならググった方が早いぞw 2ch風の掲示板を作っており、考え方についてアドバイスをいただきたいです。
ログファイルでレスを記録して、1レス1行で構成されています。
ajaxを用いて遷移なしでの投稿反映と、レスアンカーにホバーすると、該当のレスを引っ張ってくる
ようになっています。
このレスアンカーへのホバーを行うと、当たり前なのかもしれませんが、添付の画像のように
どんどん_ajax.phpのファイルへのアクセス?が増えていってしまい、投稿ならまだしも、
ホバーするだけでPOSTを行うなんて、無駄な処理をさせているのではないか?
と考え出しております。
ログファイルは数百kb程度なので、投稿内容の全てをJS側で配列で保持をしていく方が
無難だったりしますでしょうか?
ttps://f.easyuploader.app/eu-prd/upload/20200412115052_69364c5954346f304857.png >>889
目的次第
少なくとも表示中のレス(=クライアントで保持してるレス)に対するアンカーへのホバーでサーバーにアクセスさせるのは無駄 >>890
ありがとうございます。
やはり無駄でしたか。
おいおい100レスずつ表示とかする予定ですので、表示されているレスと
表示されていないレスとで分岐させてみます。 ->
=>
この使い分けをよく忘れるのですが
覚えておくコツはありますかね?
メインでPHP言語以外をやってるのでたまにPHP書くときよく混乱します。 >>856
「の」はクラス「の」メンバー、
「は」は連想配列のkey「は」これですよ
という意味?
でもこれ以外で->や=>が出てくる場面なかった? >>891
一度取ってきたレスはキャッシュしておけばどうよ。
どのみt 1-1000 みたいのだっやらまとめて全部取ってくることになりそうだが。 >>894
ども。
おっしゃる通りかもしれません。
投稿以外でサーバーに負荷掛けるより、クライアント側で処理した方が
良い気がしてきました。
1回投稿での文字数を制限してしまえばサイズも制御できそうですし。 Ruby なら、0〜1,000 までの配列を作っておいて、
読み込んだレス番号だけは、その文字列を設定していく
p posts = Array.new( 1001 )
出力
[ nil, nil, nil, 続く... ] どうせなら ruby じゃなくて JS で例示してやれよ。
phpのスレでなんなんだけどさ。 RubyならRubyならってよく布教しに来るけどいい加減場違い空気嫁
>>887
URLの話じゃないでしょ?
内部の話なら別に相対パスにしなくても絶対パスでも問題ないんだけど。
その絶対パスがわからんって話?
自スクリプトから見た自分の絶対パスは__FILE__定数でわかる。
サーバのドキュメントルートが知りたいなら$_SERVER['DOCUMENT_ROOT']
ただしこういう環境変数($_SERVERや$_ENV)はあんまり過信しないほうがいいね。 Eclipseで参考書通りに
print “¥n”入れてもコンソールで改行してくれないんだけどなんで? >>900
OSとか実行コードくらい書けないのか
あと円マークがそのまま出てるようなら
正しくは「(日本語環境では円マークに見える』バックスラッシュだから」
を確認しろ Eclipseとかprint ""とかいう表記を見ると
古いか一般のPHP書籍とかかけ離れたもののきがするわ
あんま参考にしないほうがいいかもしれんね OSはMac
eclipseでphp7
<?php
print “hello”;
print “¥n”;
print “world”;
print “¥n”;
?>
Kindle Unlimitedの参考書によるとこれで
hello
world
と出力されるみたいなんだけど実行すると
hello¥nworld¥n
ってなる これを、Ruby で、実行してもエラーになる!
print “\n”;
基本的にプログラミングは、どの言語でも、半角英数字しか使えない。
全角文字のクォーテーション・全角空白なども使えない
\ も、日本語キーボードでは、バックスラッシュキーのこと!
\ という文字を使っちゃいけない!
これなら、Ruby でも改行される。
print "\n" ; rubyさんはあちこちのスレに出張布教してるんですね
>>903
php print 改行
で検索くらい出来ない? 半角で書くべきとこを全角で書いてるのは
動いてるようだから書き込んだときのミスとして
文字コードがおかしいんだろう
文字コード変えるか\nやめてPHP_EOLにしとけば バチスカってmacの専ブラで書き込むとクウォートが全角に、バックスラッシュが円マークに、自動変換される サーバー内で動くプログラミングは可能のことですか?
例えば無限ループで常に動かすプログラムとか 定期実行されるクローラーとかのこと言ってるんじゃないの? 個人的にPHPでサーバ書いてるんでそれはよくやってる
ただPHPに限った話じゃないけどその手のバックグラウンド実行は
普通のレンタルサーバだと一定時間でkillされるだろうね 定数を、成型した変数を代入することで宣言することはできませんか?
外部ファイル(.csv)を読み込み、連想配列$arrayを作成し、
クラス定数CLASS::CONSTをその配列$arrayにしたいのです
グローバル定数としてdefine(CONST, $array)することも試したのですが、いずれも出来ませんでした 定数にはコンパイル時定数と実行時定数(immutable, readonly)とがあるが, PHPは基本的にコンパイル時定数しかサポートしていない
実現したいのは後者の実行時定数なんだろうが, 「php readonly」とかでググれば分かるように言語としてはサポートしていない すみませんできました
defineだと変数渡しで定数を作れました
単にPHP5.6でdefineで定数に配列を入れられないため正常動作しなかったようです
PHP7.3の環境では動作しました
お手数おかけしました CakePHP, Spring Boot などは、Ruby on Rails のコピーだから、
Rails を学んだ方が速いと思う x ドットインストールでCakePHP勉強するお
o ドットインストールでCakePHP勉強するよ
正しい日本語。
最近の日本人は気持ち悪い言葉づかいをする。 >>921
Webアプリの仕組み(裏でどう動いているか)を理解したくて、LaravelかCakePHPかで迷ってCakePHPを勉強しようと思ったんだけどLaravelはどう? >>922
体言止めに句点打つのめちゃくちゃ違和感あるんだが web アプリの作り方を学ぶのは、Ruby が最適!
本当は、Sinatra が良いけど、web 上の教科書が少ないから、
Rails になるかな?
ただし、Rails は、半年ぐらい掛けて学ぶぐらい高機能。
本は、10冊ぐらい出てる
web サイトでは、日本語版・Rails チュートリアルの1つ古いバージョンなら、無料で読めるけど、
あまりに難しいので、初心者は本から始めるのが良い RubyをNGワードに入れるのはデフォなんですかね? 単に使い方を学びたいと言ってるだけなら別にフルスタックでもいいけど
ソースコードレベルで仕組みを理解したいならフルスタックは疲れるだけ
slimあたりのマイクロフレームワークのソースコード読むといい なんで荒らしの相手をするんや。
ホントにRubyが優れとるなら、PHPで書かれた有名ソフトがRubyで書かれなかった理由を提示させるべきや。
WordPressもNextCloudもPHPなんや。Facebookも元はPHPで書かれてた。
PHPerは胸を張って堂々としておけ。小バエが顔の前をうろちょろしても気にするな。 小さなグループのための連絡帳づくりには便利だな
自分も使って現在5人くらいで使っておおむね合格点しかし
「こういう風になってたらもっといいなあ」多数w RubyってPHPと張り合うものだったんだ?
あれはPerlと競合するものだと思ってた PHPはごった煮のテンプレートエンジンってイメージだな。
スクリプトのパースがコードではなくテキスト出力から始まるしな。
そこが他のスクリプトと比べてもweb向きに使い勝手がいいところだと思う。 下記のような、空以外のstringだけを通し、それ以外はnullを返すメソッドを作りたいんですが、
この処理に最適なメソッド名ってありますか? 暫定のfilterStringは何となく違う気がしてます
function filterString($var): ?string
{
return is_string($var) && $var !== '' ? $var : null;
} GCのためにでかいオブジェクトをnullにするのならわかるけど
エラーハンドリング用途でnullじゃない値をnullにして返すってのはbad practice >>936
ありがとうございます
>>938
デフォルト値が必要ないんでnullが都合いいです 各ページa,bからcページへの遷移を各ページのボタンa,bからとしたときに、ページbのボタン名をページaのものにブラウザのデバックモードかなんかで変更した場合に、
ページcから見るとisset(ボタンA)がtrueとなると思いますが、こういうパターンを見分ける方法ってありますでしょうか >>940 難しいと思う
ボタン名をbtn_A,btn_Bみたいにa,bで変えて
cで、aからの遷移だったら… bからの遷移だったら…
と処理わけするのが現実的 と思ったけど、結局リファラも改ざんできちゃうから難しいね
JavaScriptで小細工も出来るけどそれすら改ざんされるのも想定してるなら
まあノーダメならそんな物好きなこと想定する必要はないと思うけど
ダメージあるなら設計変えればいいし ありがと➰。入力された値の正統性を確かめるのって難しいですね。自分しか使わないやつだから気にしないでおきます ページを表示する毎にランダム値を埋めて、submitされたページ名とその値とを検証したらどうかな。 $a = [1, 2, 3];
と言う配列があったとして、そこから
$b[1][2][3] = '何か入れる';
と言う配列を作る簡単な方法はありませんでしょうか? $b[$a[0]][$a[1]][$a[2]] = '何か入れる';
とか? ごめんなさい、質問の仕方が悪かったです
元の配列の長さは可変で、出来上がる配列の深さも深くなっていく感じです
$ary = [1,2,3]; //長さは可変
$val = '何か';
$ret = func($ary, $val);
var_dump($ret);
---
array (size=1)
1 =>
array (size=1)
2 =>
array (size=1)
3 => string '何か' (length=3) そういうあり得ないくらい複雑な何かを実装しようとするときは、
実はやりたいことを実現するもっと簡単な方法があることが多い
配列$bは常に1つの次元に1つの要素しか持たないまま深さだけ深くなってくのは無駄というか意味不明
やりたいこと自体を書いた方がいいと思う 元の配列の値をキーの深さとする配列ができれば、あとはなんとかなるのでその部分だけの質問としたのですが、わかりにくくてすみませんでした
やりたかったことはLaravelのRouteの真似事です
木構造のクラス書いてデータ保持するのも面倒だったので配列でなんとかしようと思いました
ただあまりゴリ押しで書いても見ずらいので既存の関数などで簡潔に書けたらと思い質問した次第です
結局、参照代入をforeahで回すと言う方法で落ち着きました
public static int get($uri, $action)
{
if ($uri == '/') {
$paths[] = '/';
} else {
$paths = explode('/', $uri);
}
$tmp = &static::$routings;
foreach ($paths as $path) {
$tmp = &$tmp[$path];
}
$tmp = $action;
return static::$instance;
} >>947
そのコードで言うところの func は一応実現してて、もっとシンプルな方法があるかを確認したいの?
それともまだ func を実現できてないの?
参照と再帰を使えば簡単なはずだけど、参照とループを使ってもできるはずだよ。 ざっくり
ブラウザがセキュリティのために(あくまでも独自に)設定している、
同一オリジンポリシーというものがある。
同一オリジンってのは同じプロトコル 同じホスト 同じポートのことで、
同一ドメインでもこれらが違ったら別オリジンということになる。
ブラウザはJavaScriptのXMLHttpRequest(XHR)やFetchAPIから、
別オリジンのサイトには意図的にアクセスしないようにしてある。
その制限を超えるのがCORSで、
あるサイトを開いた時、別オリジンのサイトにXHRなどからアクセスしようとしてたら、
ブラウザは追加のOriginヘッダをつけて、その別オリジンに対して確認作業を行う。
そのサイトがAccess-Control-Allow-Originというヘッダを返してこれば、
意図したものと把握し、制限を超えてアクセスすることになる。
Access-Control-Allow-Originは、
よそのサイトのXHRから呼び出し可能なAPIを提供してる時はつけるべきだが、
よくわかってない人が、自サイトの掲示板でつけてしまった場合、
悪意あるサイトにアクセスするだけで、CSRFが成立して、犯罪予告を書いてしまったりする。 CORS は、ブラウザでアクセスする人を保護するもの。
サーバー経由にすれば、クロスドメインでもアクセスできる
自分のPC にサーバーを立てて配信する、一番簡単な方法は、
VSCode の拡張機能のLive Server 肝はあくまでもブラウザの機能ってところだな
それに頼って無策ではいけないよ
実行前最後のプロセスで再ログイン求めるとかやるべき対策はちゃんとやる <?php
の閉じタグをそれが文末にくるときは省略が奨励されてるのは
どういう理由からですか? >>958
閉じタグの後に空行を入れちゃったりすると、それが出力されちゃうからだと思ってる。
ファイルの最後に空行を入れちゃうのは結構やりがちだから。 あれそうだったの?
閉じた直後の改行コードもNG?
>[改行]
[改行]
[EOF]
じゃなくて
>[改行]
[EOF]
もダメで、
>[EOF]
じゃないとダメだとか? 閉じタグ直後の改行1つだけは例外だが閉じない方がミスを減らせる 何故ダメなのかその理由が理解出来ないと
「閉じタグを付けるな」が一人歩きしそう short_open_tag はデフォルト On にしてほしい 逆に言えば、
"PHPを埋め込みで使うなら"閉じタグは必須ってことだな
いちいちそんな判断するなら、付けておけば安心 IDE使ってたらその辺の面倒見てくれるんじゃないの 埋め込みで使う時に閉じタグを書かないってのが不可能なわけで。 ENT_QUOTESのENTとは何の英単語の略でしょうか? なんで汎用性のある言語はCでできてPHPではできないの? 特定言語で出来て、他の言語で出来ない事なんてそんなにない >>974
PHPからWin32やLinuxのシステムコールを呼び出す方法が面倒だし、コスト最小ではないから、C/C++が優位。 例え、PHPで汎用言語を作ったとしても、PHPの実行時モジュールが邪魔なコストになる。 Win32やLinuxのシステムコールを呼び出す方法は
どの言語でも面倒くさいだろう 「汎用性のある言語」の意味するところが分からんとなぁ
「CでできてPHPではできない」も, 「汎用性のある言語」をCやPHPで実装する話なのか, CやPHP自体の汎用性の話なのか分からん
前者なら別にどっちでも書けるけどコンパイルするなら最終的にセルフホスティングするだろうし仮想マシンやインタプリタで実行するなら処理系の速度が重要だからCが選ばれるだろう
後者ならCだって何でも出来るのは確かだけど, 低レベルプログラミングには向いてても例えばWebアプリケーション開発には向いてない
Cは汎用的な「システムプログラミング言語」で, PHPは(今は)汎用的な「スクリプト言語」だからそもそも目的が違うとしか 質問いいでしょうか?
ローカル環境で動かしています。
昨日macのOSを更新したところ、USBからのデータの取得ができなくなりました。
Warning: file_get_contents(URL): failed to open stream: Operation not permitted
対応方法をご存知の方がいらっしゃいましたら教えていただけると幸いです。
URLの打ちミスやphp.iniの「allow_url_fopen = On」も確認済みです。
macOSはバージョン10.15.5です。 >> 981
だめだ
質問の許可を確認してからしたまえ Htmlタグとphpが混在するとソースコードが
見づらく感じるのですが、なにかいいコツはないものでしょうか レス数が950を超えています。1000を超えると書き込みができなくなります。