【PHP】下らねぇ質問はここに書き込みやがれ 12
レス数が1000を超えています。これ以上書き込みはできません。
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 11
https://mevius.5ch.net/test/read.cgi/tech/1591334726/
次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured NG推奨ワード: Ruby
この単語を含むレスは一切相手にしないように https://codepen.io/sadsfff/pen/ExZBomX
記事によってサムネイルが表示されたりされなかったりするのですが、原因がわかりません。アドバイスお願いします。 どうやら記事にサムネイルがなかったようです。記事にサムネイルがない場合、代わりに画像を設定したいのですがどのコードを修正すればいいのでしょうか? 「html 画像 タグ」で検索!
<img> 要素 https://codepen.io/sadsfff/pen/dyNBJLw
サムネイルが取得できない場合 代替えの画像を表示するコードを付け足したのですが構文エラーが出てしまいます。どこが間違っているのでしょうか?
?php if(empty($first_img)){
// 記事内で画像がなかったときのためのデフォルト画像を指定
$first_img = "/wp-content/uploads/2021/02/スクリーンショット-60.png";
}
return $first_img;
}
足したコードはこちらです。 >>5
htmlではなくphpの処理がわかりません。 RSSで出力元からサムネイルを取得してなければダミー画像を表示する方法がわかりません。functions.phpに処理を記載したいのですが、そもそも他人から取得するコードと自分のダミー画像を出力するコードをごちゃまぜにできないので困ってます。 記事中の1枚目の画像を取得 なければダミー画像を取得
ifで条件が合ったときに画像を表示させたいのですが… https://codepen.io/sadsfff/pen/oNBryGr
return $first_img;
<span class="thumbnail2"> この部分が連結できません。調べてもわからず、RSSで画像を引っ張ってきたときに画像がないものにダミー画像を使いたいのですが、何をどう調べればよいか教えてください。 そもそもコードが無茶苦茶で論外ではあるのだが
更に言うとこれWordPressが入っている環境でしか動かないコードでは? <php // RSSフィードを取得
incloude_once(ABSPATH.WPINC.'/feed.php'); //オブジェクト取得
$rss=fetch_feed('http://~.com/rss/feed/goes/here');
$maxitems=0; if(is_wp_error($rss)){ //フィードのエラーチェック
$maxitems=$rss->get_item_quantity(2); //すべてのフィードから最新2つを出力
$rss_items=$rss->get_items(0,$maxitems); //0件から指定した件数まで配列を生成
}?> <div class="grid-x grid-margin-y">
<php if (empty($maxitems)):?>
<php if ($maxitems==0) echo' <div class="celllarge-14"> //データがありませんでした。
</div>'; //取得できたRSSが0の場合「データがありません」と表示。
else foreach ($rss_items as $item):?> //RSSが1件以上あったときは繰り返し、$itemにあるデータであれば他のデータも表示させる。
ここまでは文法でおかしなところはないようです。 >>14
incloudeって何? includeだよね。 なんでXAMPP環境だと、STDINはエラーになるのですか? >>18
ユーザーから文字列を受け取り、コード内で使いたいです >>20
ありがとうございます
まだよく理解出来ていないのでいろいろ調べてみようと思います <span class="date2">
<php echo $item->get_date('Y.m.d');// 日付 ?>
</span> //書き方が多少おかしい
<div class="cell medium-7"><!-- 記事中の1枚目の画像を取得-->
<a href="<php echo $item->get_permalink(); ?>"> //サムネイル
<php
$first_img = '';
if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi',
$item->get_content(), $matches )
) { $first_img = $matches[1]; } ?> //記事中の1枚目の画像を取得 >>11
原因は>return $first_img; の前に処理が続いてるのにreturnしているからとヤフー知恵袋で教えてもらいましたが、
<php if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
の部分は後から別のコードを連結したためおかしくなってます。
本来は
<php if(empty($first_img)){ //Defines a default image
$first_img = "/images/default.jpg";
}
return $first_img;
}
で処理を閉じるのですが。
続きのコードまで処理が続いているため、<php endif; ?>がいらないとエラーが出ます。
仮の画像につなぐコードを維持しつつ<php endif; ?>につなぐには<span class="thumbnail2">
<img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" />
</span>
<php endif; ?>を書き換える必要があるのでしょうか? すいませんどこを調べればよいのでしょうか?わかりません。 >>23
そのreturnは一体どこで受け取るの?
マニュアル理解できないのか、そもそも読んでないのか知らんが、wordpress弄る前に基本的な学習が足りてない しらべてみましたが、他サイトのRSSを表示する際にサムネイルがない記事に自身のサイトの画像を設定することは無理なようです。 >>26
調べるとfunctionに書くパターンと直接かくコードがあり。自身のサイトから発信する場合はfunctionに書いてそれを表示したいphpファイルから呼び出すよう書いてました。
自分の場合 相手方のサイトからRSSを取得してそれにアイキャッチや抜粋の情報を取得するので、直接コードを書いてますがその場合サムネイルがついてない記事も読み込んでしまいます。
そこでサムネイルがない記事に自身のサイトの画像を表示させたかったのですが、どのサイトにもその処理は乗ってませんでした。 自分の見解では相手方のサイトのRSSからそもそも画像のついてない記事をはじいて、サムネイルのついている記事のみ収集して表示するという考えになったんですが。
そんなことはphpで可能なのでしょうか? >>28
functions.phpから直接returnして一体どこでどうその値が扱われるの?
先のことがわからないコード貼って動きませんは無いでしょ
yahooに上げたのが最新だとすると、return $first_img;の後ブロック閉じてないし、閉じたとするとその5行下のendiの開始が見つからない
あとブロックが波括弧とコロンが混在してるし
安易に他人のコード切り貼りするからこう言うことになる
どこで画像取得してるか調べて、調べたら無い場合の処理を書く
これだけのことなんだから、ちゃんと動く段階のもの用意して一からやり直してみたらどうですかね? やりたい事はPHPで普通に出来るが
そもそも質問するならpaiza等で動くコードを提示しないとね
wordpressが前提のようなものは、そういう前提部分が無いコードに書き換えるなりしないと
わざわざその環境を作って試してくれるような人なんて居ないしどうしょうもないかと endiタグはそもそも上のコードと連結していたものです。なので自分がやってることは本来完結してる文に句読点をつけて同じ処理を書いてるのだと思います。
エラーにかけるとreturn $first_img;の後ブロック閉じるとしたのendiタグはいらないといわれます。
しかし消してしまうと<span></span>の内容は表示されません。なぜなら上の文と合わせてphpが完結していたのに、自分が加えた余計なコードでphp処理が完結してしまうため後の処理が消えてしまうせいです。
functionに書くやり方ですとreturnをかいて別のphpファイルに書いてますが、そもそも他サイトから情報をもらってRSSを表示するならfunctionを通さないはずです。 じゃんけんをするスクリプトを、htmlファイルとphpファイルに分けて書き、
XSS対策としてhtmlspecilschars関数を使いたいのですが、
以下のphpファイルのどこに使えばよいでしょうか?
https://pastebin.com/8VBzn7PB
入力値は12行目の$_POST['handnum']で受け取っています >>33
>本来完結してる文に句読点をつけて同じ処理を書いてるのだと思います。
>>32 前者のコードはfunctions.php内の関数内の処理なのだからreturnで値返すよね
それを後者の関数では無いプラグインの処理をベースにしてreturnするって、おかしいと思わない?
後者のコードでempty($first_img)で判別してるんだから、ある場合と無い場合でそれぞれ処理して終わる話では?(あくまでプラグイン作ってるとしたらの話) >>34
filter_inputを使ってみてはどうか?
$handnum = filter_input(INPUT_POST, 'handnum', FILTER_SANITIZE_NUMBER_INT);
$player_hand = intval($handnum); >>36
ありがとうございます
あとは特徴とか自分で調べてみようと思います >>34
そのスクリプトではXSSの問題はおきない
よってhtmlspecialcharsは不要
htmlspecialcharsは外から入ってきた変数を直接出力するようなときに使う
例えば echo "こんにちは{$_POST['name']}さん" は使わないとだめ
ちなみにintvalは"A"は0になるし"1A2"は1になるので
「0・1・2のいずれかの数字を半角で入力して下さい」なんて言うのであるならば
こんな適当な関数は使ってはだめ
そこは普通にstrで受けていいしhandtypeにもstr渡せばいいだけ
んでhandtypeで"0"〜"2"じゃなかったときにfalseでも返して
handtypeからfalseが返ってきたらexitすりゃいい >>35
このコードではプラグインは使ってません。simplepieでRSSを取得しているようです。
まず記事のサムネイルを取得します。それがない場合1番目の画像を代わりに取得します。
自分がこれに付け加えたいのは、その1番目の画像がない場合にサムネイルを自分で取り付けることです。
勉強不足で申し訳ないのですが、具体的にどのコードを書き換えてどのような修正が必要なのでしょうか? なんとかコードを完成させたい気持ちはありますし。途中で投げ出す気もありません。 >>38
助言ありがとうございます
handtype関数はコンピュータの手(int型)にも利用するので
引数はint型にしたんですが…
intval()を使う所で、(int)とキャストするのは悪手ですか?
どっちにするか少し迷ったんですが >>42
すみません… つまり画像がある記事とない記事の処理を分けてRSSで召集するのが早いってことですかね? エンジニアの方が書いてるブログがありましたが、処理を分けるのはかなり難しいとありました。
やはり画像がないサイトとは提携しないのが良いのでしょうか… 知恵袋の回答者さんが答えてくれたコードは自分でも考えついたのですが、
<php
if(empty($first_img)) $first_img = "/images/default.jpg";
?>
結局<span class="thumbnail2"> <img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" /> </span> <php endif; ?>
このphp endifまでで1番が一括りになってるので途中で画像に別のサムネイルをつけるという処理をオプションでつけられません。
おそらくA(サムネイル画像)or B(サムネイルがなく1番目の画像を使ったもの) or C(A & Bに当てはまらない画像がそもそもないもの) に分類されて。
endifまでにif文でAに属するもの→Bに属するもの→3番目の処理をendifのあとに書くのではないかと思ってます。 >>41
> handtype関数はコンピュータの手(int型)にも利用するので
> 引数はint型にしたんですが…
逆にそっちをstrにキャストすればいいだけでは?(string)rand(0,2)
intキャストしたところでintvalと結果は同じだから>>38の問題はなおらないよ
適当なの入力してグーになるのは想定してない文字を入力するお前が悪い!
ってなら別にそれでもいいけど普通はバグとみなされる >>43
functions.phpはそう言う垂れ流しコードを書く場所じゃないってこと
それでも敢えて書くなら、まずHTML取り払って、ブロックを波括弧で統一して、流れを追えるようにする >>45
define('NO_IMAGE', '/images/default.jpg');
include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('https://adgene.net/feed/');
if (!is_wp_error($rss)) {
$maxitems = $rss->get_item_quantity(2);
$rss_items = $rss->get_items(0, $maxitems);
}
if (!empty($maxitems)) {
if ($maxitems == 0) {
echo 'データがありませんでした.' . '<br>';
} else {
foreach ($rss_items as $item) {
echo $item->get_date('Y.m.d') . '<br>';
echo $item->get_permalink() . '<br>';
$first_img = '';
if (preg_match('/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches)) {
$first_img = $matches[1];
} else {
$first_img = NO_IMAGE;
}
echo esc_attr($first_img) . '<br>';
echo $item->get_permalink() . '<br>';
echo $item->get_title() . '<br>';
}
}
} >>49
訂正確認させてもらいました。ありがとうございます。ただ自分が目指すのはあくまでhtmlで形にすることですので、これだと実用できません。どうすればよいのでしょうか? https://yugiou.me/
作成中のサイトはアダルトサンプルサイトです。 中身はもともとサンプルサイトだったのですが、アニメサイトに変える予定です。 >>52にも指摘されているけど、自分で出来ないなら仕事としてメンテナンスや改修を依頼するなど
した方が良いと思う
もしあなたがその立場だとしたら仕事が出来ないという事を伝えた方がいい >>51
ここから自分の理想の左に画像右に抜粋表示の形に持っていくのは非常に困難なので依頼を出すかプラグインを購入します。
コードを考えて教えてくださりありがとうございます。 >>51
>これだと実用できません。どうすればよいのでしょうか?
echoしてる箇所箇所に自分で好きなタグ差し込めばいいだろ?
あなたがどんなタグ使うかどんなclassで装飾するかなんて誰もわかんよ
>>56
>非常に困難なので
仮にこれでhtml出力できてもfunctions.phpの使い方が間違ってるから次は「任意のタイミング出力したいですがどうすれば」とか言い出すのが目に見えてる
金で解決が正解、お疲れ様 >>51
>ただ自分が目指すのはあくまでhtmlで形にすることですので
別のファイルにモジュール化して、
HTML で、その関数を使えば?
例えば、Ruby on Rails では、
ヘルパー用のファイルに、自分でヘルパー関数を定義すると、
自動的に読み込まれて、定義したヘルパー関数を、HTML 内で使えるようになる WordPressの話でRails出してくる奴って頭おかしいだろwwww まあそいつはこの板でトップクラスに有名な頭のおかしい奴だからな もう一点質問があるのですが、個別ページをプラグインで表示している場合 検索欄を設置しても検索結果は改造前のデザインが表示されてしまいます。
wordpressで検索欄とプラグインで作った個別ページを結びつけることは可能でしょうか? また質問させて下さい
郵便番号から住所を検索して表示するアプリを本に従って作っているのですが、
GETで得た値を途中でint型にキャストする理由が分かりません
文字列で送られてくるのだからそのままでいいと思うのですが…
コードは以下です
https://pastebin.com/ERrUf4Ga >>63
初心者向けだからってそんな酷い本あるの?
おそらく$_GET['zip']に変な文字入れられても
とりあえずintにキャストしておけば無害化できるとか
そんな安直な思考やってるんだろうけど
こんなやり方はバグの温床になるだけ
ちゃんとバリデーションすべきだね >>63
キャストする理由が無いのでその本がおかしい
そのコードはintにキャストした後、文字列結合する為にすぐstringにキャストされてる
さらに言うと0から始まる郵便番号をintにキャストすると0埋めが消えるのでただのバグにしからならない
例えば北海道北区の郵便番号 '001-0000' をintにキャストすると 1 になって最終的にこうなる
https://zipcloud.ibsnet.co.jp/api/search?zipcode=1 答えてくれた方、ありがとうございます
>>64
バリデーションの項目は、後のページに記述されているみたいです
>>65
それは困りますね…
>>66
これだけでクソ本かを判断してもらいたくないですが、
MdNコーポレーションの本です >>67
コード見たけど紛れもない糞本
PHPってほんとロクな本がないから、他の言語の基礎がない人がいきなりPHPやると罠にハマりやすい
他の人も書いてる通り、安易な型キャストはバグや脆弱性の元になるから絶対にやったら駄目
具体例として有名なのは以下のWordPressの脆弱性
https://blog.tokumaru.org/2017/02/wordpress-4.7.1-Privilege-Escalation.html >>68
警告をしてくれたことには感謝します
ですが俺はこの本は(入門本としては)悪い本だとは思わないので
しばらく続けようと思います >>69
人のアドバイス無視して、自己流でやるなら質問なんかするな
全部そうじゃねぇか
せめて自分で検証して、フィードバックぐらいしろアホ 俺はPHPも好きだからあんま悪くは書きたくないが、まぁPHPerが馬鹿にされる理由がこういうレスから何となく分かるのは確か
他の言語の経験がない初学者だからこそ、「型」みたいな「基礎的な概念」の理解が大事なんだがな
PHPの本人はマジでウンコだらけだよ
公式のPHPマニュアルの出来は素晴らしいが >>69
所詮は入門本だから深く考えずにその本の通りにやって良いと思うよ
ただその本を読んでて >>63 の時のように「あれ?」って思ったら本の解説が悪かったのかもしれないから、今回のように改めて聞くなり調べたほうがいいと思う >>70
いえ、アドバイスを無視はしてません
全て自己流でやるつもりもありません
ただ本に関しては、お金を出して買ったものですし、
俺のフィーリングとはマッチするので、勉強をストップはしないというだけです
>>72
ありがとうございます
辛口ですね
>>73
とても寛容な方ですね
ありがとうございます 本の誤りに気付けるようになれば後は独学出来そうだよな
スレの質問に回答する側になる日も近いぞ jquearyをword pressで使いたくても準備の段階でいつも躓くんですよね
環境の設定がうまくいかない、どこを調べてもサポートが載ってない エラーをiniで調べてもわからない。
結局JavascriptとPHPで作らないといけない。
JavascriptやPHPで勉強する為にはまず自分のやりたいことを調べる→コードを見つける→加えたいコードについて調べる→加える部分の文法を調べる→文法に合わせて加えたいコードを変える
これでいいのでしょうか? >>76
それじゃすぐに行き詰まって挫折するか、進めたとしてもコピペで切り貼りしないとプログラムが書けない最底辺のプログラマになりそう。
基本的な文法や流れを入門書で一通り学んでから作りたいものを作ることに取りかかった方がいいと思うよ。 自分の分析ではhttps://designsupplyweb.com/media/knowledgeside/5563/
のように。
<php if( 条件A ): ?>
<!-- 条件Aの処理 -->=サムネイルを取得する方法?
<php endif; ?>
<!-- 条件Bの処理 -->=サムネイルがない場合、記事の1番目の画像を取得する方法?
つまり
<php endif; ?>
</a>
<div class="cell medium-79">
<a class="name21" href="<php echo $item->get_permalink(); ?>">
<php echo $item->get_title();// タイトル ?>
</a>
と書くことでパーマリンクとタイトルの抜粋を取得しているのではないかと考えました。
先ほどご回答いただいたRSSについて少し理解ができました。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13242533143 ifより下にサムネイルを取得する方法(A)
else?より下にサムネイルがない場合1番目の画像パーマリンクタイトルを取得する方法(B)
endifより下にサムネイル(A)、記事の1番目の画像がない場合(B)の取得方法(C)
こういう風な書き方だと考えました。 >>76
Ruby on Rails なんて、未経験者1年ぐらいで、10年以上のプロよりも上!
WSL2, Docker Compose, Node.js, Bootstrap, CircleCI、データベース、
VSCode(拡張機能・Remote WSL, Remote Container)
さらに、YouTube のKENTA のサロンでは、
AWS Fargate, React, Vue.js
KENTA が教育革命を起こした >>81
こいつスレ違いの指摘無視して書き込んで印象悪いから、こいつの宣伝する奴は絶対見ない どうしても最後に1件だけ教えてもらいたいことがあります。
<php
$first_img = '';
if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi',
$item->get_content(), $matches )
) { $first_img = $matches[1]; } ?>
<php
if(!empty($first_img)) $first_img = "/images/default.jpg";
?>
<span class="thumbnail2">
<img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" />
</span>
<php endif; ?> if文としては下記の記述方法だけです。
1.
if (条件式)
実行する文;
2.
if (条件式) {
実行する文ブロック
}
3,
if (条件式):
実行する文ブロック
endif;
エラーの内容は
if (empty($first_img)) $first_img = "/images/default.jpg";で構文は完結しているのに、
<span class="thumbnail2">
<img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" />
</span>
<php endif; ?> 同じ内容の構文を二度書いているのかというものでした。
ここからは持論ですが、<span></span>の前に<php if>と付け加えることで<php endif; ?>のエラーは起きず、
サムネイルがない場合の処理は正常に機能するのではないかと考えました。 サムネイルがある場合の処理は
<php
$first_img = '';
if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi',
$item->get_content(), $matches )
) { $first_img = $matches[1]; } ?> で完結してます。
<php
if(empty($first_img)) $first_img = "/images/default.jpg";
?> でサムネイルがない場合の画像の表示は成功してます。
<span class="thumbnail2">
<img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" />
</span>
<php endif; ?>は <php endif; ?>が構文重複を起こしているため削除すると、
以下のサムネイルがない場合のパーマリンク、タイトルの処理が無効になります。
<span class="thumbnail2">
<img class="heit6" src="<php echo esc_attr( $first_img ); ?>" alt="" />
</span>
<php endif; ?>
</a>
<div class="cell medium-79">
<a class="name21" href="<php echo $item->get_permalink(); ?>">
<php echo $item->get_title();// タイトル ?>
</a>
</div></div><!-- 記事中の1枚目の画像を取得終了-->
<php endforeach; ?>
</div>
<php endif; ?> 今回で最後にします。連投すみません。どうしてもコードを調べてスキルアップしたく、ご質問しました。 >>87
teratailにマルチポストとか、たしかにクレクレスキルレベルアップだなw >>87
だから自分でブロック追えるようになるまでHTMLタグ除去していきなって
それでコード追えたら望みの処理加えてタグ戻すだけだろ?
初心者がろくに手も動かさずにあれこれ推測したって1mmもスキルアップしないよ >>90
つまりPHPの処理を書いてからhtmlは後付けしなさいということでしょうか? >>91
そうだよ! >>48 >>49
また実用できませんとかぬかす様ならもう諦めて >>81
に書いたけど、Ruby on Rails では、
未経験者が1年ぐらいで、10年以上のプロよりも、技術力が上になる!
それは、KENTA も言ってるように、Rails の教育体制があるから
Rails 6 だけでも数冊の本が出る。
他にも、Rails ガイド・Rails チュートリアルなど
一方、WordPress では、まともな本が無い。
デザインの本ばかりで、プログラミングする本が無い
教育体制がないから、勉強もできない。
だからKENTAも、PHP は、やる必要がないと言ってる
ちなみに、WordPressのスレは、web制作管理板の方にある。
このスレよりも、そちらで聞いた方がよい >>85
if (条件式)
実行する文;
この1. のif は、挙動が怪しい。
endif が無いのか、構文が次へ続くのか、はっきりしない
素人は、使わない方がよい。
バグるだけ アホー知恵遅れにこんな質問があったが、このスレの奴じゃね?w
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11242758436
テラテイルでプログラミングのわからないところを質問すると高確率でもう批判されます。
知恵袋民は親切で優しいのに何故テラテイルは尖った人が多いのでしょうか? ああいうサイトは話し方に注力する必要があって中身が薄っぺらい
回答者の口調がキモくなるばかりw https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13242533143
アドバイス コード修正をいただいて無事コードを作成できました!
とても勉強になりましたし、構文を知れべて自分でつくりながらアドバイスをもらっていけば、コードの修正は可能だと思いました。
セキュリティ等は素人なためプラグインのみの対策になると思います。 複数回の質問は迷惑をおかけしましたが、もう少しおだやかにお願いします。 >>98
本当に勉強になったのか?
リンク先を流し読みしかしてないけど、回答者から正解をもらって、そのままやればいいところを理解不足のために勝手な改編をして回答者のアドバイスを無視する形になって、そのままごちゃごちゃやってるうちに結果的に動いたというだけでないの? 一番アドバイスしてきた身としては少々残念ではあるがこれはもうダメだな >>100
はい、勉強になりました。アドバイスを自分なりに調べてそのあとコードにしました。
コードも1つ1つ丁寧に調べました。 PHP8の参考書っていまのところこの3冊くらいだけ?
初心者からちゃんとしたプロになる PHP基礎入門〈PHP8対応〉
2021/3/2
独習PHP 第4版
2021/6/14
スラスラわかるPHP 第2版
2021/6/21
独習買うかぁ。。 ひょっとしてJavaスレに居た手帳持ちの基地外か? 最近のteratailひどいと思います。
Yahoo!知恵袋だと丁寧に教えてくれますが、teratailを見るとコードを盗もうとしてるとしか思えません。
1つ1つ調べていけば誰だってコードをほぼ完成まで書けるはず。
それを少し指摘して、コードを盗む気満々じゃないですか。 >>108
君のコードのどこに盗む価値があると思ってるんだ? >>109
数年前の回答率と比べても教える人が減っているのは明らか
それに回答の正確さも落ちている、どう見てもひどいです。 >>111
もらったお薬はちゃんと飲もうね。深呼吸してスレタイ読もう。読めるかな? >>110
自分と同じことを過去に書いている方が5〜6人いましたがどれも解決していない。
それに閲覧数に比べて回答が少なすぎる >>113
どんな質問か知らんが、解決しないのは解決に足るだけの意味のある情報を質問者が提示できてないケースが大半だろう。
閲覧数にたいして回答者数が少ないのも同じ理由。解決に必要な情報が足りてないか、もっとひどい場合には、質問の内容からこいつは話の通じない奴と思われて、相手にされてないんだろう。 >>114
ありがとうございます。今後わからない時はこのスレを利用させてもらいます。 質問の意味が分からないとか、
漠然とした事・抽象的な事を質問してるとか、
要点だけを聞かずに、関係のない部分も含めているとか。
数行のコードで済むはずなのに、10行以上書いてる香具師とかいる
要点と関係ない部分を、書いてはいけない
たいていは質問者が悪い。
具体的で、要点だけを聞くべき >>118
この板で最も要領を得ないレスを繰り返すお前が何を言ってるんだか ここは質問スレです
質問以外(回答も含む)書いてはいけません >>106
どれも変わらん。どれか一冊買って使い倒すのが良かろう。
例えば、あのphpの本あかんから別のphp本買うってなったら
もうその人はphp使える人では無くなる。
このままでは、↓のスレ主みたいな事になるぞ。
そうなってしまうと、あなたはものすごく不幸にだろう。
https://medaka.5ch.net/test/read.cgi/dame/1617355161/
他人の不幸で飯が旨いって言うけど
いくら何でも限度があるわ。
そうならない事を切に願う・・・ >>122
回答だけ書けよ
関係ないスレへのリンク貼るな あのさぁ・・・
俺が聞きたかったことは
「PHP7対応の書籍が他にある?」かであって、
どれがいいかなんて聞いてない
ハァ〜〜〜〜〜〜(クソデカため息)
話が通じない人間って、
ホンッット、人の話を聞かないよな >>124
おまえは自分の質問内容も理解できてないのか? どうしてこんなになるまで放っておいたんだ!
三 三三
/;:"ゝ 三三 f;:二iュ 三三三
三 _ゞ::.ニ! ,..'´ ̄`ヽノン
/.;: .:}^( <;:::::i:::::::.::: :}:} 三三
〈::::.´ .:;.へに)二/.::i :::::::,.イ ト ヽ__
,へ;:ヾ-、ll__/.:::::、:::::f=ー'==、`ー->>123,124
. 〈::ミ/;;;iー゙ii====:::::::.` Y ̄ ̄ ̄,.シ'=llー一'";;;ド'
};;;};;;;;! ̄ll ̄ ̄:::::::::.ヽ\-‐'"´ ̄ ̄ll 恐れ入ります。。
下記実装で悩んでおりまして、、
一度ログイン認証に成功したユーザーについて、そのユーザーがどのページに遷移しても
ユーザーIDのようなものをページのURLにくっつける仕組みを考えております
何か良い案はありますでしょうか?
お知恵拝借したく。。 >>127
結論からいうとURLに入れる必要は全くないし入れるべきではないんだけど
ログイン認証実装で当たり前の知識として
セッションという言葉が出てくるのだけどセッションってわかる? Ruby on Rails では、セッションを使う
本来、HTML のページには連続性が無い・1回限りのものだから、
それを同じ人が連続してアクセスしているように見せる概念を、セッションと言う
セッションでは、このアクセスは、5分前にアクセスしたA さんだよね、と判別できる >>129
Rubyの話はRubyのスレでやろうよ
ここはPHPに関する話をする所だよ >>128
>>129
お二方誠に恐縮です。有り難うございます。
セッションに保持ということですね。
勉強不足でした。
あとは、ユーザーがページに飛ぶごとに
セッションに保持したIDをくっつける、、
ひゃー どうしよ 難しそう URLにユーザーIDのような固有情報埋め込むと
手動で編集されてハッキングされてしまわない? Ruby on Rails では、セッションキーをURL に付けたりしない。
たぶん、フォームの隠しフィールドか何かに入れて、サーバーへ送って確認する
セッションキーは、ブラウザのcookie に入っているから、F12 開発者ツールでも見れる
ログイン・セッションみたいな機能は、自作するものではない。
普通、Rails みたいなフレームワークを使う
フレームワークの最初が、ログイン機能の説明 PHPといいますか
APIは、どのように定義して使うものでしょうか? API自体未経験でして。
コントローラ配下に置く? 定義と、それの引き出し方(利用するときの記述の仕方)が不明でして APIだと返すものがjsonになったりするだけで特に変わりはないです >>131
いや、そんな難しい話じゃないんだけど
セッションに登録した変数をsession_start()した別のページから参照するだけだから
くっつけるっていう発想がおかしい >>131
あとRubyがなんちゃらいってるのは
ほとんど言ってること出鱈目な嵐なんで無視してね >>136
恐れ入ります。ご教授有り難うございました >>137
なるほど、、ちょっと発想が違ったやうです
誠に有り難うございました!! XAMPPのMySQLのAdminをクリックしたら、
Fatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\phpMyAdmin\libraries\classes\OutputBuffering.php on line 171
と表示されてしまいました
どう対処すればよいでしょうか?
色々検索してみたのですがいまいちよく分かりませんでした UNIXtimeを数値に変換したいのですが
どのようにすれば、、
情けない質問でスミマセン そんくらい調べたらどうなんだい…?
php unixtimeで調べればマニュアルのtime関数にたどり着くでしょう?
んでこいつの返り値はintって書いてるんだからこいつが正解よ
数値がfloatさすなら参考関数のmicrotime関数辿ってみればこいつだなぁってのがわかる unixtimeってもともと数値じゃない?なんか勘違いしてるんじゃ >>146
var_dump($_SERVER['REQUEST_TIME']);
もしくは
var_dump(time());
と書いて実行
聞く前にまずは試そうな 恐れ入ります。。マイグレーションにて
あるカラムに
$table = integer('uniq_id')->length(20)
にしたのに、このカラムの桁数が何故か11で
各レコードごとに入れている値が
何故か全部2147483647がセットされていた
なにをどうやっても、この値のまま
update文にセットする直前の値は
想定通りの値なのに、、 スミマセン。自己解決しました。
登録しようとしてた数値が全部デカイ
ものばかりで、オーバーフローになって
それを表示してただけでした。
お恥ずかしい intだからであってbigint等にすればもっと大きな値を扱えるのでは? 5/20、エンジニアチャンネル・粟島
これからプログラミングをやる人が絶対に学んではいけない技術
https://www.youtube.com/watch?v=UVZGY69h7Lk
Word Press がオワコンと認定されますた!
Word Pressから、ヘッドレスCMS の時代へ Word Press Headless でググれないガイジと言う自己紹介か Nodejs AWSは絶望したけどPHP さくらインターネットはすんなりできたわ。 type hintingを自動で入れてくれるIDEか
コマンドラインから使えるライブラリってありませんか?
公文チェッカーでtype hintingを指摘されるんですけど
毎回自分で記述するのが面倒なのです 昔大学の卒業研究でPHPでデータベースを扱う感じのプログラムを組みました
周りの人全員がMYSQL等のRDBMSを使っていたので、ちょっと違うことをしてみようかなとRDBMSではなく、テキストデータベース…CSVファイルを分割して表にして扱う感じにしました
CSVでもリレーショナルデータベースは作成できるし、わざわざMYSQLと連携しなくても使えます
それぞれのデータを配列に格納すれば、追加や削除等もできます
MYSQL等は専門的な知識がある人しか触れませんが、CSVの場合はただのテキストデータなので文字が打てる人なら誰でも編集可能です
なのにPHP等でデータベースを組むときにほぼ100パーセントRDBMSが使われる理由は何故でしょうか
CSVデータベースより勝ってる所はなんでしょうか?
CSVをforeachとexplodeで配列に格納してarray_searchやarray_spliceその他の配列操作で検索したり削除したりってしてはだめなのでしょうか?
ってこれだとデータベースの質問になってる…? 規模によるとしか言えないが
何百万、何千万レコードになると配列操作とかメモリが足りなくなるか
うまくメモリ管理した上でやっても爆遅で現実的に使い物にならずデータの管理も大変
MySQLは設定が大変なあなたのために組み込みのSQLiteが用意されてるのでそれを使ってください
SELECT文で高度な選択するときに長ったらしく難しそうなSQL書く場合はあるけど
素人が編集ってSQLでもINSERT文、UPDATE文ぐらいのもんだし
(これらでもサブクエリでSELECT文書いたりするかもしれないが必須ってわけではない)
専門的な知識が要求されるほど難しい操作じゃない
そもそもそんな素人にSQLを直接書かせて実行させるようなことはまずしない
CMSでよく見られるようにそういう人向けに玄人が管理画面(UI)を提供すべき >>157
なるほど、小規模ならどちらでもあまり変わらない
大規模になるとCSVなんかでやってると使い物にならなくなる
って感じなんですね
ありがとうございました >>156
排他制御を自前実装するのがめんどくさいから 規模によるというのは誤解を招く表現だったね
まず小規模であってもインデックスされたRDBのほうが動作は格段に早い
キャッシュ使えばだいぶましになるだろうが
CSVは基本的に都度ファイルの内容を全部読み込む必要があるってのは恐ろしいこと
データが壊れないようトランザクションやらデッドロック回避するための処理も自分で書かないといけない
探せば誰か作ってるのかもしれないけどおとなしくRDB使ったほうが得策 偶然10年ほど前の卒業研究のプログラムを見つけたから質問してみたのですが、なるほど…
もしかしてflock関数でCSVファイルをロックするだけでは不十分でしたか? ブロック崩しを作成しようと思い、サイトを見ながら作っているのですが、上手くいかなくどうしようもなくなったので、ご教授いただけると幸いです。
ブロック崩しは、2人で行えるようバーを二つ設置し、「Excel Gamer 」を参考にバーを二つにし、ブロック数を525、横幅を500縦を450に設定しました。
現在はCrossPoint.X = (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1)でオーバーフローが発生し、直しようがなくなりました・・・
お力を貸していただけると幸いです。 xamppで環境作って勉強したいんだけど
windowsとmacってどっちのほうが使いやすい?
ノートPC買うんで迷ってる PC初心者ならWindowsの方が分かりやすい気がする
XAMPPは普通にインストールするだけで動くので楽
(勿論XAMPP Controll Panelを起動してApacheや必要ならMySQLのサービスはStartさせないと動かないが) >>156
DB は2分探索だから、計算量がO(log N)
ある行を探す際、線形探索なら千行は千回だけど、
2分探索なら、2^10 = 1,024 だから、10回で探索できる
その代わり、インデックスが必要。
DBは、探すのに特化してる Windows 10 Home, WSL2, Linux, Docker,
VSCode(拡張機能・Remote WSL, Remote Container)もある。
Windows Home版でも、Dockerを使えるようになった。
でもプリインストールなら、Pro版は5千円ほど
WSL2 はハイパーバイザーで、本物のLinux サーバーが動く。
ただし、CUI のみ。GUI は無い
CPU は、i-7 みたいに仮想支援機構が必要。
Docker を使うから、メモリは最低でも、16GB は欲しい。
32GBの方が良いけど
Ruby on Rails とかWeb系は普通、Mac で32GB は欲しい。
Vagrant・仮想OS で、Linux, Dockerを使う
Railsで、Windowsで教える学校はない。
10万円の東京フリーランスでも、Macのみ
ただし、最近のMacは、CPU がインテルじゃないらしいから、よく分からないので調べて phpやるためにノートPC買うような物好きでもないなら
本来の目的に合わせて購入すればいい 初心者のうちは情報量の多い方を選ぶのがベター
ぶっちゃけデザイナーならまだしもプログラマーがMac選ぶメリットなんて無い しかし、ドライブ毎にカレントがある環境って使いにくいぞ 初歩的な質問で大変恐縮ですが、
eloquentを使う際
例えば
test1::with(test2)
といった形で書いた場合
両者のモデルを結合するにあたり、両者の
主キー同士で暗黙的に結合される認識で
良いでしょうか??
inner joinとかのように明示的に
on test1.id = test2.idのように書かれていないために不安になりまして。。 >>173
スレチ。laravelスレに行くと良いよ
まぁ、その前にドキュメント読んだほうが良さそうだけど Ruby on Rails のassociation では、
1人の著者は、複数の本を書いている
Author
has_many :books
Book
belongs_to :author
これで、1:多。
デフォルトのキー名、id 同士が結ばれる 相手すると喜ぶからまたバカなこといってんなって思いつつスルーが正解デス たった5〜6人の仲間でも熱い展開はあるのに
その仲間の輪が極限にまで広がった全員救われ、全員幸せになる完全無欠の大団円エンドは
誰も体験したことがないようなすさまじいカタルシスなんだよ 要はすごいんだよ!
俺はその物語の最強の中心メンバーのこの世界の主人公で、宇宙二位の人気者で
宇宙最強の存在なのだ
皆がキャラ覚醒やヒーロー覚醒していく物語 一番好きな自分になれる物語だ 比較演算子についてなんですが、
!=と<>は全く同じ意味だと捉えてもいいでしょうか?
本には、自動型変換した上で異なる場合にtrue、と書かれています 同じ
初期のころ他言語からの移行者向けに色々書き方用意した名残だと思うが
<>は化石なので!=を使ったほうがいいと思う >>182
そうなんですね
ありがとうございました >>181
!= や <> は型変換するから
!== を使おう
JavaScriptでも一緒 >>184
ありがとうございます
本にもそう書いてありました 何でもかんでも===等で書くやつはそれはそれでどうかと思う tlintってあるんですね
使ったことありますか? 宜しくお願いします
↓の分の最後の?が何でしょうか、ワイルドカードの仲間でしょうか
INSERT INTO テーブル名 SET カラム名=?
--------------------------
例:
$message = $_POST['message'];
if (strlen($message) >= 1 && strlen($message) <= 200) {
$statement = $db->prepare('INSERT INTO posts SET message=?');
$statement->execute(array($_POST['message']));
echo '投稿を送信しました';
} else {
echo '投稿エラー: 200文字以内で入力してください';
} ? は、place holder。
それを使わないと、SQL インジェクションされるから危険
例えば、文字列を連結させて、クエリー文を作っていると、
「1=1 or テーブル削除文」みたいに、関係のない文も入れてくる
?を使うと、そういう危険な文をエラーにしてくれる >>186
著名なプロジェクトの大半で、「ゆるい比較はなるべく使うな」ってのがコーディング規約になってるけどねぇ ワイの会社では緩比較を使う理由をコメントに入れておけば許すことにしてる >>194
コメント必須なら間違いは起きにくいかもね preg_match関数は、エラーの時にnullを返すことってあるのでしょうか?
本にそのように書いてありました…
PHPマニュアルによると、原則としてエラーの時はfalseを返すが、
時にfalse相当の別の値を返すこともありうると書いてありました マッチしたら 1
しなかったら 0
エラーの場合 false
エラーかどうかを判定するために
if (!preg_match(...))
なんてことをするとエラーじゃないがマッチしない場合も正として評価されると言うことかと
nullの話は本が間違ってるか、または第三引数に入ってくる値のことかも $_POST['checked'] === 'true'
$_POST['checked'] === '1'
$_POST['checked'] == true
$_POST['checked'] == 1
$_POST['checked'] === 'on' >>198
やはり誤植のようです
ありがとうございました データベースに接続する時についてなんですが、
PDOオブジェクトをインスタンス化する際の第一引数(DSN)では、
文字コードを指定しなくても特に問題ないでしょうか?
本には、
$dbh = new PDO('mysql:host=localhost;dbname=sample_db', (以下略));
と書いてあります >>201
サーバとクライアントの間で適切な文字コードを設定しないと意図しない挙動を引き起こすことがある
結果として、SQLインジェクションができる場合も
`SET NAMES utf8`とかやるのはダメな例 初歩的な質問ですいません。
WordPressである変数の値をリンク先の別のファイルでも使いたいのですが、うまく取得できません。どういうキーワードでググったらいいのか教えて下さい。一番簡単な方法がいいです。よろしくお願いします。 >>202
回答ありがとうございます
… new PDO('mysql:host=localhost;dbname=sample_db;charset=utf8mb4', …);
とした方がいいですか? さくらインターネットサーバー契約してターミナルで繋いでVimでプログラミングしているんですが
vscodeとかでプログラミングするにはどういうふうな開発環境を整えたらいいんでしょうか mysqli_fetch_assocの質問なのですが"もう存在しない"場合はnullを返す、との事ですが"始めから一行も存在しない"場合でもやはりnullを返すのでしょうか?
自分で試せればいいのですがdbの設計はまだ手をつけてない分野ですのでお聞きしたいです >>206
拡張機能からSFTP入れてみてはどうか >>206
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
Ruby on Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース
Docker Composeまでが初心者用コース
普通はMac で、メモリは32GB以上。
ただし、新しいCPU に変わったから、よくわからない
Windows 10 Pro版, WSL2, Linux, Dockerなら、
メモリは16GB以上で、32GBが推奨
Dockerを使うから、メモリ8GBじゃ足らない
Udemy の山浦清透も、サロンをやってるかも知れない。
PHP の本も出してる、たにぐちまことも有名 直接本番のphpプログラムをいじってるのが良くないんだな
デプロイとか本番用と開発用の環境作るとかが必要なんやな >>206
https://code.visualstudio.com/docs/languages/php
マケプレから自分にとって最適な拡張機能を入手出来るかはわからないが
vim使いならうまくカスタマイズ出来るじゃろう Ruby on Rails で良ければ、Docker, CircleCI まで含めた動画ある
Udemy の山浦清透、1/15
Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース
https://www.youtube.com/watch?v=lZD1MIHwMBY
Windows 10 Home版, WSL2, Ubuntu 20.04 LTS,
Docker Compose, VSCode, Heroku, Rails, Git, CI/CD, CircleCI xamppよりもdockerの方がナウいんでしょうか 個人でwebアプリ作るなら、PHP+フレームワーク一択? 全然一択じゃないと思うけど、なんで一択だと思ったんだ >>217
単純に小さいWEBアプリをレンタルサーバで公開するのにいいと思ったから
あと、スマホアプリのwebapiをphpで作ってもらった Zend→CakePHP→Laravelに代わったように、
フレームワークの移り変わりが一定周期でありますが、
その時に作っていたプログラムはどうなりますか?
なかったことにして、新しいFWで作り直すんですか?
車輪の再発明をFWが出るたびに行っているように感じますが
皆さんはどうしてるか気になります。 作りっぱなしでほっとくんだよ
改修が必要であれば金貰って改修する
ただし責任は取らない >>216
以下のスレに書いた
ぶっちゃけ始めるのにいい言語て何 part5
https://mevius.5ch.net/test/read.cgi/tech/1622766330/120-121
Udemy の山浦清透も、PHP・Laravel のおすすめ本は無いと言ってる。
一方、Rails なら、Railsチュートリアル、黒田努の本とか、教育体制が優れている
だから、KENTA も、Railsを推奨してる
優れた教育体制が無いと、効率的に勉強できない。
ドラゴン桜・予備校などと同じ こいつの相手すると怒られるけど
PHPのおすすめ本はある >>223
相手するなよ、と脊髄反射しそうになったけど
キチガイの間違いを正すのは大切だな 自前でサーバー立てるのとさくらインターネット使うのとAWSとherokuでどれがいんすか PHPで掲示板サイト作ったんだけどアドセンス落ちた…一応ある程度の書き込みもあるのになんでだろ、ちなみに低俗な内容ではない、もっと人集めんと行かんのかね セキュリティーが危険とか?
PHP と言えば、セキュリティーが危ないイメージ >>226
今どき自宅サーバなんかしなくていいよw
月額500円未満で借りられるVPSがあるから、それ使うのがお勧め
レンタルサーバを使うのだけはやめとけ
あんなもん使っても何の勉強にもならんから >>230
頭悪そう
PHPのコード書けない人でしょ? あーなんだ、こいつRubyガイジかw
相手にしてスマン PHPの勉強がしたい→ローカル
店の宣伝をしたい→レンタルサーバ〜
店の予約管理をしたい・小規模な販売、売上管理をしたい→VPS〜
Webサービスを提供したい・スマホアプリのバックエンド→クラウド 以下PHPの2処理があります。
1.CSVアップロードフォームからユーザー操作でアップロードされる
場合によっては同一ファイルを更新する目的でアップロードされるときもある
move_uploaded_fileを使用
2.何かしらのトリガーでCSVを読み込んで処理する(書き込みはしない)
この1.2.の処理は何かの決まりを守って順番に実行されるわけではなく、
1.の処理はユーザー操作で不定期に実行されます。
2.の処理は該当ファイルが無ければ実行しませんし、トリガー発行がなければやはり実行しません。
ここで質問ですが、1.2.の処理が同時に実行される可能性があると思いますが、この場合問題が発生するでしょうか?
move_uploaded_fileを使う1.の処理中はファイルがロックされているようですが、2.では読み取りエラーの
処理を強化するだけでいいでしょうか?
よろしくお願いします。 DBUnitがとうの昔に使えなくなっていたことにようやく気付いたのだけど、
これ使わないでDB周りのテストってどうやるん? >>220ですが、結局は新しいフレームワーク使う時は
車輪の再発明になろうが一から作り直すってことでいいですか? 同じシステムをフレームワーク変えてまで作り直したりは普通しない
>>221も言ってるけど基本作ったら作りっぱなし
セキュリティに問題があって修正パッチ当てる必要があるとかでない限り
保守は必要最低限にとどめたものになる >>238
いえ、過去に作ったものの保守ではなく、これから作るものについてです。
例えば、お問い合せフォームとか会員管理とか
どの言語・フレームワーク使おうが必要な機能ってありますよね?
そういうライブラリであったりプラグインであったりを、
フレームワーク毎にまた作るのか?って質問です。 テンプレート(view)の変数名を変える作業を車輪の再発明とは言わない フレームワーク変えるわけですから
変数変える程度で済まないのではないかと 気づけばプロ並みPHPはゴミ
徳丸先生協力って書いてあったから一緒に本作ったのかと思ったら大間違いw 俺もアマゾンレビューでの評価が高かったいきなりはじめるPHPを買ったが、
なんか合わなかった 本のノリが嫌い
載っている情報も古い
エディタはテラパッドを使っているし、echoでなくprintを使っている お昼時にゴメンナサイ、よろしくお願いいたします
PHPのバージョンを 5.6.40 から 7.3.27 に上げたら↓がエラーするようになりました
【PHP文】
ループ
$hage[$id][0]=$row[name];
$hage[$id][1]=$row[age];
$id++;
ループ終わり
【エラーメッセージ】
arse error: syntax error, unexpected ',', expecting ']' in /home/xxxx >>244
nameとageをクオーテーションで囲う >>241
そんな大げさな話じゃないだろう
書き方が違うだけでやることは同じなんだから
やろうと思えば自分でマイグレーション用スクリプトだって書けるでしょ >>235
同期用ファイルでも作って、
それを2つの処理で、mutex みたいに使って排他処理すれば?
mutexは1つだけあって、2つの処理の内、mutexを獲得できるのは、常に1つの処理だけ >>246
マイグレーションにしても、CakeとLaravelで大きく違うし、
CRUDの書き方も違うのに、変数変える程度で済むとは意外です。
というか、変換プログラムみたいなのを作るなら
車輪の再発明と言っても良いんじゃないですか? 自分で作ってたものをFWに合わせて作りなおすってのはただの改良
PHPのバージョンアップに合わせて動かなくなったコードを書き直すのと全く同じこと
ていうか車輪の再発明が嫌そうなのに自分で作る前提がそもそもおかしいのでは
探せばあるでしょうに いえ、嫌かどうかじゃなくて、みなさんはどうしてるのか気になるのです。
PHPのバージョンが変わるから書き換えるのと、
フレームワークが変わるから作り直すのでは明らかに手間が違うわけで、
同じような作業をまたやるという行為が、プログラマとして正しいのか知りたいだけです。 手間の問題じゃなくて
そうしないと動かないからそうするという話であって
それを車輪の再発明とは言わない
移行先で前のものがそのまま使えるような場合もあるだろうけど
そうでない場合は使えないのだから作り直すのは当たり前 わかりました。つまり、作り直すのが一般的(普通)という受け取り方で良いわけですね。
自分もそうなので、他の人はどうしているか気になりましたが
別におかしなことではないと知って安心しました。 wordpressのogpに関する出力ですが
$ogp_type = ( is_front_page() || is_home() ) ? 'website' : 'article';
フロントページやホームでなければ○○だと思うのですが
「?」が何をしているかわからないのと、
2つの文字列がコロンで繋がれているのがわかりません。
動かして見ると articleが出力されています。 わかりました。
三項演算子というものですね、生まれて始めて見ました。 三項演算子は見慣れないと読みづらいけど別にPHP固有でもないし、
早めに慣れておくのが吉 if使った方が感覚的にわかりやすいのですが、
あえて三項演算子を使う理由は1行で済む以外にメリットはありますか? const HOST = 'localhost';
echo $HOST;
自学の為一纏めにしたいのですが上記のソースですとHOSTにnoticeが出てしまいます
調べたのですがconstを使う方法が乗ってるサイトにこれ以上の情報が無かったのでお聞きしたいです >>259
ちょっと慣れれば、シンプルなケースでは三項演算子も感覚的にif文より見やすくて分かりやすくなる。
ケースバイケース。 >>261
ありがとうございます。
やはり慣れですね >>259
その「一行で済む」ってのが最大のメリットだろうね
for(;@$i++<100;)echo$i%3?!$$i=$i:@Fizz,$i%5?@$$i:@Buzz,'
';
みたいに書ける
これは8系じゃ動かないけどw
>>260
変なサイト見てないでマニュアル嫁
https://www.php.net/manual/ja/language.oop5.constants.php
ただ、やりたいことと違うんじゃないかなぁ 5ch のバグ。
URL などを投稿すると、; が付いたりする
5chの書き込みには、表示を変えるような特殊な命令があったりして、
それを解析する箇所に、バグがあるのだろう 三項演算子は条件次第で$varが変化するような場合には使っていいけど
それ以外のことやelseifが入る場合は使わないほうがいい
改行駆使して読みやすくする手法もあるがそんなことするなら普通にかけばいいし
読みづらいコードは保守の妨げになったりバグうむ原因になる 教えてください。
<?php
print("接続開始");
pg_connect("user=pet930 password=h17174422");
# if($dbconn == false){
# print("<p>接続失敗</p>");
#
# }
print("<html><p>接続成功</p></html>");
?>
なんか、pg_connect()で止まっちゃってるみたいで、「接続成功」の表示まで行けません。
pg_connect()でエラーメッセージ吐いてくれないんで原因が解らないです。
何処が悪いとエスパーできますか?
よろしくお願いします。 >>267
$dbconn = pg_connect("user=pet930 password=h17174422"); pgsql使ったことないからわからないけど
host port dbnameまでパラメーターちゃんと入れてみたら?
あとPHPの設定やバージョンがどうなのかわからんけど
error_reporting(E_ALL);を先頭に追加してエラーメッセージ出るようになるかどうか確認する
本当にpg_connectが原因なのか判断するには
pg_connect(略) or die("接続失敗");に変えるのがてっとり早いと思うけど >>270
PHPのバージョンは807です。
ありがとです。
ちょっと試してみます。 >>270
設定を調べてみます。
でも、かなり勉強になりました、エラー設定とかDieとか知りませんでした。
5chにコード書き込めないみたいですが、pg_connect()以降は表示されなかったです。
設定関係調べてきます。 phpinfo()でpostgresqlのセクションがありませんでした。
正常ならセクションが有るらしいので、調べてみます。
情報が豊富なphp7系にするべきかなぁ; https://www.php.net/manual/ja/pgsql.installation.php
ソースからなら上記みたいにインストールが必要かもしれないし
なんかのパッケージ使ってるならphp.iniに
;extension=pgsql
っていうラインがあれば先頭の;取り払ってみるだけで使えるかもしれない
将来pdoも使うだろうからついでに
;extension=pdo_pgsql
も有効にしといたほうがいいかもね >>274
ありがとうございます!!
リンク先読みました。
Apacheのhpd.confに、LoadFile "C:\Program Files\PostgreSQL\13\bin\libpq.dll"を書き足してphpinfo()に、postgresql反映されました。
助かりましたorz >>274
pg_connect()も、無事動いて、想定どうりスクリプトが動きました。
お世話になりました〜 >>277
手探りでPDO認識できました。
今はPDOで書くべきですよね。ありがとです。 何度も失礼します!
iframe先にPOTしたいのですが、飛ばせてないみたいです。
検索したら、これで動くのが一般的みたいですが…
<iframe src="http://localhost/frame.php" id="frame_1"></iframe>
<form method="post" target="frame_1" action="http://localhost/frame.php" id="edit_form">
<input type="hidden" name="id" value="3">
<input type="button" value="追記">
</form>
frame.phpには、
sleep("2");
print("page2_post".$_POST["id"]);
と、書いて待っているのですが、ボタンを押してもifram側に何もしていない様子です。
検索先を何度も調べたのですが…
よろしくお願いしますorz >>279
id="frame_1" > name="frame_1"
余談だがsleepの引数はintだから " いらない >>280
ありがとうございます!
しかし、修正しましたが、動きませんでした…
アパッチの設定見てきます。
>引数はintだから”要らない
ありがとです。 すいませんでした。
<input type="button" …> のbuttonをsubmitに変更したら動きました!
ありがとうございました! データベースを扱う際の例外処理で、本に、
…
} catch (PDOException $e) {
echo "エラー:" . htmlspecialchars($e->getMessage(), …) . "<br>";
exit;
} // 一部改変
とあったのですが、$e->getMessage()を無害化する必要性がよく分かりません
ここはPHP製作者の側で用意した文字列が表示されるのではないでしょうか? >>283
そうだよ、無害化する意味ない。
さらに言うと、エンドユーザーにシステムがそのまま出力するメッセージを見せるとかありえないから、あくまで開発者向けのデバッグ用という意図で書かれているんだろうけど、それを無害化する意味も分からない。 >>283
メッセージの内容によっては外部入力が表示される可能性があるので、htmlspecialchars でエスケープすることは必要
ただし、そもそも出力するの?ってところは、ちゃんと考える必要がある >>284
>>285
回答ありがとうございます
>>284
>あくまで開発者向けのデバッグ用という意図で書かれているんだろうけど
はい、そのように書かれています 本番ではこの部分は削除しろと
>>285
上に書いたように、本番環境では削除すると思います
外部入力が表示されるのって、例えばどういう場合でしょうか? >>286
ごめん。出力って言ってるのはブラウザ出力ね
logに出すのが適当だと思うので、その場合はエスケープの必要はもちろん無い >>286
ユーザ入力を含むSQLが部分的に表示されることはよくある >>287
>>288
分かりました
少しでも外部入力が反映される可能性があったら必ずエスケープなんですね〜
ありがとうございました 少しずつしゃべりたいことが違う優しい人が集まることで、
最終的に>>283が狂った理解をしてしまった例。 >>290
あっ、狂った理解なんかしてないんで
本当そういうレス大丈夫なんで たぶん間違って理解してるよ。いろいろと。
発達障害って言われてるでしょ。 >>283=Brというマ板に巣食っていた荒らしが正体隠して名無しで書きこんでいる よろしくお願いします
PHP+Mysqlのサイトで会員ページへのログイン管理をセッションIDでやっていたのですが、ログイン後のURLの「ID=1234」を書き換えれば別の会員ページが見えてしまいます
そこでログイン後にセッション開放をしたのですが、今度は会員ページを見るたびにID&パスワードを入力する必要があり窮屈です
今後の改善策として↓どれがオススメですか?
【パターン1】
・パラメーターを非表示にする(できな?)
【パターン2】
・cookieにセッションIDを保存
【パターン3】
・その他 >>295
【パターン3】
ちゃんとsessionの仕組みを学習する
多分、根本から認識が間違っている パラメーターを非表示にするっていうかセッション使ってるのにURLに入れたりしない
cookieにセッションIDを保存ってPHPのセッションを設定いじらず普通に使ってれば最初からそういう風になってる
んまー>>296の通りね >>296
>>297
セッションを使ってるのにURLのパラメーターなんていらないですね、失礼しました >>298
いやそうではなく、296も書いてる通り根本的にセッションに対する認識が間違ってる
セッション自体は、クッキーでもURLパラメータでもどっちでも扱える
URLのパラメータを書き換えられるのと同様に、クッキーの中身もユーザーが任意で書き換えられるのだから、
> ログイン後のURLの「ID=1234」を書き換えれば別の会員ページが見えてしまいます
のであれば、根本的に作り方がおかしい
理解してないととんでもない事になるぞw >>299
セッションID漏洩 で検索すると沢山ヒットしますね
気を付けます PHPをダウンロードしたいんですがfor windowsのページが接続できません。
Windowsサポートが終了するからなくなったんでしょうか? 度々失礼します。
クラスにどんな名前をつけても、クラス名が重複している種のエラーが出てしまいます。
>Cannot declare class file_test\unkotinntin, because the name is already
namespaceを設定してみても変わらないのですが、どうしたら良いのか。
よろしくお願いします。 >>304
絶対重複しないとキレたのが仇に…
変えます! >Fatal error: Cannot declare class file_test\Onsensyoujo, because the name is already
ダメ元で変えてみましたが、やっぱりダメでした… すいませんでした。
解決しそうです
ファイル読み込みを
index.php ← vm_test.php
↑
file_test.php ↑
って具合にしてしまいました。
vmからfileの読み込みを止めれば大丈夫みたいです。orz そのようなことをしてもRubyがPHPにとって変わることなど有り得ませんよ 自分の親よりも上の人間がロリアダルトゲー好きなんて気持ち悪い 川端康成は毛も生えていない少女を夜通し抱くというテーマで堂々と小説書いてるぞ 教科書に載るような有能な人は良いと思うの(ダブルスタンダード) 1記事につき1つずつ最新のコメントを5つ表示させたいのですが、同じ記事の最新コメントがダブって表示されます。
1記事につき1つずつの条件をついかする場合どうすればよいのでしょうか?
調べたのですが、わかりませんでした。
https://codepen.io/sadsfff/pen/XWMwWbe
該当のphpはこちらです。 記事にIDをつけてその特定の記事から最新コメントを5件取得する方法はあったのですが、
全部の記事から最新5件 各記事から1つ限定で取得する方法がわからなかったのですが。 とあるページを作っていて指定されたIDの情報をDBから引っ張ってきたいのですが動きません1つ1つ検証していって恐らくここに原因がある事は突き止めたんですが何が間違ってるのかが分かりません、、、ご教授お願いしたいです
"SELECT id,name,age,ext
FROM sample
WHERE id = " . $id . ""); よく見たら色々PHPの構文おかしいじゃん
"SELECT id,name,age,ext
FROM sample
WHERE id = {$id}";
とかな >>316
文字列の結合でSQL書いてる時点で俺的にはNG >>317
すいません、mysqli_queryの()の後ろの方が入り込んでしまいました
>>319
無知で申し訳ないのですがどのような方法を取るのがベストなのでしょうか? >>316
319も指摘しているけど、こんな事をやってるからSQLインジェクションが起こる
「PDO プリペアドステートメント」でググろう
ついでに「SQLインジェクション」についても勉強しとこう >>321
PDOに限定する必要はないけど、PDOならこんな感じ
https://www.php.net/manual/ja/pdo.prepare.php
>>323
そんなことはない。多分、mysql_queryと勘違いしている 本なんかを見ながらやってるなら
そのうちプリペアドステートメントは出てくるし余計なお世話かなと思って書かなかったけど
$idが適切な処理をされてるなら
無理してプリペアドステートメントを使う必要はない 皆さんありがとうございます
購入した教材の通りに進めていて練習問題の所で詰まっていたのですがもう少し色々な方面から勉強します… ま、一番の問題は
エラー出てるならそれを書いてくれないと答えようがないってことだね SQLインジェクションはほぼ阻止できる、
文字列をいちいち引用符で囲む必要ないから文法エラーも激減、
SQL構文の解析が減るのでオーバーヘッドも減少と、
プリペアドステートメントを使わない言い訳をするほうが難しい <dt class="imgcomment"><a class="commentheight" href="<はてな= $url はてな>"><はてな= $imgはてな></a></dt>
画像の高さをCSSで指定できないのでphpに直接数値を入れたいのですが、どうすればよいのでしょうか? だめですわ効きません
wordpressの仕様でimg.attachment-post-thumbnail.size-post-thumbnail.wp-post-imageと勝手にクラスが付与されてます。
おそらくphp事態にクラスを付与してないため一色単にされてます。 $img = get_the_post_thumbnail($pid , array('class' => 'myClass'));
構文的におかしいかもしれませんがクラス指定できました。
https://memocarilog.info/wordpress/6529
wordpressより独自クラスをつける方法より。 WordPressはWordpressスレでどうぞ Word Press のスレは、web制作管理板にある
そこで聞いて >>336
そこで聞いてもPHPは教えてくれませんもん この板には、Word Press を知ってる人は、いないかも >>341
rssフィードはurlオブジェクト?の一部ってことじゃないんですか? Ruby なら、RSS 用のモジュールがある
https://docs.ruby-lang.org/ja/latest/library/rss.html
1. RSS 1.0をパースした場合は RSS::RDF オブジェクト
2. RSS 0.9x/2.0をパースした場合は RSS::Rss オブジェクト
3. Atom をパースした場合は RSS::Atom::Feed オブジェクト
3つの形式を抽象化して、同時に扱えるモジュールも、たぶん誰かが作っている
基本、こういうものを自分で作ってはいけない。
車輪の再発明は、低品質で、製作・保守コストが高いから、ダメ phpって数年使ってなかったが8でだいぶ書き方変わったんだな 3つのページから構成されているサイトを作成しているのですが、
スーパーグローバル変数$_POST['hoge']の内容をうまく送信できません
1つ目のページの入力フォームで受け取ったデータは、
2つ目のページで受け取り利用できるのですが、そのデータを3つ目のページに
うまく送信できません
<inpu type="hidden" name="hoge" value="$_POST['hoge']">
としましたがダメでした
どう対処したらよいでしょうか? >>348
LaravelとかCodeIgnitor使ってるの? feedを取ってくる場合、simplexmlとcurlのどちらがいいのでしょうか?
複数サイトになります。 >>348
html中に変数を埋め込む時は{}を使いましょうという基本的なことをやらないと
つうか最近エラー内容かかないの流行ってんか >>351
curlは使わないのでしょうか?
複数サイトの場合はcurlのほうがいいと聞いたのです。 >>353
curl使った所でどうせsimplexml_load_stringに食わせるんでしょ?
だったら最初からsimplexml_load_fileでいいじゃない 複数サイトの場合はcurlがいいってのはcurlを子プロセスとして複数同時に動かせるからってことじゃないの?
いずれにしても、curlがやってくれるのはhtmlを取ってきてくれるまで、よ? 例えば、Ruby でも、普通に書くと、
open-uri モジュールのopen でファイルを取得する
require 'open-uri'
require 'nokogiri'
url = "https://example.com/"
doc = Nokogiri::HTML( open( url ) )
elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
これを、外部コマンドのcurl に書き換える事もできるが、
外部コマンド(プロセス)を呼ぶ必要がない
html = `curl https://example.com/`
doc = Nokogiri::HTML( html )
外部コマンドは、OS に左右される
特に、Windows では、curl.exe なのか、
PowerShell のcurl(curlモドキ)なのか、
アプリごとに微妙に挙動が異なるかも
(そもそもシステムに、Windowsを使うこと自体が間違いだけど。
すべての言語は、Linux用だから) >>354
simplexmlだと複数対応出来ないと思ってました。
なしでやってみるです
>>355
並列処理云々と聞きました。
詳しくは分かりませんが、、、。 >>349
>>352
回答ありがとうございます
>>349
使ってないです
>>352
失礼しました 3ページ目で、$_POST['hoge']、という文字列が表示されてしまいます
{}をつけて、<(略) value="{$_POST['hoge']}"としてみましたがダメでした(上と同様に文字列が表示されてしまいます) >>358
value="<?php echo $_POST['hoge']; ?>" >>359
$_POST[]はphpのタグで囲わないといけないんですね
ありがとうございました ローカルホストで練習中にphpmyadminでSQLにWHERE文をつけ忘れupdateして全データが更新されてしまいました。
本番でやったら恐ろしい事だと思うんですが、ロールバックのやり方等あったら教えてもらえませんか。
一応ターミナルでログインしてROLLBACK;はしましたが戻らなかったです。 バックアップを取っておけば?
snap shot とか >>360
いやいや…
>>352はhtmlをechoしてるのかと思ってそう答えたんだけど
$_POST関係なくPHPの変数をHTMLテンプレートに書く時はそうなるよ
ショートタグも調べてみるといい >>361
ロールバックはトランザクション開始してないとできないから
begin(トランザクション開始)してから書いて
updateしたらselectで確認したのちに問題があればrollback
問題がなければcommitする
つうかphp関係ないで… >>364
分かりました
何となくそんな気はしてました
ありがとうございました >>362,363,365
色々アドバイスありがとうございます。
全部試してみますね。トランザクションやオートコミット、snap shot等知らなかったので勉強になりました。 >>357
たしかに curl_multi_init() で初期化してからの一連の流れで複数の通信を非同期実行できるから、
それを「使いこなせば」、直列的に複数のサイトからデータ取得するよりは圧倒的に速くはなる
使いこなせば…ね >>368
どうも
とりあえずsimplexmlでやるdeath simplexmlloadfileで取得したxmlなんですが、見やすいように整形出来ないでしょうか?非常に見づらいです。
var_dumpを使用しています。
$url_arr = ["http://blog.livedoor.jp/dqnplus/index.rdf","http://jin115.com/index.rdf"];
foreach($url_arr as $url){
$xml_elm = simplexml_load_file($url);
var_dump($xml_elm);
} >>370
var_dump($xml_elm);
までやってるのに自分で解決できないなら、それはもう「PHPの書き方自体がわかってない」って事じゃんw
とりあえず
$xml_elm を foreach() で回せ
foreachの対象は配列だけじゃない >>371
$xml_elmをforで回すということは、自分でhtmlなりで整形しないとだめってことですかね
サクッと構造わかりやすく表示してくれればよかったんですが >>372
print_r($xml_elm);
そういえば前にも似た感じの質問してた人いたが同一人物?
もし同一人物なら諦めた方がいいぞ
スキップできない人が100M走のオリンピック選手目指してるレベル Ruby では、
p obj で、オブジェクトの中身を表示できる。
pp obj で、きれいに表示できる
PHP には、pretty print みたいな機能が無いの? >>374
print_rで見やすくはならないのですが
xmlの階層構造を知りたいのです 条件分岐して
$user_id = $comment->comment_author; (投稿に名前を入力された場合)
$user_id = empty($comment->user_id) ? "default" : $comment->user_id; (投稿に名前を入力せずにコメントが投稿された場合)
に分岐させる場合、
if foreach でどう構文を書けばよいのでしょうか? >>379
// 最初にこうやってデフォルト値で初期化して
$user_id = 'default';
// こうすればいいだけでは?
if (!empty($comment->comment_author)) {
$user_id = $comment->comment_author;
} elseif (!empty($comment->user_id)) {
$user_id = $comment->user_id;
}
三項演算子は便利だけど、こういう質問をしている段階で無理して使わなくていい
この質問でなぜ foreach がいきなり出てくるのかは理解不能w 名無しで投稿したいのに
ログイン済みだからってわざわざ身バレさせてあげるってことか?
鬼畜やな >>380
勉強になりました。ありがとうございます。
実装できました! すみません調べてもわからなかったことがあるんですが、
$date = get_comment_date( 'Y/n/d', $comment->comment_ID);
<span class="my_author"><= $date ></span>
で日付けを取得してるんですが (Y/n/d)と出力したい場合どうすればいいんでしょうか?
日付けを()でくくる方法をネットで調べたんですがどうしてもわかりません... そういうフォーマットが無いなら、
$date の前後に、文字列を連結して、( ) を付ければ?
それか、それを関数化して使うとか $date = get_comment_date('(Y/n/d)', $comment->comment_ID);
でよいのでは? 日付扱うなら nesbot/carbon が楽だよ >>384
>>385
大かっこ中かっこみたいに連結できるんですね、勉強になりました。
ありがとうございます。 VBで二限一次方程式のツール作るとしたら使う文法教えてくれ >>389
ありがとうございます!
きっとあの変人も喜んでいます! 古いwordpressで徐々にレスポンシブ対応ページに変更しているのですが、
特定のurl(ドメイン/news/, ドメイン/blog/・・・など増加予定)の場合というifを作って
echoでレスポンシブのcssを出力したいです。
IPアドレスなどでレスポンシブ用cssを出すのはすでに実現しています。
$url = esc_url($_SERVER['REQUEST_URI']);
複数のURIの中からマッチさせたいです。
足していくので改行を使った配列を使うのが良いのか、strpos, strstrを使えば良いのか
どのような判定をすればいいでしょうか?
$responsive_url = array(
/news/,
/blog/
};
if(判定する関数($url, $responsive_url)){
echo "cssを出す処理";
}
みたいな感じになるのでしょうか >>391
実際に書いてみればいいじゃん
PHPはスクリプト言語なんだから、悩んでる暇があったら書いた方が早い
https://paiza.io/projects/2BR9QkERR6BrplG1Ym3P0w
上記の例ではテストのために $uri の値を固定しているが
本番環境なら
$uri = getenv('REQUEST_URI');
を使えばいい
こういう実行環境をローカルに用意できてないなら、先にそっちを何とかした方がいいぞ
スクリプト言語のメリットが全く活かせてないから >>391
urlからディレクトリ名抽出してその名前のファイル名.cssをCSSファイルとすればそこまで色々悩む必要は無い気がする >>392-393
ありがとう、paizaというものがあるのね。
すごい便利でびっくり
そう、実はローカル環境が無くて、公開している本番サイトをちょっと触ったら白くなって慌てて戻してとかダメダメなやり方してる
ローカル環境作らないとダメよね。
https://paiza.io/projects/37-EQNMdOt_AlBtXvaS0bQ
やってみたけど出来ていそうで上手くいかないorz
true, falseのところが間違っているのかな
フラグ用の変数を設けて、自宅用の固定IPか、レスポンシブ用のURIならcssを追記するってことなんだけど
無条件にcssが付加されてしまう 入力項目の中で生年月日が入力されてなかったらdb側の生年月日にはnullを入れるシステムがどうしても作れなくてアイディアに詰まってるので助けてください
data型でdefault nullで作ってます table create文をここに書いて
実際にデータをinsertするときの文も
>入力されてなかったら...nullを入れる
ここに落とし穴がありそう めちゃくちゃ素人質問で申し訳ないんですけど入力された値が数値では無い場合と指定文字数じゃない場合にエラーを出したいんですけどどこが間違ってますでしょうか?
if(!is_numeric($_POST['te']) ||
!mb_strlen($_POST['te'])==8){
$err ='正しい数値を入力して下さい';
} >>399
$errはどこかでechoするんですよね? >>399
is_numericとmb_strlenを一緒に使っているが、$_POSTに入力されるのは全角、半角どちらを期待しているのか?
半角ならばstrlen使うべきだし、全角ならis_numericではなくpreg_matchなどで処理する必要がある
解決方法としては、一旦$_POSTを変数に入れて全角か半角どちらか必要な方に統一した後、然るべき処理を行うのがよいと思われる >>400
そうですね、その予定です!
>>401
ありがとうございます
1つずつ確認してみます >>399
要件を整理すると「特定の範囲内の数値を正とする」ってことだと思うので、filter_input()使うのが楽だと思う >>394
strpos()で「〜を含む」という処理を書きたいならこう書くこと
※理由はPHPマニュアルに書いてある筈
×:strpos($now_url, $res_url)
○:strpos($now_url, $res_url) !== false
極めつけはこれ
×:$match_responsive = true
○:$match_responsive ==== TRUE
$match_responsiveに true を入れてるのだから、結果は常に真になるぞ? >>399
>>402
色々間違ってる
・$_POST['te'] が null(未定義) だった場合にそのコードはエラーになる(もしエラーにならないならエラー設定を見直すこと)
・半角数字の入力を期待しているのだから、使うのは mb_strlen() ではなく strlen()
・書くなら !mb_strlen($_POST['te']) == 8 ではなくて mb_strlen($_POST['te']) !== 8
・== ではなく === で問題なく動くコードを書くくせを付けた方がいい
・省略しただけかもしれないが、$err をきちんと初期化しよう
以上を修正したサンプル
https://paiza.io/projects/9C1pkzuMh9Q3ao3M7q6pCA
エラー設定のやり方
https://qiita.com/fallout/items/31f793708b243033fab1 >>405訂正
×:$match_responsive ==== TRUE
○:$match_responsive === true //ここにメイン部分のコードを記述 ループしないので <php if (have_posts()) : the_post(); >
<!--クラスつきのタイトルを追加-->
<h3><php the_title(); ></h3>
<!--クラスつきの日付けを追加-->
<div class="posted_date">
<php echo get_the_date(); ?> </div>
<!--リンククラス付きのカテゴリーを追加-->
<php
$categories = get_the_category();
if ( $categories ) {
echo '<ul>';
foreach ( $categories as $category ) {
echo '<li class="cat2"'.$category->slug.'"><a href="'.esc_url(get_category_link($category->term_id)).'">'.$category->name.'</a></li>';
}
echo '</ul>';
} ?>
<!--リンククラス付きのコメント数を追加-->
<php $num_comments = get_comments_number();
if ( $num_comments == 0 ) {
$comments = __('No Comments'); // 댓글이 없을 경우
} elseif ( $num_comments > 1 ) {
$comments = $num_comments . __(' Comments'); // 댓글이 2개 이상일 경우
} else {
$comments = __('1 Comment'); // 댓글이 1개일 경우
}
$write_comments = '<span class="singlecomments2"><a href="' . get_comments_link() .'">'. $comments.'</a></span>';
echo $write_comments;?>
<!--クラス付きの内容を追加-->
<div class="posted_content">
<php echo the_content(); > </div>
<php
endif;?> で出力してるんですが<!--クラス付きの内容を追加-->の部分のみ繰り返し出力する場合どうすればいいんでしょうか? 暇つぶしに過去作っていたプログラムを改修していたのですが、
関数ばかりのライブラリが、わりと使い勝って良くて軽量だったりします。
セキュリティを考慮すること無く、CRUD程度の操作なら
フレームワーク使わなくても良いと思ったりしたのですが、
みなさんはやっぱり自作の物は使わないようにしてますか? Ruby のERB(埋め込みRuby)みたいに、
文字列をつなげて、HTML を作るのではなく、
逆に、HTML中に、Rubyの式を埋め込めば?
<%= 〜 %> は出力される。
<% 〜 %> は出力されない
<table border="1" cellpadding="4">
<% @items.each do |fruit, price| %>
<tr>
<th><%= fruit %></th>
<td><%= price %>円</td>
</tr>
<% end %>
</table> >>395,405
ありがとう、代入はダメね全然気付かなかった。
strposも位置を数字で返すのね。
あるあるなミスなようで俺もミスってしまった。
期待通りに動くようになりました。 >>409
自分がずっとメンテするものなら使うし
そうではないなら、将来自分が面倒くさい事にならないようになるべく使わない
プログラマなんか楽してなんぼ 趣味・遊びなら、好きにすればよい
プロ・仕事なら、Ruby on Rails 本当のプロならPHPのスレで他の言語を推したりしないw
本当のプロならRuby(笑)なんて採用しないw <php $args = array('posts_per_page' => 2,
'orderby' => 'date',);$posts_array = get_posts( $args );if (!empty($posts)):>
<php foreach($posts_array as $post):setup_postdata($posts_array);>
<a href="<php echo get_permalink();>"><div class="img-wrap">
画像
<php if ( has_post_thumbnail()){
//存在
the_post_thumbnail();}
else {
//存在しない
echo '<img src="noimage.jpg">';}></div>
タイトル
<h2><php the_title(); ></h2>
日付け
<php the_time('Y/m/d');>
カテゴリー
<php $categories = get_the_category();if ( $categories ) {echo '<ul>';
foreach ( $categories as $category ) {echo '<li class="cat1"'.$category->slug.'"><a href="'.esc_url(get_category_link($category->term_id)).'">'.$category->name.'</a></li>';}
echo '</ul>';}>
コメント数
<php $num_comments = get_comments_number();if ( $num_comments == 0 ) {$comments = __('No Comments');
} elseif ( $num_comments > 1 ) {$comments = $num_comments . __(' Comments'); } else {$comments = __('1 Comment');
$write_comments = '<span class="singlecomments"><a href="' . get_comments_link() .'">'. $comments.'</a></span>';echo $write_comments;>
コメントの抜粋
<php the_excerpt();>
記事を読む
<a href="<php the_permalink();>">記事を読む</a> <php endforeach;>
<php else:>
<div class="newarrival_nodata"><p>記事</p></div>
<php endif;wp_reset_postdata();>
ページナビを実装したいんですが、$nextpostと$prevpostを使って2ページ目を表示させる場合どういうコードを書けばよいのでしょうか? >>418
ナビに関係ないコードばかりだし
ブロックに波括弧とコロンが混在してて見づらいし
$nextpostと$prevpostを使ってとか言いながら、$nextpostと$prevpostがそもそもコード内に存在しないし
質問の仕方が悪い >>419
コードに付けたいんですが文字数制限があって書けないんです…
code penを見ていただけるなら書きますが… https://codepen.io/sadsfff/pen/bGWeOOo
このコードを書くとエラーが出ます。どこが間違っているのでしょうか?
syntax error, unexpected end of file, expecting elseif (T_ELSEIF) or else (T_ELSE) or endif (T_ENDIF) >>410
に書いたみたいに、HTML 内に、PHP の構文を埋め込めば?
逆に、PHPで文字列をつなげて、HTMLを作ると分かりにくい
Ruby on Rails では、全部そう。
HTML内に、Rubyの式を埋め込む
<%= 〜 %> は、HTMLに出力される。
<% 〜 %> は出力されない
Rubyで文字列をつなげて、HTMLを作らない
なぜかと言うと、パーシャル・部分テンプレートにして、
その部分だけを別ファイルにして切り出せないから
それに文字列でつなげて、HTMLを作ると、
SQL インジェクションみたいに、
相手が情報を抜くような命令を入れてくるので、超危険!
だから、Railsでは、a.html.erb みたいに、
ERB(埋め込みRuby)で書いて、それをHTMLにする >>421
そもそも動かないコードとかさぁ
仮にナビができたとしても動かないじゃん
エラーの内容IFのタグの問題だよね
タグが合わないのはRSSの時に、タグ統一して不要な部分一旦コメントするなりして流れを追えって言われたよね?
何も進歩してないな、やれやれ… >>423
元のコードが動いていて、ページ要素を加えるために$next postを加えたときにエラーが起きました
タグを統一って具体的にどこでしょうか? >>424
if やら foreach やらのブロック開始終了タグが波括弧だったりコロンだったりってのを直していくってことね
wordpress触る以上埋め込みが混在するコードを追う能力は必須になるから、この程度のこと自力で解決できないならwordpress触るの諦めたほうがいいよ Web制作管理板のWordPress のスレで、やってるみたい
5ch ではマルチポストは禁止だから、このスレでは話を続けない方がよい。
向こうのスレで議論してください!
1つのスレだけにしないと、答える人も同じ事を調べたりするので、無駄 >>5ch ではマルチポストは禁止
いつそんなこと決まったんだ? >>430
それとはマルチポストの意味が違う
それに禁止されてるわけではない 同じ質問を至るところでして、回答者がいても返信すらしないというのはよくある事
書き捨てする様な質問には誰も答えないし、迷惑千万 俺はヒールに徹するルビー君が結構好きだったんだけど
常識を語るようになったら終わりだね 原因が少しわかりました
get_posts()は取得した投稿データを配列として返すのに対し、WP_Queryクラスを利用した場合は、データベース検索の条件やその結果がデータとして保持されるため、ループ内での条件分岐など、より高度なサブループの制御が可能です。
昨日書いたコードは$args = array()を2度分けて書いていたこと、
$posts_array = get_posts( $args );で投稿内容の取得をしているのに対し、
$the_query = new WP_Query( $args );でページナビの内容を取得しているので、
ひもずけされておらずページ番号と内容がマッチしておらず2ページ目をクリックしても内容のリロードができてませんでした。
一つ聞きたいのは、
WP_Queryとget_postsの違いは何でしょうか?
投稿内容をページナビ付きで表示する場合WP_Query() get_thumnailとかで投稿画像など取得できるのでしょうか? WordPress の質問ですか?
WordPressの事なら、Web制作管理板のWordPressのスレに書き込んでください!
5ch はマルチポスト禁止だから、
同じ質問を、複数のスレに書くのは禁止!
このスレではなく、WordPressのスレの方で聞く方がよい アップロードされた画像をconstで定義されてるパス先に移動させたいんですが上手く出来ないので教えてください
move_uploaded_file($upload_file['tmp_name'],DIR_IMG.$new_file_name);
DIR_IMGには相対パスが入ってます('../img/など) そもそもアップロードされたファイルなのかどうか
is_uploaded_file()でチェック出来る
そうじゃないならrename()使え
その相対パスあってる?
realpath()で確認してみる
相対パスがあってたとして、パーミッションチェックした? $fruits = array(
'banana' => 'yellow',
'apple' => 'red',
);
$coffee = 'cocacolla:geogia';
function morning($fruits,$coffee) {
$fruits['strawberry'] = 'red';
$coffee = 'suntory=boss';
return $fruits;
}
$fruits = morning($fruits,$coffee);
var_dump($morning);
echo '<br>'.$coffee;
?>
すいません。
phpでは、他の言語のように、関数外で定義された変数も
関数内では有効ではないのですね。。
で、関数外で定義された変数は、引数で受け取り、
returnで返すと、有効になることもわかりました。
=という認識であっていますか?
では、更新したい変数が2つあった場合どのようにすればいいでしょうか?
たとえば、上でいうところの$coffeeを更新したいのです。 訂正::すいません。
×var_dump($morning);
〇var_dump($fruits); グローバル変数なら別にスコープ関係無い筈だがそれ前提は設計的にどうかと思うので
以下の方法のどちらかを使う方が良いだろう
参照で渡す
function test(&$a) {
$aへの代入は関数で渡した変数に及ぶ
別にreturnする必要は無い
}
複数の結果をリターンする
function test2()
{
return [1,2];
}
list($a,$b) = test();
$aと$bに結果が入る よくわかりました。
関数外に変数を定義したからといって、
global変数になるわけじゃないんですね。
ありがとございました。
参照渡しか、global変数の定義か、どちらかでやっていきます。 Ruby も珍しく、厳格な関数スコープ。
関数外の変数を、関数内で参照できない
引数渡しか、クラス・モジュール化して使うなどする >>441
その質問には超能力者しか答えられない
とりあえず、以下を参考にエラーを出力させよう
https://qiita.com/fallout/items/31f793708b243033fab1
次に、そのエラー内容をきちんと読もう
中学レベルの英語力で読めるので
そのエラーを読んでも意味が理解できないなら、エラー内容を転載して質問
俺らはエスパーじゃないw >>443
なんとなく設計がよくない気がする
$fruits、$coffeeは、別々の関数で処理させて、returnはそれぞれ1つの方がよいと思う
無理にまとめると関数の独立性を損ねるし、それに参照渡しもlist関数も直感的でなく可読性が落ちる >>449
妙にしっくりきます。
長年ソフトボールに慣れ親しんで、
野球も似たようなもんだろ。って参加したら
両者の違いにやっと気づいて、苦悶する状態w 指定画像を出力したうえでメニューを作りたい
<php
header('Content-Type: image/jpg');
readfile('uploads/2021/07/7mgpH3K.jpg');
>
で画像の取得はできたのですが、
html文を続けて出力するとエラー
php文を続けても画像しか表示されません。
おそらく器しかなく受け皿のhtmlがないので画像ファイルとして認識されてしまっているのが原因だと思います。
<php
header('Content-Type: image/jpg');
readfile('wp-content/uploads/2021/07/7mgpH3K.jpg');
>
のあとに続けて画像 画像 メニュー 画像とへっだーナビ風に<table>にしたい場合どうすればよいでしょうか? 画像が画面いっぱいに表示されるということは別のファイルに出力するということですかね、
複数表示してcssを付与するのはどうすればよいのでしょうか? htmlの中にtable出力、その中でimg要素をsrc属性を付けて複数指定する。ブラウザはsrc属性付きのimgのイメージを自動的に読み込む。 >>455
すみません、過去の質問を頼りに画像出力について検索したのですが、https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1344620588
PHPで画像データを読み込んで出力する場合は、IMGタグを
<IMG src="ooo.php?img=gazou.png">
PHPは
if($_GET['img']){
print file_get_contents($_GET['img']);
exit();
}
のようにします。
とありますが、<img src="img.php?img=uploads/2021/07/7mgpH3K.jpg">で
img.phpの中のuploads/2021/07/7mgpH3K.jpgを出力するとしても画像が出力できません。
何が原因でしょうか? >>456
スラッシュをエスケープするにしてもその書き方は任意のパス名を受け入れるから危険だよ。 >>457
画像を呼び出す場合<img src="/header_image.php">のようにphpスクリプトを呼び出して、そのphpスクリプトが画像データを返すようにすべきです。
と言われたのですがほかに方法はあるのでしょうか? <img src="img.php?img=uploads/2021/07/7mgpH3K.jpg">
じゃなくて、
<img src="uploads/2021/07/7mgpH3K.jpg">
じゃないの?
まあでも、ユーザーから送られたものを、チェック無しに、そのまま使うのは危険!
そこに、色々なファイルパス・命令などを入れてくる >>459 >>460
ユーザーからおくられたものではなく自身のサイトのサーバーに置いた画像を指定して任意の場所に表示させ、メニューを作りたいんですがその場合
<img src="uploads/2021/07/7mgpH3K.jpg">でいいのでしょうか?
<table>にして画像 画像 メニュー メニュー 画像としたいんですが、phpを使わなければならないと勝手に認識してるんですが HTMLでアクセス可能なPathなら、だが
ハッキングされそうで怖いな そもそもアップロード先フォルダだとしてそれをそのまま公開するのは頭がおかしい
PHP以前の問題
本来ならアップロードした時点でファイルを調べて、それでOKであれば
(例えばちゃんと画像ファイルなのかどうか等)
公開フォルダへコピーするなりするべきじゃね? セキュリティ的に危ないという理由を教えてください
一度サーバーのフォルダにアップしたものを公開するのは危ないのでしょうか? >>465
セキュリティはちゃんと体系的な知識を身につけたほうが良いですよ
一応アップロード系の用語がそれなりに出てくる記事をリンクしておきます
https://qiita.com/mpyw/items/939964377766a54d4682
記事中の実装は、今となっては古すぎなので参考になりませんが、用語レベルでは網羅されているかと
入り口の記事として読んでください
外部からアクセスできる場所にアクセス・実行できるファイルを一個置かれただけで、かなりのことができるようになります >>453
header関数で画像データを指定してるんだからhtmlが出力されるわけない
何のためにわざわざheaderなんか指定してるのか不明
HTTPヘッダについて調べた方がいい セキュリティーは、膨大な種類ある
だから皆、Ruby on Rails などのフレームワークを使う。
素の言語では、一生やっても作れない
Rails では、サーバーへプロフィール画像をアップロードする、機能がよく出てくる。
画像ファイルの縦横幅の制限、容量の制限、
中身にウイルスがうめこまれていないかチェックするなど、
色々なセキュリティー対策をしないといけない
さらにレスポンシブ対応で、様々なサイズに拡大縮小するなど、
OSS のモジュールを使わないと作れない
一々、自分で作っていては、一生掛かる。
Railsなどのフレームワークの勉強をしていない人は、絶対にシステムを作れない
他にも、マスアサインメント・SQL インジェクションとか、
セキュリティーには膨大な種類ある
だから、PHP のサイトばかり攻撃されるのは、
セキュリティーを知らない人が作っているから、情報を取りやすい 激おこなんていうJK用語をナチュラルに使いこなしているのがすごい アラフォーだけど、使うって感じじゃなくて…
ジェネレーションギャップかも 以前質問させていただいた画像を直接上げてはいけない原因を調べたところ、
誰からもWebサーバを介してファイルにアクセスできないようにしておいて、ファイルの表示はプログラムを使ってアクセス制御をしながら表示する
つまり通常Webで画像を表示する場合、imgのsrc属性に画像が置いてあるURLを指定するというのが一般的だと思います。
しかし、画像を置いてあるURLを指定するというのは、画像を表示するためにはそのURLにアクセスできるということを表しています。
そこで画像をbase64化
画像をHTMLやCSSに埋め込める(直接記入出来る)ようにする為に、画像をbase64にエンコードします
<php $img = base64_encode(file_get_contents('画像URL')); ?>
<img src="data:image/png;base64,<php echo $img; ?>">
参考URL
https://www.tmp1024.com/php-image-showing/
https://9-bb.com/?p=3591
これで大丈夫でしょうか?画像は表示されました。 質問お願いします。
環境はWindows10でXAMPP7.4.21です。
exec('ipconfig', $message);
上記のPHPに、ブラウザからアクセスした場合、$message[1]が
「Windows IP 構成」と、日本語ですが、
Batファイルで、「c:\xampp\php\php.exe d:\www\test.php」で実行した場合、$message[1]が
「Windows IP Configuration」と、英語です。
PHPが5の時はどちらも日本語だったのですが、XAMPPのアップデートでPHPが7になったらこの現象が起きました。
Batの時にも日本語にするためには、なにをしたら良いでしょうか。
どうぞよろしくお願いいたします。 >>463
言ってる意味がおおよそ理解できたのですが。
・暗号化
可逆な存在
=複合することができる
=変換方式が決まっているため、だれでも復元(decode)できる。
可逆な存在といえば「Base64」
エンコード(暗号化)も出来るし、デコード(複合化)もできる。
(でもね、厳密には暗号化=エンコードとは言えないんだよ…)
(詳しくはもう少し下で…)
逆に、不可逆な存在といえば「SHA-1」
こっちは複合化することが出来ない。
画像をハッシュ関数化してそれをもとに画像を表示させる方法がわからないんですが、
phpで可能なんでしょうか? 暗号化と符号化の違いがわからなかった時期が俺にもあったなぁ 質問です。
JSONファイルを読み込もうとしたのですがうまくいきません。
$url = "https://f.irbank.net/files/8700/fy-profit-and-loss.json";
$json = file_get_contents($url);
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$arr = json_decode($json, true); うう…マジか
XAMPPのローカル環境だから上手く行かないのだろうか? 全く読めない
このファイルは、UTF-8 ではない? >>479
レスポンスがbrotliで圧縮されてる
そのままブラウザに出力したいだけならContent-Encodingを設定しておくだけ
header('Content-Encoding: br');
jsonとして読み込みたいならbrotliのエクステンションをインストールしてからデコードした上でjsonにデコードする 1つ聞きたいんですが画像ファイルのセキュリティについてです。
自分の調べた聞いて理解した範囲では画像を<img src="画像URL">で表示するのは、
画像を表示するためにそのURLにアクセスできるので危険
↓
画像をbase64にエンコードします
デコード(複合化)もできるので意味がほぼないです
↓
サイズとMIMEチェックをして画像を表示させる前に、画像ファイルである事を確認する
必要ならサイズやビット深度を変更する
https://teratail.com/questions/350744で聞くと,
ファイルをアップロードするのは「サイト運営側」だけであれば問題ありません。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13246474913で聞くと、
mineチェックとサイズ変更しなさい、
できればアップロード時のファイル名を元のものから変更する、自サイトのページ内に配置された画像としてしかアクセスを禁止するなどしなさい
結局どれが正解なんでしょうか? >>485
どのようなリソースをどのような攻撃から守るかの仕様が提示されない以上正解はありません
セキュリティポリシーやセキュリティ設計から見直してください
実装を決めるのはその後です >>453
>>485
お前のやりたいことはWordpressの管理画面からアップした画像の表示だろ
そんなもんのセキュリティ気にして変換する奴なんていねーよ
つーかWPスレ池 >>487
wordpress以外でも同じでしょ?
それに管理画面からじゃなくフォルダのディレクトリに置いたファイルの話なんで画像限定じゃないですね
phpやcssのファイルでも同様かどうか知りたいです 画像ファイルのアップロードの時のセキュリティはwordpress関係なく同じでしょ >>491
WPインストールしたらアップロード周りのソース全部読んでセキュリティホール無いことを確認するの?
WPで画像表示する時は表示用PHP作ってbase64変換かますの?
そして、アップロードする時は常に気をはるの? >>492
そんなことはしませんが、最低限のセキュリティは同じでしょ?
base64じゃセキュリティにならないからファイルを関数化して複雑なファイル名にする
それプラス最低限のセキュリティ、今回は画像なのでMIMEチェック
もし自分以外のユーザーが画像を上げるなら
自サイトのページ内に配置された画像としてしかアクセスを禁止する
word pressだからセキュリティは要らないっていうのはおかしいでしょ >>493
>>487 を読み返してください
WPが前提、WPのシステムからアップされたメディアファイルの話し
更に言えば、このスレに住み着いてるWPガイジへのレス(アンカー見ればわかるでしょう)で自分で弄ることが前提
そして事の発端は
>>指定画像を出力したうえでメニューを作りたい
だからね?
>そんなことはしませんが
と仰られるように、前のレスの質問にNoと言うことはWPのシステムのセキュリティをある程度信頼してるわけですよね
この件ではそれで十分だろうと言う話ですよ
セキュリティの一般論の話なんてしてませんよ ここはPHPの質問をするスレ
WPの質問なら移動してください Word Press の質問は、web制作管理板のスレの方へ移動してください!
Laravel のスレも、この板に立てている香具師がいる。
Laravelの質問は、WEBプログラミング板の方へ! WPスレにいる者だが絶対こっち来るなよ
ガイジ過ぎて手に負えんわ 質問は>>485であってwordpress関係ないだろ
>>487が勝手にwordpressだって決めつけてる
質問も意味不明だけどね、何を聞きたいのか簡潔にしてほしい
> つーかWPスレ池
お前がいけよw るびースレに行ってもらえば万事解決するんじゃないかな >>458 の質問者は少し前のWPのページネーションの奴だし、そいつは更に前のRSSの奴でもある
ってことでこのスレに住み着いてるWPガイジであることは確定なんですわw
何が気に食わないのか知らんけど残念だったねwww
https://teratail.com/users/homepage-site#question >>493
セキュリティと権限をごっちゃにしてそう >>485
関連レスをザッとだけ読んだけど、スレ回答者の中にもおかしな事を言ってるやつはわりといる
いちいち指摘してたらキリないから割愛するが、スレ回答者の皆が実務経験豊富なプロってわけじゃないからなぁ…
でもお前さんも、自分が「思い込みが激しくて頭が固いタイプ」だって事は自覚しよう
rssの質問のときも、print_r($rss); とするだけで理解できる筈の事を理解できず、質問を繰り返してたでしょ?
だからスレが荒れるんだよ? 分かる? >>485
で、元の質問は>>453でしょ?
画像を出力するコードの中にHTMLを出力すれば、意図した結果にならないのは当たり前
普通は「画像出力専用のPHP」を用意してこうやる
<img src="output_image.php?id=12345">
そして「HTMLを出力するPHP」の中で下記のようにすればいいだけ
<html>
<body>
<img src="output_image.php?id=12345">
</body>
こういう発想ができないのは、頭が固い証拠
どうしても1つのPHPファイルの中で、画像の出力とHTMLの出力とを同時に行いたい場合はこうする
echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('img/abc/123.jpg')) . '">';
要するに、画像(バイナリデータ)をbase64でエンコードし「文字列(テキストデータ)として出力」すればいい(インラインイメージと呼ぶ)
これに「セキュリティ的な意味はほぼない」ので、勘違いしないよう
インラインイメージで画像を出すかどうか?ってだけ
まぁこんな事をやってもメリットなんか無いから、普通は「画像出力専用のPHP」を用意する >>485
>>505に書いたoutput_image.phpの仕様がもし
output_image.php?path=img/abc/123.jpg
のように、画像のパスを渡したらその内容をそのまま表示するとなっていた場合、「パストラバーサル」と呼ばれる脆弱性が発生する危険性がある
例えば、pathの値が「img/../../../secret.txt」だった場合、意図せずsecret.txtの中身が第三者に読まれてしまうって事ね
だから、そうならないようpathの値をしっかりチェックしないといけないのだけど、一連の質問を見ている感じ、あなたにそれを自前でやるのは無理だと思う
なので、「ファイルパスを渡す」のではなく、最初の例のように「画像を識別できるIDを渡す」ようにすればいい
※?path= で値を受け取るPHPをインターネット上に公開し、ログを取ってみるといい
※笑うぐらい攻撃があちこちから飛んでくるのが確認できるから >>485
最後に
アップロード処理が管理者にしかできない = 第三者に変なファイルをアップされる心配がないのであれば、
<img src="img/abc/123.jpg">
で別にええのよw
img/abc/123.jpg というファイルパスを第三者に知られたくないなら、>>505の例のように「間にPHPをかまして出力」すれば良いってだけ
逆に、第三者に変なファイルをアップされる心配があるのであれば、「アップロード処理の際に(出力の時ではなく)」厳密なチェック処理をしないとダメ
それについては、>>466さんも紹介してくれている
https://qiita.com/mpyw/items/939964377766a54d4682
を読めばいい
・第三者が自由にファイルがアップロードできる
・アップロード処理の際に上記のようなチェック処理ができてない
・アップロードされたファイルへ第三者がアクセスできる
3つの条件を満たしているとセキュリティ的にヤバいよねってだけ
例えば、「任意のファイルを自由に読み書きできるPHPファイル」をアップロードしそれがそのまま実行できたらヤバいでしょ?
分かる? >>476
ゴミレスに埋もれて気づかなかったw
PHPの記述を
exec('ipconfig', $message);
↓
exec('chcp 932 | ipconfig', $message);
に変えたら上手くいくと思う
932はCP932(SJIS)の事ね >>479
error_reporting(E_ALL);
ini_set('display_errors', 1);
$url = "https://f.irbank.net/files/8700/fy-profit-and-loss.json";
$json = file_get_contents($url);
var_dump($json);
ってやったらどうなる?
string(1676) "{"meta":{"type":"\u696d\u7e3e","item":{"\u5e74\u5ea6":["\u58f2\u4e0a\u9ad8",…
みたいなレスポンスが返ってこない?
とりあえず↓の行は要らんでしょ
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
>>481
関係ない
PHPのバージョンぐらいは書いた方がいいが >>507
それをあわせてファイルをチェックするのが
MIMEチェックをして画像を表示させる前に、画像ファイルである事を確認するってことですよね?
画像をecho '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('img/abc/123.jpg')) . '">';で表示して
MIMEチェックするのがそんなに難しいことなんですか? >>510
どうもありがとうございます!
とても助かりました >>512
MIMEのチェックが必要なのは、「第三者が」画像の「アップロードをするとき」の話ね
画像を表示させる前にそんなものは要らない
> MIMEチェックするのがそんなに難しいことなんですか?
PHPでアップロード処理した際、MIMEタイプは $_FILES['hoge']['mime'] に入るんだけど、
それは偽装できる
だからその値は信用せず mime_content_type() などで別途チェックしようってこと
当たり前だが、自分しかアップロードしないならそんなチェックはしなくていい
つかさ、「自分(管理者)しか画像をアップロードしない」のか
それとも「第三者も画像をアップロードする」のか、
まずはそこをハッキリさせるべき
だから回答もめちゃくちゃになる 画像データの中に、ウイルスなどを入れてくるかも知れない
だから、本当に画像形式なのか、全バイト調べる必要がある >>514
> 当たり前だが、自分しかアップロードしないならそんなチェックはしなくていい
これ、管理画面からしか画像アップロードを許さないって状況を言ってるんだと思うけど、その場合もちゃんとチェックすべき
他の脆弱性と合わせて管理者権限でアップロードする手口があるので、このへんで手は抜かないほうがいい え?お前らSFTPで画像アップロードする時なんかもMIMEタイプのチェックやってるの?
管理者権限奪取されるような状況でMIMEタイプのチェックなんか意味ないだろw >>516
>>453に "wp-content/uploads/2021/07/7mgpH3K.jpg"
ってパスがあるからWordPressだよね
WordPressの管理画面からアップロードされたファイルは、
デフォのディレクトリ構成なら最終的には wp-content/uploads/ 以下の「公開ディレクトリ」に置かれる
なのでWordPressへその画像が表示される際も
<img src="ttps://example.com/wp-content/uploads/○○.jpg">
という形になる
だったら>>453も単に
<img src="ttps://example.com/wp-content/uploads/○○.jpg">
とすれば終わりの話だよw
でも、何がしたいのかよく分からんが、>>453ではわざわざ readfile() とか使ってるw
まぁでも、WordPress管理画面から自分がアップロードし公開ディレクトリに置かれたものなのだから、
readfile() でそれをそのまま出力しても問題はないさ >>520の話は俺より先に
ID:7+uo32oc0
さんが指摘してるし、>>494さんもそれをフォローしてる
そこへゴチャゴチャ言うのがいるから話がこじれる
453は「HTMLとPHPの役割分担すら理解できてないヤベー人」なわけで、
そんな人へゴチャゴチャ言っても理解できるわけがないのにさ
WPスレへ行けといくら書こうが無駄なのだし、
さっさと問題を解決しスレから居なくなってもらうのがベターかと 当人は自分宛レスに書かれた内容の三割も理解出来ていなさそう >>520
>だったら >>453 も単に
<img src="ttps://example.com/wp-content/uploads/○○.jpg">
とすれば終わりの話
公開ディレクトリなのに、URL で書かないといけないの?
相対パスで書けないの? >>521
ID:7+uo32oc0 と >>494 はワッチョイ見れば同一人物ってわかるよ
そして私だ!フォローthx!
あとね
ワッチョイ 532c-MYQi
ID:Bm0Z0U0B0
はRubyガイジなんでスルー推奨 こいつサイトに載せるバナーイラストをお絵描き板で個スレ立てて練習してるやつと同一かな?
pixivを超えるサイトを作るらしいぞ。だから第三者がアップロードする事に拘ってるんだと思うぞ。 >>524
WPではアップした画像がWPを通して表示される時は絶対URLで記載される >>526
たしかに同一人物だ あまりにも口調が違うから気づかなかったw
Rubyガイジの件もサンクス これも気づいてなかった
>>528
だね
フィルタ使って 'attachment_link' や ''wp_get_attachment_url'
に対し絶対URLを相対パスへ変換するフィルタを適用すれば
相対パスに変える事もできるけどね
526が教えてくれたけど、524はRubyガイジみたいだから相手にしなくていいよ Rubyガイジのレベルは>>483見ればお察しやねw
WordPressスレ見てみたけど、そっちにもRubyガイジが顔出してるしスレがまともに機能してなかった
そりゃこっちに来るわ 2005年前後にに発行されたPHPの本がたくさんあります
バージョン4や5辺りです
以前はこれらの本を見ながら簡単なことをやったりしていましたがもう完全に忘れています
今、小さな店のweb予約システムをPHPで作りたいと思っています
今はPHPのバージョン7か8でしょうか
新規に本を揃えた方がいいですよね?
おすすめの本、勉強方法などあったら教えてください
スレチであれば誘導お願いします バージョン7.3以上がいいよ
残念ながら4や5はもう完全に化石 PHPの本は半分くらい攻撃対策がページを占めてる印象 >>531
本が必要なら買い換えるべき(最低限PHP7…できれば7.3〜対応のものを )
作りたいものがはっきり決まってるのはとても良い事
とにもかくにも、まずはローカルにまともな開発環境を作ろう
スレの質問を見てると、開発環境を作れていないであろう人の質問は色んな意味でヤバいw
開発環境を作るのははじめは面倒だと思うけど急がば回れ
※533はRubyガイジなので注意 どうせなら新しい8を勉強した方が効率いいかなと思ったんですけど、今使っているレンタルサーバがまだ8に対応してませんでした
7.3以上ですね、わかりやすそうな本を店頭で探してみます
予約システムの作り方とか似たようなものがないかも探してみよう
ローカルの環境開発、どの本にも書いてあったので昔入れてました
懐かしい
これも入れておきます
いつ完成するかわかりませんが久しぶりで楽しみです
アドバイスありがとうございした img.phpを用意して<img src="output_image.php?id=12123">
header.phpのbodyに<img src="output_image.php?id=12123">と追加したのですが表示されないようです。
output_image.php?idで画像を表示できるのでしょうか? 確認します。
img.phpというファイルはありますか?
output_image.phpというファイルはありますか?
output_image.php?id=...
に直接アクセスして画像は表示されますか? 画像パスがupload.php?item=12123となっているのに対し
<img src="upload.php?id=12123">では取得できない気がするのですが、idから取得できるんでしょうか? output_image.phpというファイルを作って中に<img src="upload.php?id=12123">
header.phpのbodyに<img src="upload.php?id=12123">と記載しても表示されません
直接output_image.php?id=12123にアクセスしても表示されないようです wordpressの場合特殊なのか、idから画像をリサイズして表示するときに<php echo wp_get_attachment_link( 12123 ); ?>で表示されました。
テンプレートタグ/wp get attachment link - WordPress Codex 日本語版 いずれはwordpressではなくデータベース軸でサイトを立ててみたいので、output_image.php?id=...で
なぜ表示できないのかも知りたいんですが… <php echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('wp-content/uploads/2021/07/7mgpH3K.jpg')) . '">';?>
だと同じように表示されました。教えていただきありがとうございます。
第三者がアップロードするかどうかでセキュリティを考えるんですね、コメントしかりページナビしかりマイページ機能しかり。 WordPressはWPの作法に従わないと動かないことがあるよ。裏でCSSやら.htaccessやらJavaScriptやらが動いていて、実際の処理は隠蔽されてるから。 > 「不正な画像をアップロード」できるのも内部犯に限られることになる
XSS を利用して不正アップロードする手口が徳丸さんのとこで紹介されていました。
https://www.youtube.com/watch?v=FpCabifwhKg
WordPress なら外部から似たような攻撃でアップロードされる可能性があるので、プログラムレベルでも適切にアップロード対策をしておくべきだと思います。
このような回答が追加されていたのですが外部からも勝手にアップロードされる危険性はあるのでしょうか? ありますよ。実際に自分はアップローダーからマルウェア仕込まれて
VPSサーバーを総入れ替え舌経験があります。
WordPress宛の攻撃は毎日あるし、できる対策は全てしたほうが良いでしょうね この動画を見たところ検索フォーム?のXSS対策コードの記載漏れから不正コードを入力されて管理画面に侵入されたみたいですが
要するに第3者が侵入出来るような検索フォームやお問い合わせフォームやコメントフォームやマイページの対策を怠らない事で防げるということですよね?
自分のみがアップロードする場合は該当しないのでしょうか? 脆弱性は様々な枯れてない技術から発見されている。あのWPだってあちこちからゼロデイ攻撃が見つかっている。WP のテーマやプラグインにも脆弱性がある。度重なる更新や脆弱性に対応できないならWPを使うのをやめた方がいい。
パスワードセキュリティにも危険性がある。パスワードはセキュリティの基本であり、5文字程度の単純なパスワードはパスワードクラッカーで短い時間で突破されてしまう。攻撃者は性能の高い計算能力を持ち、世界中のどこからでも攻撃できる。パスワードは単純なのはダメ、短いのはダメ、憶測できるのはダメ。
あるいはソーシャルハッキングや電波漏れなどの未知のハッキング手法からも攻撃が成立することがある。
こうすれば絶対にハッキングされないという方法はないが、危険性が高いものを避けることは可能。 >>548
WordPressの場合、自分は管理画面のURL変えてIP制限入れてますよ。
自分のみがアップロードなら、自分しか使えないIPアドレス制限した方がいいし、
ホスト名とか環境変数とか、そこまでチェックした方が確実だと思います。
ま、一番良いのはWordPress使わないことですけどね >>550
動画見ろよ
IPの制限無関係に投稿する仕組みの紹介だぞ わざとセキュリティホール作って、ほらね?危ないでしょ?ってアホかよw
まずWPに同じセキュリティホールあるかの議論が先だろw
無いけどw >>552
ユーザ投稿のプレビュー箇所とアップロード機能を持つ管理画面って,WordPressで頻繁に見るんだが?
それぞれに問題箇所があるとwebshell置かれて終了!の可能性を指摘する動画だけど、理解できてる? プログラムで例えば4×4のマップがあった場合、4という数字は私は格子点数と呼んでいますが、皆さんは何と呼びますか? >>553
一連の流れでセキュリティの指摘をしたわけではなく、ただ動画を宣伝したかっただけなんですね!
理解できましたw >>536
Oh...
それ、単に「例」として出しただけなのでw
例えば(あくまでも例え話ねw)
ID | 画像のパス
1 | hage/abc.jpg
2 | fuge/345.jpg
みたいにデータ管理してたとして、
id=1 を渡せば hage/abc.jpg を取得できるようにすれば結果的に
output_image.php?id=1
とすれば、「hage/abc.jpg」を表示できるでしょ?ってこと
それを、
output_image.php?path=hage/abc.jpg
みたいに直接パスを渡すような設計にしてると、あなたのレベルでは危ないよってだけ >>546
> 外部からも勝手にアップロードされる危険性はあるのでしょうか?
そりゃ「可能性」はあるよw
人間が作るものにバグ(脆弱性)がないものなんてない
で、>>546にはその動画の意味は理解できる?
理解できてないよね
理解できてないのに、何をどうやって「対策」するの?w
その動画に指摘されている脆弱性は、「プラグインのXSS脆弱性を悪用した攻撃」なので、
対策といったところで、あなたのレベルでできるのは「WP本体やプラグインは常に最新版を使う」事ぐらいだよ?
※その動画の攻撃例は管理画面にIP制限なんかしても無駄ですw
結局、「画像は546本人しかアップロードしない」んだよね?
だったら、「アップロードした画像には問題ない」事を前提に話を進めようよ
546は、「HTMLやPHPの基礎がないままWordPressから始めた」のがいけない
基礎がガタガタなの
そんな人が細かい事を気にしたところで、話は前に進まんよ >>552
>>555
546の動画の例は、WordPressでECサイトを構築する際の「超定番」プラグインEC-CUBEのXSS脆弱性を悪用したもので、
「実際に悪用事例も出た」ものだけどね…
そんな事すら理解できないなら、横からしゃしゃり出てこずに黙っておけw >>546
>>557に補足しとくと、WordPress本体・プラグイン・テーマファイルの致命的な脆弱性を悪用され、
WordPress権限から自由にファイルのアップロード・編集が可能になった場合、
サーバー内の画像をPHP経由で出力する際のセキュリティ(笑)なんか、いくら考えても無駄ですw
その点については>>518さんが指摘している通り
例えるなら、「ヘルメットを被っていたら快速電車にダイブしても大丈夫だよね?」って聞いてるみたいもんw
だから、自分しかアップロードしない画像ファイルは安全であるという前提で、話を進めようよ…いや頼むからそうしてくれw
てかRSSの時もそうだけど、たったこんだけの事にどんだけ時間かけてるのよw いいから構うやつもまとめてWPスレ行って帰ってくるなよ 最初から自分しかアップロードしない前提なのにどんだけレスしたら気が済むの、このセキュリティガイジ セキュリティガイジは別人だろ
ガイジなのは質問者、それに対しセキュリティ全波の話を持ち出してる人、煽るしか能のない人 Array(a1,b1,c1,d1,...)とArray(a2,b2,c2,d2,...)を足し算して、
2次元配列にする時って、どうすればいいでしょうか?
$x[0]がArray(a1,b1,c1,d1,...)の時、
$x[1] = $s;としたら、
$xがArray(a2,b2,c2,d2,...)で上書きされてしまいました。 $s=Array(a2,b2,c2,d2,...); です。 foreach とか for とか使うしかないでしょうか? Ruby なら、zip で複数の配列を、組み合わせられる
ary_1 = [ 1, 2, 3 ]
ary_2 = [ 10, 20, 30 ]
p tmp_ary = ary_1.zip( ary_2 )
#=> [[1, 10], [2, 20], [3, 30]]
p results = tmp_ary.map{ |a, b| a + b }
#=> [11, 22, 33] 相変わらずRubyガイジがPHPのスレを荒らしに来るw PHPで接続を明示的に切る方法ってある?
本処理後、後処理としてDBの整理を行うのだが、
本処理と後処理が同程度の重さになるので、可能であればTCP接続を明示的に切りたい。
そうすればブラウザが確実に処理を始めるので、クライアント側の体感速度が上がることを期待している。
とりあえずfush()はした。出力バッファは使ってないので、ob_xxxxはやってない。
他に何かある? DBがクローズされているなら、PHPへのアクセスは関係ないんじゃ?
というか、設計がおかしくない? ああすまん、書き方が悪かった。
こちらはPHPの初心者なので、そちらが想定しているような高度なことはしていない。
「TCP接続」をDBとの接続だと想定したのだと思うが、こちらはSQLiteだ。
クライアント(ブラウザ)からのアクセスで、SQLiteを操作してhttp出力を行う。
その後、ユーザーに対しての追加の出力はないので、ここでユーザーとのTCP接続(=http接続)を切りたい。
(確かGoかNodeだとこれが出来た)
さらにその後、後処理を行うのだが、これが本処理と同じ程度に重い。
そしてexitで終了する。
ブラウザがexitにてTCP接続が切れてからパースを開始すると、体感2倍重くなってしまう。
flushでデータを全部送りきることは出来るが、
ブラウザはパースしないと全部来たことが分からないので、fulsh後にすぐ動くことは期待出来ない。
http接続が切れれば、それ以上のデータはないと確定するので、パースを確実に開始する。
だからこれを早めたい。
何か明示的に出来る方法ってある? 404のっとファウンドなどのエラーページを自作しる >>575
クライアントに応答を返すPHPは、応答を返したら、
後処理を行うPHPを起動し、自身はその終了を待たずexitする >>575
〜ここまで本処理
// 結果を待たずに次の行へ進む非同期コマンド
exec('php 後処理.php > /dev/null &');
exit;
もし後処理.phpに何かパラメーターを渡したい場合は
exec('php 後処理.php パラ1 パラ2 パラ3 > /dev/null &');
受け取る側の「後処理.php」の中で$argvに配列として格納されてる >>577-578
なるほど、マルチプロセスだから根本的に考え方が違うんだな。ありがとう。
(だとすると、途中で明示的に接続を切れたのはNodeか?)
マニュアルページが完全にstackoverflow並のtips集になっていることにも驚いた。
https://www.php.net/manual/ja/function.exec
(やたらWindowsについての言及が多いが、意外にIIS上で動かされてるのか?)
見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい。
そしていきなり環境依存コードを注入するというのはプログラマとしては頂けない。
ここら辺のノリがPHPの嫌いなところだ。
プログラマ向けに作ってないから、プログラマの常識でやってると変に嵌ったり、見落としたりする。
とはいえ、便利なのは事実だし、所詮スクリプトだと割り切るのも必要なのだろうけど。
とりあえずの問題は、開発環境がローカルホストのXAMPP(つまりwindows)で、
実行環境がレンタルサーバー(つまりLinux)ってところだが。
まあ、いずれにしてもありがとう。
この質問には確かにexecが正解のように見える。 >>579
ローカルコマンド叩くのに環境依存がない言語なんてあるわけ無いだろ
嫌いになるのは勝手だけど、アホな理由で嫌いになるなよ >>580
だから発想が『プログラマとしては』おかしいんだよ。
少なくともNodeでもGoでも、環境依存無しのコードを記述出来る。
PHPでは出来ないのに、それでも良しとされてる。
そういうところが嫌いなんだよ。
覚えだが、上記の通り、明示的に切れたのは多分Nodeだ。
これはそもそもシングルスレッドだから、PHPのようにスクリプト終了=接続終了とは出来ないから当たり前だが。
そしてGoなら内部プロセス(goroutine)で、となる。もちろん環境とは依存しない。
PHPでも、session_write_closeと同様に、例えば write_close() というコマンドを作り、
そこで接続終了、それ以降の出力は全部捨てられます、とすれば、全く問題なく環境依存無しに出来る。
だからプログラマが主導して開発をしていればとっくにそうなってるはずなのに、
現実としてそうなってないから、色々無駄に戸惑う。だから好きにはなれない。
何だかんだで意外とNodeが蔓延っているのは、ここら辺の理由もある。
今回の使途ならJSのsetTimeoutでの実装の方がプログラムとしては断然美しくフィットする。
PHPで書くと、こんなコードにしかならないのかよ、と本当に愕然としてしまう。
腕が良くてもまともなコードを書けないんだよ。
それは上記の通り、PHPの開発の方向性が間違ってるからだ。
(とはいえ例の三項演算子についてはPHP8で修正されてるようだが)
まあとにかくだ、プログラマとしては禁忌に近い「環境依存コードの注入」を普通にやらせるのは異常だし、
そんな状況が放置されてること自体も異常なんだよ。
だからプログラマがPHPを好きになることはないと思うよ。
PHPを好きな奴は、他言語をまともに使えない奴だけだと思う。 >>581
んなアホなことやりたいなら、phpでWebサーバ書けばいい
メジャーなのはないけど、ふつうにGitHubにも転がってる
そもそもフィトするもんが別にあるんだったらそっち使うのがエンジニアだぞ >>582
だからその発想がおかしいんだよ。フィットしてるなんて到底言えない。
PHPは「できればいい」「動けばいい」で済ませる初心者〜中級者の感覚に合ってる。
だからその層には絶大な支持を受けるが、上級者には支持されない。
実際、PHPが「プログラミング言語として」素晴らしいなんて言ってる上級者は世界中でも誰一人もいないだろ。
connection_closeとかを用意すればいいだけなのに、
外部コマンドで自己ファイルをバックグラウンドプロセスとして起動する、なんて解は、頭がおかしいレベルだ。
自宅から歩いて3秒の場所に自動車で行く、に近い。
以前は「XAMPPなんて捨てろ。どうせ本番環境では動かないし、XAMPPで開発する意味はない」とか言ってる奴も居たが、
実際はこの辺の、それが環境依存コードだと理解出来ないレベルの初心者が勝手にやらかしまくってるだけだと思うよ。
そしてその意味も分からず、「XAMPPなんて捨てろ」だけ真に受けた初心者が、
例えば>>394みたいに、右も左も分からないのにリモート環境で開発する、みたいな、余計におかしな事をやらかす要因となってる。
そしてその根元は、PHP自体に落とし穴がありまくるからだ。
なんでそこで環境依存コードを注入するしか解がないの?というね。
が、まあ、parallelとかphtとかはここら辺の対策用なのかな?
それにしても connection_close とかの単純な解の方が断然いいが。 >>583
使ってる方からするとWebサーバレベルのハンドリングを意識しなくて良いレベルで抽象化されていることが使いやすいし、不足箇所は最近だとフレームワークが補完してくれている
ところで、支持してない上級者って何?
サーバサイド言語として、phpが必要ないって言っている人がいる?
普通に用途が合えばphp選択するのがエンジニアだと思うけど? というか、思うにこれはPHPだと「出力用」と「DB整理用」のphpを別にして、
「DB整理用」は別にcronで叩く、というのが一般解なのかな?
これ自体も外部依存しているのでよい解ではないが、
ここまで蔓延っているPHPがこの辺の「普通にやる処理」を上手く記述出来ないのもあり得ない。
だとすると、現実的にはこの解なのだろう。
とはいえ、最安のレンタルサーバーだとcronは使えないし、
纏めて整理する時に命中したらその時だけ奇妙に遅くなるわけで、
出来ればマメに整理しておきたいのだが。 >>583
〜ここまで本処理
//接続が切れてもスクリプトを実行させる
ignore_user_abort(true);
// メッセージ表示ページへ飛ばす
header('Location: 本処理完了しました.html');
flush();
ここから後処理〜
環境依存使わないなら、こんなんでどうですか? >>583
ソースもないのに誰一人いないとか断言しちゃうから、だらだら長いだけで説得力のない空っぽな主張に見えちゃうんだぞ
お前さんの主張を支持する上級者は誰一人いないw >>584
> 不足箇所は最近だとフレームワークが補完してくれている
では今回の connection_close なり write_close が出来るフレームワークを紹介してくれ。
無いだろ。
PHPで出来ないことは、PHPで記述したフレームワークでも出来るはずがないからだ。
(とJS同様に思ってるんだが、PHPの場合は例えばC++で記述されててPHPをDSLとして採用してるだけ、
みたいな実行環境形のフレームワークがあるのか?
それがapacheだnginxだ、みたいな状況ではあるが)
> サーバサイド言語として、phpが必要ないって言っている人がいる?
居ない。
しかし、PHPは「素晴らしいプログラミング言語だ」と言ってる奴も居ない。
それは君も知ってるとおり、色々グダグダ過ぎるからだ。今回も然り。
他言語だと楽に美しく実装出来る事が、出来ない。いちいちストレスだ。
(とはいえRust/Go推しの連中もどうかしてると思うが)
> 普通に用途が合えばphp選択するのがエンジニアだと思うけど?
それはその通り。だから俺も今回はPHPを選択している。
ただこれは「プログラミング言語として」ではなく、「実行環境含めて」だ。
今回は「無料レンタルサーバーでも動く」事も重要な為、今のところPHP以外に選択肢がない。
技術的には、サーバーレス+Nodeが一番フィットし、つまりherokuなのだが、
あれは無料だが海外鯖なので見送りにしてる。
サービス提供先は主に国内なのにいちいち海外鯖では無駄に遅くなるから。
そしてNodeの無料鯖が国内にも広まるのを待っていたのだが、これは今のところ全然なさそうだ。
とかやってるうちに他状況も整ってきたから、しょうがないからPHPで本格的に書くか、と諦めたわけだ。
あと、Nodeが数倍速いのも事実なのだが、どうせ鯖を借りる側からすれば、
値段当たりの処理能力なら実はVPS+Nodeもレンタルサーバー+PHPも大差ないのかも、という気もしてきてる。
この辺も諦めにつながってる。とはいえ、どのみちNodeでも書く羽目にはなりそうなのだが。 >>588
お前のやりたいことは、Jobのキュー登録だろ
普通にあるわ
なんで、connection_close なり write_close にこだわらないといけないんだ? >>586
それは動かないだろ。
本処理で既にheaderとbodyは出力してる。
だからその後に header('Location')はアウトだ。
そして仮に動いたとしても、いちいちLocationで飛ばすってのも余計におかしい。
今現在の、結果的にブラウザが反応しないかも、その場合は通常より倍の時間がかかります、の方がまだマシだ。
ここらへんの、ちゃんとした解がないから余計なことで遠回りにやる、ってのもPHP界隈が嫌いな理由だ。
そういうのは初心者から中級者にクラスアップしてきた連中が俺ツエー的にやりたがるのだけど、
そういうのが多すぎて、PHP界隈はウザイ。
ただ逆に言えば、そういうことをしたいレベルの奴にとっては「俺カッケー」が出来るから、大受けする。
だからPHPを嫌いな人は多いが、廃れることもないだろうね。新規参入者はいくらでもいるから。
ある意味初心者ホイホイな面はある。
(ただしプログラマになる為の教育としてはかなり最悪だが) >>589
あるならそれを教えてくれ。PHP.net上のurlだけでいいから。
jobで出てくるのは The GearmanClient class だけだが、さらっと見た限りなんか違うっぽいし。
というかね、PHP.netは本当に出来がいい。
あれだけは他言語も見習うべきだよ。 >>592
LaravelはPHPで書かれてるのだから、素のPHPで出来ないことが出来るはずがないだろ。
と思ってるのだが、この認識が間違ってるのか?
まあ、導入する予定はないが、見てみるよ。
Webプログラミング板のスレはさらっと読んでみたが、ぶっちゃけここと大差ないような。
まあ、ここで一通り終了したら向こうでも聞いてみるかも。
なお、俺はプログラミングの初心者ではないが、PHPに関しては初心者だ。
一通りも知らないからPHP.netをいちいち引きながら書いてる。
それでいちいち、「他言語ならこうだけど、PHPならどう書くの?」になるわけ。 要は「非同期処理すればいいだけ」の話なのだが、ID:F8+XC2Dv0 はLinuxができない人?
だってさ、Linuxではコマンドの最後に「&」をつけるとバックグランドジョブになるのだから、
「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん
で、開発環境はDockerやVagrantで作ればいい
PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語なのだから、別にそれでいいじゃんw
PHPがどういう思想から生まれた言語なのかは以下のインタービュー記事を読むといい
https://gihyo.jp/news/interview/2010/rasmus
例えばNode.jsはシングルスレッド・シングルプロセスなのだから、入出力関連の処理を非同期で行ったりと設計思想からPHPとはまるで違う
1つの言語に固執せず適材適所で言語を使い分けるのがプログラマのなのだから、お前みたいな書き方をしてたら「だったらPHP以外の言語でやれば?」って思われるだけだw
ちなみにPHP8.1以降では「Fibers」が実装されて、非同期処理を綺麗に書けるようにもなるんだけどね
https://php.watch/versions/8.1/fibers
PHPってここら辺がすごい柔軟 良いと思った仕様はどんどん取り入れる
とにかく、グダグダグダグダとうるせぇんだよお前はw
自分の頭が固いだけなのに仕事ができると「勘違いしている自称上級プログラマ様(笑)」ってのが、現場で一番タチが悪い人間なのは間違いない
固くするのはチンコだけにしておこうな? >>592
あ、すまん。訂正。
laravelをさらっと見たが、dockerで導入してるところからして、俺
が想定していたJS的なフレームワークとは違い、これは実行環境形のフレームワークだな。
Job管理もあるのだろう。これはこれから読む。(とはいえ時間はかかるが) Rubyガイジといい、なんでガイジ(正確にはガイオヤジかw)ばかり湧くんだろうなぁ
夏だからかw >>594
> 「言語を問わず」 "コマンド > /dev/null &" ってすればいいかな?って発想になるもん
理解してないのお前だ。俺は「言語を問わず」ではなく、「実行環境依存」なのを問題視してる。
まあお前レベルの奴がグダグダ言ってくるところがPHP界隈の嫌いなところだよマジで。 このガイジLaravelスレでバカにされているガイジだろw
無能で仕事もしたことが無いレベルw >>597
だから「開発環境はDockerやVagrantで作ればいい」と書いた
とにかく質問は解決しただろ?
だったらPHPスレに居座る必要もない
WPガイジ(こいつも相当頭が固いw)といい、俺はサッサと質問を解決しガイジにお帰り頂きたいだけだ
繰り返すが固いのはチンコだけにしとけw それといももうチンコも勃たない歳か?w >>594
ラスマスの記事を読んだ。まあ想定どおり。
これはWeb上のオープンソース開発、つまりJSやRustも同じ事。
それらに比べてPHPはポンコツ過ぎ。
ちなみにfiberが欲しいわけではない。それも「歩いて3秒の場所に自転車で行く」に近い。
俺がやりたいのは、 fclose(/dev/stdout) だよ。
ただまあ、PHPがラスマスの言うとおり勝手に開発された機能の団子なのなら、
俺が勝手にCのコード書いて送れば採用されるのかな?
精々10行程度で実装出来るから送ってみてもいいんだけどさ。
あとそれ、「PHPは柔軟でスゴイ!」ってのも、
最近よくいる「俺が使ってる言語スゲー=俺スゲー」系の馬鹿だから止めとけ。
他言語で既に使えてる便利機能が今更採用されたところでスゲーと思えるのは明らかに信者でしかない。
第三者なら「ようやくかよ」でしかない。 ID:F8+XC2Dv0
質問に非同期って単語が出てない時点でお察しですな
PHPへの噛みつき方もテンプレ過ぎて10年前にタイムスリップしたかと思ったよ
加齢臭のするオッサンだろうな >>599
> だから「開発環境はDockerやVagrantで作ればいい」と書いた
だからその解も本来は間違ってるんだよ。それは、
実行環境依存のコードしか書けないから、それぞれの実行環境を毎回用意してそこで開発しろ
なわけだろ。それはJavaが目指した「Write once, run anywhere」でも全然無いだろ。
まあ実際はともかく、そもそもプログラミング言語はOS上のレイヤだけで動いているのなら、こうあるべきなんだよ。
そしてJSとか他言語はそうなってる。
PHPはその努力もしてないから駄目なんだよ。
その、「間違った解を正解として誇らしげにドヤる」のも、
典型的な「初心者から中級者にアップしたての馬鹿」がやることで、おまえはまさにそれだよ。
実際PHP界隈はそういうのが多数派で、それが問題視されることはないのだろうけど、それ自体が問題だよ。
それでは生産性がまるで上がらない。まあこれも理解出来ないのだろうけどさ。 >>590
あたしは575の提案をして、環境依存に難色を示されたので、代替提案をしただけなのに、おかしいだろとか、ダメだとか、あっちのほうがマシだとか、なんでそんなに上からなんですか笑
既にbody出力済みという前提も無かったし。
なるほど、でもできればリダイレクトはしたくないです。とだけ返事すればいいものを。
リダイレクトNGなら、更に別の提案もあるんだけど、萎えましたです。 俺、PHPがすげぇなんて一言も書いてないけどw
だからこそ「PHPなんて良くも悪くも適当に書けば適当に動いてくれる言語」だと書いたし
ラスマスのインタービュー記事を紹介したのだが、このガイオヤジはドヤ顔で何を勘違いしてるのだろうw
例えば>>579で
> 見た目同期コマンドだが、出力を捨てれば確かにバックグランウンドで動くらしい
なーんて書いちゃってるから…ね
「&」ついてるのに、これのどこか同期コマンドなんだというツッコミw
質問は解決してるんだからもう用はないだろ?
あとはチラシの裏にでも書いとけw >>601
このガイオヤジ、1人で勘違いして「信者」なんて言っちゃってるしね
この手のヤバい奴は昔から居たから、PHP長くやってると慣れるよねw >>601
非同期知ってる俺カッケー、か。
俺がやりたいのは非同期ではないんだよ。
ここら辺なんだよ、PHPerは、(JSerもだからWeb系全般だと思うが)
本人が実力を過大評価しすぎてていちいちウザイ。
今回は同期の fclose(/dev/stdout) がベストで、この単純なことが出来ないのは奇妙だと思って聞いてる。
他の言語/実行環境なら最初に用意される物であって、存在しないのはほぼありえない。
だから俺の勘違いか見落としだと思って聞いてるわけだ。
そしてこんな基本的な物がないのに非同期とかfiberとか、整備の順番を完全に間違ってるんだよ。
とはいえlaravelはどうやら俺の想定していたものとは違うので、そこにあることには期待している。 >>603
> 既にbody出力済みという前提も無かったし。
いやそれは普通に読めば分かるだろ。
むしろ、接続を切ろうとしてるのに、なんでその後に何か出せると思ったの?
もしかして、本処理ではheaderだけしか出力してないと思った?
それはレアケース(常に403とか?)であって、その仮定の方が無理あるだろ。 簡単な非同期処理で解決するのになに言ってるのこの人
顔真っ赤すぎて全レスし始めたし今日1日で何レスするのか見ものだな
PHPに親でも殺されたのかしら? スレが伸びてると思ったら大物が登場してるな
面白いから魚拓取って他にも晒しとくわ >>604
exec自体は同期コマンドなんだよ。
そしてその書き方自体も他言語が出来るプログラマにとっては気に入らない。
exec("cmd"); // 同期
exec("cmd > /dev/null &"); // PHPではこれで非同期、しかし書き方がイマイチ
exec("cmd") > /dev/null; // これならまだマシ
exec_async("cmd"); // 本来はこうあるべき
まあここら辺もPHPが嫌われる理由だよ。他言語と揃ってないからいちいち文法で躓く。
だから他言語で慣らした連中に取っては無駄に参入障壁となっていて、
結果的にPHPはPHP育ちの初心者パラダイスになってる。
そりゃ居心地はいいんだろうけど、良いコードに遭遇出来ないのは上達の妨げにしかならないことに本人達も気づけない。
なんだかね。
実際お前ら、上の4つ、何が問題か分からないだろ。 >>608-609
> 簡単な非同期処理で解決するのになに言ってるのこの人
そう思えちゃうところがPHPerだよ。
まあ他のプログラミングが出来る連中にも聞いてみるんだね。 自分も、そこまでLinuxには詳しくないが、
今時、2〜3台もパソコンがあれば、社内Lanで繋ぎませんか? >>607
いや、あなたの常識なんて知らないわよ笑
普通にアクセスされただけで(またはgetパラメーター付きとか)処理が走って、本処理が終わるまで何も出力しないように書き直して工夫することだってできる可能性もあるわけだし。
(もうここは掘り下げなくていいです)
てか、あなたが返事すべきはそこじゃないんだけど〜 >>612
開発環境の再構築に乗り気ではないのは、それは手段が目的化する恐れがあるから。
いろいろ分かってない状況(=今の俺)の場合は、環境構築こそが最大のネックで、
コード自体は書けば書けるものでしかないんだよ。
そして既にXAMPP+NetBeansでブレークポイントも当たるし、xhprofだっけ?も導入してるからそれでやってる。
(ただし環境を構築したのは4年前だから、君らからするとこれは古すぎかもしれないが)
新しい開発環境も、作ってしまえば結果的には楽勝なのかもしれないが、あっさり出来る自信がないんだ。
ただまあ、今回の話は、環境構築すればいいって物ではないのだけどね。
それって、例えば鯖を変えたり、あるいはGitHubで公開した後に「○○ですけど動きません」ってのに
いちいち対応するのか?って話になるだろ。
そもそも環境依存のコードを書くべきではない
ってのが大正義なのに、それを認めずあれこれ無駄に言ってくるからおかしな事になる。
お前らは何をすべきなのか本質を理解するべきだよ。 >>610
なるほど
Linux系のOSでコマンドの後に&を付けるとバックで動くって事を知らなかったのね
それを必死に誤魔化してるだけかw >>613
> 本処理が終わるまで何も出力しないように書き直して工夫することだってできる可能性もあるわけだし
本処理ではbodyを出力する場合もあるし、403等でheaderだけで終わる場合もある。
本処理終了後は出力はない。だからそこで切りたい。
というわけだがこれでいいか?
いずれにしてLocationでリダイレクトは度頭でやらないといけないから君の間違いだとは思うけど。
> てか、あなたが返事すべきはそこじゃないんだけど〜
どこよ? >>615
そう思うのは、君の周りにはその程度の人しか居ないからだね。君も含めて。 >>613
616訂正。
> Locationでリダイレクトは度頭でやらないといけない
と思ったが、もしかしてリダイレクトが間に合わなかったケースを意図的に利用して接続を切ろうって事か?
それは解としてはだいぶ酷い。そういうコードを書くと数年後には意味不明で読めなくなる。
あとその場合は結局ブラウザ上でパースされた時に転送(=接続終了する)だけであって、
結局今の実装(ブラウザのパースタイミング次第)と同じでしかないし、改善しないと思うが。 YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
バックエンド初心者用コースのポートフォリオでは、
基本情報技術者資格、Ruby on Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース
今までは、Docker Compose までが初心者用コースだったが、
最近は誰でも、Docker出来るから、
AWS Fargate, Terraform, React, Vue.js, TypeScript も
だから、AWSのくろかわこうへいのサロンにも、入る必要がある
これが済んだら、Ruby → Go で、時給1万円を目指す
Node.js, Django は使われていない。
PHP は一生やらなくてよいと言ってる
XAMPP, MAMP は、Linux じゃないから、やる意味がない。
WSL2 Linux とか、Heroku, AWSなどが良い
システムを、言語・アプリレベルで実現しようとするから、ダメ
普通に、AWSのSQS(キュー)。
企業が欲しい人材は、AWS Solution Architect。
AWSでシステムを組める人
だから何百人も、AWSのくろかわこうへいのサロンに入って勉強してる スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか? >>621
不正アクセス以外にも法的に問われるケースは存在します
まず法的な問題の解決方法を学ぶと良いです
まぁ、いずれにしても初心者のすることじゃないです まだやってて草w
で、この朝6時から20レス以上してるガイオヤジは、なんでPHPにこだわってるの?
> マルチプロセスだから根本的に考え方が違うんだな
> 質問には確かにexecが正解のように見える
と自分で書きながらもPHPではどうしても納得いかないんでしょ?
だったらPHP以外でやればいい
質問はこれで綺麗サッパリ解決したし、あとはチラシの裏へどうぞ
ちなみに>>610については、例えばPythonでsubprocess.run()を使っても一緒の話なわけで、
「PHPだから」という話ではない
それを非同期で実行したいならPythonならsubprocess.Popen()を使うし
PHPならpopen()やproc_open()を使う PHP はレンタルサーバー用言語
Ruby on Rails は、プロ用フレームワーク。
WSL2 Linux, Heroku, AWS
だから、PHPでは転職できないから、KENTA のサロンでは勧めない
Node.js, Django も、Railsのシェアを崩せなかった。
募集がなく転職できないから、サロンでは勧めない
唯一の時給1万円コースの道筋は、Ruby → Go だけ
企業が欲しい人材は、AWS Solution Architect。
AWS でシステム構築運用できる人 >>616
> 本処理ではbodyを出力する場合もあるし、403等でheaderだけで終わる場合もある。
だから、今の仕様はそうなのかも知れませんけど、その本処理はユーザーがアクセスしただけで処理が出来るなら本処理が終わるまで何も出力しないように書き換えればいいんだし、何かユーザーの入力に応じて処理するのなら、postで再アクセスさせて本処理が終わるまでなにも出力しないように書けないんですか?
まあいずれにせよ、リダイレクトはそもそも論外のようなので不毛な話しではありますが。 食べチョクみたいな若い女の子が、Ruby on Rails で1人で始めたサイトでも、
求人募集は、AWS に詳しい人
システム構築運用できる人
コロナで取引量が30倍になった。
こういうのは言語・アプリで解決できる問題じゃない
だから、むしろプログラマーよりも、LinuC などのLinux の資格保持者とか、
AWS Solution Architect が必要
今は、プログラミング言語よりも先に、
Linux コマンド・シェルスクリプト、Docker Compose, VSCode などが来る >>623
まあforkしたいわけでもないんだけどね。それも事を大きくしすぎ。
Pythonを選択しないのは、俺が知らないからだね。
ただしレンタルサーバーでも使えるから、選択肢としてはありなんだろうけど、
言っちゃ悪いがPython使う理由なんてPHP以上にないでしょ。 >>625
一応聞くが、headerはbodyの後には出力出来ないってのを知ってるか?
ちなみに本処理はgetであって、postではない。
そして304ならheaderのみ、200ならheader+bodyの、至極普通のget処理だ。
その200、つまりheader+bodyを送信後に再びLocation"header"を出すのは不可能だが、それは理解してるか? >>627
Python使えなんて一言も書いてないんだがw
PHPのexec()の例は別の言語でも一緒って例を示しただけ
ほんと頭が固いというか思い込みが激しいというか…
現場に居たら陰口叩かれまてるタイプだわお前はw >>629
なら、PythonもPHPと同程度に文法が糞だ、というだけだろ。
実際、Pythonを「プログラミング言語として」褒めてる奴も少ないだろ。
みんなが使ってるから使う、というのが大半であって。 ちなみに、ものすごく低レベルな方法だがこんなやり方もある
> SQLiteを操作してhttp出力
の中に
<img src="重い処理をするPHP" width="1" height="1">
と書くだけw
これならcronが使えない環境でも簡単にできる
これで解決したら笑う >>631
それは面白い発想だが、べき論で言えば反則だろうよ。
ただし、確かに技術的には解決する。 >>631
いや待て、今回はhtmlではなかったので駄目だった。
主にjsonとxmlだ。
まあしかし、発想自体は面白いよ。
ただ、なんか余計なアクセスが出てるように見えるからそれで実装することはないが。
今現在の実装だと、「運が悪く、ブラウザも怠慢していれば、倍かかる時があります」であって、
そんなに問題な実装でもないし、実際htmlを出すのは最初だけ(SPA)にしようとしてるので、それでは解決出来ない。 >>632
こんなもんは、例えば何かしらのトラッキングや、メルマガで配信するHTMLメールで開封率を調べる時等で
当たり前に使われてる方法だけどねぇ…
でも、元の質問は>>575だろ?
これ>>631で解決するよな?w
でもどうせ気に食わないんだろ? だったらPHPなんかやめてサッサと他の言語でやればいい
なんでこのスレに居るわけ? サッサと出ていけよw >>633
また後付でなんか出てきたw
>>575はとにかく、重たい後処理をするPHPを非同期で起動させればいいだけ
それがexec()だろうがproc_open()だろうが<img>タグだろうが同じだ
それが我慢ならんのなら、それ以上PHPにこだわる必要性は何もない
まぁお前みたいな「面倒くさい人」はどこにでもいるよw
もうええでしょ >>634
ああ、Webビーコンと大昔に呼ばれてて、その結果htmlメールは悪だとされた奴だな。
今でも普通に使ってるのか?それはそれで問題だとは思うが。
少なくとも、俺は>>631で出来る状況であってもそれは使わない。今現在の実装の方がマシ。 pythonというのは、
等加速度直線運動の3公式で、多くの問題を解決するようなもので、
これをできれば、スピードアップするらしいが。
高度なことをできる部品はある。 >>635
ちなみに
> 重たい後処理をするPHPを非同期で起動させればいいだけ
これが間違い。
単に、出力を閉じる connection_close みたいな関数を呼んでユーザーとの接続を終了させ、
そのあとそのプロセスが引き続き後処理をすれば良いだけだし、これが一番軽い実装だ。
そして他言語だとこれは出来るのに、何故この基本的な操作ができないのだ?という話。
非同期=軽いとか思ってる馬鹿も特にJSには多いんだが、非同期が軽いわけではないんだよ。
むしろキューイングしてやる分だけ重くなる。 >>628
Ruby on Rails でも、view を、render できるのは1回限り。
double rendering 禁止
>>633
Railsなら、
format.html
format.json
と書いておけば、例えば、
books/1 なら、HTML、
books/1.json なら、JSON を返す
テンプレートファイルも、show.html.erb, show.json.erb と、ERB で2つ書いておく。
show.json.jbuilder と、jbuilder を使えば、もっと簡単に、オブジェクトをJSONにできる
Railsには、SPA 用のAPI モードもある。
HTMLを返さない。JSONでやりとりする
フレームワークを使わず自作してると、10年やっても低品質のまま。
Railsを1年やっただけの人にも勝てない robots.txtを守らないと逮捕されるって本当ですか? >>638
だからさー…あのなぁ…俺は「>>575みたい低レベルな話なら」それで解決するだろ?と言ってる
しかもレンタルサーバでやるような低レベルなもんだろ?
ここは質問スレだ
俺は「その低レベルな質問に対して方法を提示した」だけ
言語仕様が我慢できないなら他の言語を使え 何度も同じ事を言わせるな
つかお前、なんかの病気じゃね?w >>640
どこから聞いたんだよそんな話w
例えば640が、robots.txtの記述内容を無視してスクレイピングをしたとする
そのせいでサーバに負荷をかけまくりサーバをダウンさせれば、罪に問われる可能性はあるわな
もしくは著作権で守られているコンテンツを無視して転載しても、罪に問われる可能性はあるわな
でもそれは、robots.txtを守らないと逮捕されるって話とは別の話だよな?
理解できるか? ID:F8+XC2Dv0
ご大層なゴタクを並べてるのにサーバーはレンタルサーバーなのですね >>628
> 一応聞くが、headerはbodyの後には出力出来ないってのを知ってるか?
知ってますよ笑
だから、本処理終わるまで何も出力しないように書き換えればと言ってるんです
本処理完了の次の行でheader locationを出力し、リダイレクト先のページにパラメーター渡して表示すればいいです
<?php
sleep(3); // ←本処理の代わり(ここまで何も出力しない)
ignore_user_abort(true);
header('location: hoge.php?a=パラ1');
flush();
sleep(10); // ←後処理の代わり
exit;
?>
不可能かどうか、コピペで実行してみて笑 >>592
イマイチ全体像が掴めないのだけど、確かにジョブキューイングは出来るようだ。
ただ見たところLaravelのソースコードはphpのようだし、RedisだSQSだとか言ってるから、これは、
DBに対するPDOのように、キューイング機能のあるRedis/SQS等に対しての共通ラッパを提供したもの
ということでいいのか?
(そもそもRedis/SQS等は初耳なので大幅に勘違いしてるかもだが)
なお、確かに今回の俺の用途ならこれで対応可能だ。
話が大げさになりすぎてる感はあるが、
元々Laravelを知ってて、かつ、使える環境なら、この選択もありだろう。
いちいちキューを自前で作るよりもキューサーバー、なんてのは
あらゆる物をマイクロサービスに分割するWeb系的な発想ではあるが、まあ確かに面白い。
実際、Javaとか無駄にモノリシックになってて開発人月がでかくなりすぎてる感はあるし。
ただこれ、インストールが必要みたいだし、最安(=無料)のレンサバじゃ動かないよな?
インストールが必要/有料での契約なら俺的にはNodeの方がマシで、PHPを選ぶ理由がない。
既に言ったが、PHPで書くのは無料サーバーでも動かす為で、
プログラミングについて何も知らない人がGitHubからクローンしたらもう動く!みたいな
超イージーデプロイじゃないとわざわざPHPで書く意味はない。俺なら書き慣れたJSを選ぶ。
(勿論君らがPHPを選ぶのは自由として)
結果的に、エンタープライズな連中はLaravel等を使うから問題なく、こんな基本的な問題も放置されてるってところか。
巣のPHPを使う連中は基本的に初心者であり、細かいことは気にしてないのだろうし。 >>641
> しかもレンタルサーバでやるような低レベルなもんだろ?
これはその通りだ。
お前らのやってるエンタープライズなコードでは許されないような方法でも、許されるのだろうさ。
とはいえ、それをやるかどうかはまた別だろ。
プログラミング初心者が四苦八苦して数百行のやっと動くコードを書いてる状況ではないんだよ。
他言語ではバリバリに書ける奴がPHPだとデタラメやっていい、ってことにもならないだろ。
それは矜持の問題だ。
勿論、お前がデタラメやるのもお前の自由だが、俺的には恥ずかしくてそんなコードは公開出来ないよ。 Ruby on Rails では、redirect_to でリダイレクトする(302・発見)。
lesson/step1 にアクセスすれば、lesson/step2 へ飛ばされる
その時、flash に情報を入れておけば、リダイレクト後に使える。
これで、abc と表示される
def step1
flash[ :notice ] = "abc"
redirect_to action: "step2"
end
def step2
render plain: flash[ :notice ]
end >>645
なるほど、その方法でも出来るのは理解した。
が、それだと2往復するし、やっぱりかなり無駄だろ。
結局お前らは「動けばいい」でしかないからそういうことになる。
それだったら、現実装の方がまだマシだよ。
ただまあ、エンタープライズならLaravel等でキューサーバー、ってのは分かった。
確かにこれで玄人は問題ないのだろうさ。 例えば、Ruby on Rails では、
食べチョクみたいな若い女の子が、1人で始める場合は、Heroku, Bootstrap。
食べチョクは、AWS だけど
AWSなら、くろかわこうへいのサロンにも入る必要がある
KENTA, 2021/3
女性エンジニア&個人開発者のだむはさんにインタビュー
www.youtube.com/watch?v=ieljaqRC98A
Heroku, S3, 決済はStripe, Docker
こういうのでビジネスを初めて、会社の時価総額1億円ぐらいへもっていく。
元々、cloud 9, Heroku でクラウド開発してるし、絶対にLinux
XAMPP, MAMP など、Linux以外を使うことはない。
環境が異なると、テストにならない >>649
理解いただけてなによりです。
ただ2往復の意味が良く分かりません。
1.本処理+後処理.phpにGet付でアクセス
2.本処理終わったらbody用パラメーターつけてhoge.phpに飛ばす
3.ユーザーにはhoge.phpが表示される
4.サーバー側は後処理が継続される
進行は分岐するけど常に1方向だし、どこにも戻ったりもしてないと思いますが。 >>651
リダイレクトは別サイトにもいけるだろ。
だから基本的にはブラウザとは2往復するはず。
結果的に同一サイトにリダイレクトされる場合でも、おそらくブラウザはもう一度接続し直してくるはず。
この辺は試した方が早いかもしれんが。 無料レンタルサーバを使う上級者様が朝の6時半から32レスという渾身のギャグ >>652
なるほど、再接続という意味ならそうですね。
では別の案ですが、
1.本処理中に吐き出すHTMLの先頭に、文字列なりHTMLタグなりの目印を検出するJavascriptを仕込む。
2.本処理が終わったタイミングで目印になる文字なりHTMLタグなりを出力(Flush)する。
3.Javascriptで対象の目印を検出したら window.stop() で、ブラウザ側から切断させる。 >>651
ああだからな、元々は「処理を速く見せる為」なんだよ。それで、
・接続を明示的に切れれば、往復1回+本処理
・接続を明示的に切れない現状では、往復1回+本処理+後処理
・651方式で転送した場合、往復2回+本処理
というようにユーザーには見えることになる。
結果、ネットワークが速くて後処理時間より短いならこれもありかもしれないけど、ネットワークも地味に重い。
この辺のさじ加減は君らの方が詳しいだろうけど、
現状の後処理は、整理するデータがある場合は400ms程度、無ければ10-40ms程度だ。
整理するデータが存在するのは1/20程度の確率だと想定している。
となると、単純には後処理は平均して29.5-58ms程度の重さになる。
だから、ネットワークがこれ以上重いと赤字になってしまうんだよ。
(XAMPPでの時間計測なんて意味あるかボケ!というのはさておき) ID:F8+XC2Dv0は開発環境がXAMPPで無料レンタルサーバを使う初心者なのだから身の丈にあったことをすればいいのにキチガイ過ぎる >>642
ID:bqGeTZjz0の人にrubyスレで教わりました >>654
それは君がブラウザの動きを分かってない。
flushで出力されるのはPHP側のバッファだけで、apache/nginxのバッファはflushされない。
だからapache等でgzしている場合には最後まで出力されるかどうかはかなり怪しい。(というか、多分されない)
そしてブラウザはある程度溜まったら勝手に出来るところまでパースする。
そしてパースが完了しないとJS側からはデータにアクセスしようがない。(送信途中のデータは読めない)
よってその方法では出来ない。
接続を明示的に切れれば、apache等は溜まってるデータをflushして接続を切りに行き、
それを受けてブラウザはすぐにパースを開始する。
だから、接続さえ明示的に切れれば、すぐさまパースされるんだよ。その後PHPが動き続けてても関係なく。
これをやろうとしている。
まあ、Laravelでキューサーバー使えというのはその通り。エンタープライズならこれなのだろう。
多分君はDOM(HTMLページ内)のJSが同期的に動くのを見て勘違いしてる。
ajaxで取得したデータは、途中では読めないよ。 >>657
そいつは有名なキチガイだから相手にしたら駄目よ
今このスレでも ID:bqGeTZjz0 で支離滅裂な事を書いてるけど頭の病気だから >>656
だから最初から言ってるが、
俺はPHPの初心者ではあるけどプログラミングは初心者ではないんだよ。
だから、PHPといえども恥ずかしいコードは書けない。 >>660
いやいやご冗談がきつい
どこからどう見ても初心者ですよ?
初心者じゃないならXAMPPや無料レンタルサーバに固執しなくていいですし
PHPに固執しなくてもいいですからね ちなみにお前ら、PHPにコントリビュートしてみたい奴はいるか?
居るなら手伝うが。
Web開発ってのは、「こんなポンコツを使わされるくらいなら俺が直してやるからソースコードよこせ!」の繰り返しではある。
今の俺がそれだ。
write_closeは基本的な関数であり、存在しないのがおかしい。
実装は、exitで行っているであろうクローズ処理を前倒しすればいいだけ。具体的には、
1. exitのソースコードを「接続を閉じる部分」と「それ以外」に分け、
2. 「接続を閉じる部分」が write_close() で呼ばれるようにし、閉じたかどうかをフラグで保存、
3. exit ではそのフラグを見て、閉じてない場合は呼んでから、「それ以外」を呼んで終了とする。
とまあ、要は exit のソースコードを2分割すれば済む話ではある。
dieとか、他に止める方法もあるから既に分割されてる可能性もある。
この場合は、単純に関数エントリを一つ追加するだけで終わる。
ソースコードは既にダウンロードしてmain.cとか見てるが、肝心のexit/dieのコードがどこにあるのか分からないんだな。
知っている奴がいればよろしく。
なお、俺一人だとコントリビュートはしない。
俺はPHPの初心者であり仕様を知らなさすぎて、俺一人だとバグを埋め込んでしまうから。 レンタルサーバーの速さを言っても、仕方ない。
他人と共有しているから、他人がリソースを使うと、待たされる
安いのだから、低品質も仕方ない。
そういうものと割り切るしかない
KENTA は完全に割り切ってる。
PHP は一生使わないでよいと言ってる
金にならないから。
低品質で安い仕事 >>658
あなたこそ、理屈はともかく現実がわかってないかと。
以下をtest.phpにコピペしてブラウザからアクセスしてみてください。
(Chrome、FireFox、Edgeのどれでも)
hello world が表示されて、接続が切断され、"これは表示されない"は受信されません。
----------
<html><head>
</head>
<body>hello world
<SCRIPT language="JavaScript">
window.stop();
</SCRIPT>
<?
echo str_pad(" ",4096);
flush();
sleep(10);
echo "これは表示されない";
?>
</body>
</html>
---------- Ruby on Rails では、
XAMPP, MAMP など、Linux以外を使うことはない
Linux コマンド・シェルスクリプト、Docker, Heroku, AWS も、
KENTA のサロンの初心者用コースに入っているから
それに皆、AWS のくろかわこうへいのサロンにも入る
Windows 10, WSL2, Linux, Docker, VSCode でも出来る
XAMPP, MAMP とか、訳の分からない環境を使うことはない。
動きが本番環境と異なるから id:F8+XC2Dv0ってPHPがApacheのモジュールとして動作する時の理屈すら理解してなさそうw >>664
まあわざわざコード書いてよこしたのだから、こちらでも試したよ。
ファイルは200Bytes, ダウンロードサイズは 4.4KBと表示されてる。
確かにそちらの意図どおり、ハロワだけ先に表示されるよ。(パースされてる)
4KBパディングすれば、通常ならバッファをキック出来るから、確かにパーサもキック出来るはずだし、実際そうなってる。
ただな、時間を既に書いたが、それでは間に合わないんだよ。
ネットワークってのは地味に遅くて、例えばここからPHP.netへのpingは264msかかってる。
後処理は平均29.5-58ms程度だと予想されてるので、window.stopがサーバーに間に合わない。
結果、パケットは送信済みで、受け取られたパケットが捨てられるだけだよ。
ただし確かにパースはされてる。(=その方法でもユーザーの体感速度は上がる可能性がある)
ただ、それはページのhtmlだからであって、ajaxではその方法は使えない。
ページのhtmlはブラウザの速度競争のおかげで出来るだけ早くパースするように出来てるからだ。
xmlを送る場合、閉じタグ以降に何かあったらエラーだったので、パディングで押し込みは無理だ。
jsonについては後ろにパディングしてもエラーは出ないようなので、押し込み自体は出来るが、
そもそもAPIが途中のパース結果を見せるように出来てないから、普通に実装されてれば全部揃ってからパースだよ。
世の中の大部分のサイトがこの「押し込み」で高速化してる、というのならブラウザも対応するはずだけど、聞いたこと無いでしょ。 >>667
間に合わないの意味がわかりませんです。
本処理終了の時点でブラウザ表示に必要な情報と、その次の行にwindow.stopまでを一気に吐き出すんだから、そのあとにサーバーから何か来て破棄されようが、どうでもいいんじゃないかしら?
要は十分な情報を受け取った段階でブラウザ側から切断してるんですよ。
本処理の後の後処理を待たせてる時間をなんとかしたいのが目的なのに、4KBでぐだぐだ言われてもねぇ。
後処理を待たせてる時間と比較したら明らかに早い段階で通信終了してるはずですよ。なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。それと比較して4KBは人間にわからないレベルの時間ですよ。
xmlが〜とかは、htmlでラップするなり、頭良いんでしょうから工夫してくださいな。 接続の切断が目的なら、
<?
echo str_pad(" ",4096);
flush();
sleep(10);
これは、いらない。 >>671
あら、そうなんですか?
後学のためにどうやるのか教えて下さい 無職のアスペルガーであるコミュ症プログラマーはエネルギーが違うね
そのエネルギーをもっと違うところに使おうか >>670
「間に合わない」はこちらの勘違いだった。その後送信データはないので関係ない。
とはいえ、君の案を採用することはないから安心しろ。
それはexecより酷すぎる。
実際のところ、ajaxでhtmlを取っても途中でパースするとは思えないので、iframeに突っ込んでそこから取るしかないが、
そんなコードを見せられたら、ハア?ってなるだろ。
それよりはまだexecの方がマシ。環境依存コードは散らかされたら終わるが、俺がやるのでそれはないし、
とりあえず今回については linux.php と windows.php に纏めておけば、そんなに悲惨なことにならない。
纏めると、よい順に、
1. write_close()を呼ぶ。が、無いのでどうしようもない。
他言語では普通にあるこれがないのでPHPはクソ、
そしてこれが必要なことを理解出来ないのでPHPerもクソ。
(なおコントリビュートする気がある奴が居たら手伝うのでよろしく。
ちなみにexitとdieは同じらしいので今は分離はしてないね、多分。そしてこの辺の基本的な仕様すら抑えてないから俺だけでは無理だ)
2. 現実装。多分平均 29.5-58ms程度待たされることになる。
が、そもそもajaxはほぼ自動アップデータだし、実際のサイトではどれくらいの速度なのか不明だし、
これがもっさり感につながるかは分からない。
3. exec。待たされることはないが、環境依存コードになるので開発とデプロイの手間が増える。
とはいえ、今のところのPHP的な正解はこれのようだ。
4. htmlタグでラップしてiframeに突っ込んでパースさせる。
ただ、上から下のdomは触れた気がするが、下から上には触れなかった気がするので、実際はchannelで通信か?
まあやれば出来るが、コード見たら呆れられるだろ。
execは精々数行で済むのに対し、こちらは一手間二手までは済まないし、execよりも遅いし。
やるのが目的ならそれで良いが、一応execという解があるのだから、それよりもマシでないと意味がない。
今のところ、現実装のままで本番環境まで持っていき、実際の使用感を確かめて、必要ならexecか、というところ。 >>670
> なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。
ちなみにこれはない。まだ部品を動かしている段階。
ただそもそもC出身なので基本的にノーコストで速くなるのならそれを選択する。
そして普通の環境では有る close が無いので面食らっているわけだ。
俺が見落としてるだけだと思っていたが、本当にないのだから驚きだ。 まー設計レベルでミスってるから write_close みたいなこと言い出してんだけど、2年ぐらい Web に関われば、自力で解決できるかもね
がんばれw アスペおじさんに50の質問しようぜ
>>675
・PHPはクソクソという癖してPHPにしがみついてるのはなんで?
・なんで無料レンタルサーバーなの?無職だからお金ないの?
・任意でcloseできてウェブと親和性が高い言語って例えば何?あるならそれ使えば?
・例えばNodeならできるが?Nodeでやればいいのに何でやらないの?
・Nodeが使えるサーバーってVPSで500円ぐらいで用意できるけど500円も払えないの?それとも自分じゃサーバーを作れないの?
・何度かproc_openって出てるみたいだけどそれを無視してるのはなんで?
・そもそも働いてるの?
・そんなコミュ能力で仕事できるの? >>675
あーいえは、こーいうで、なかなか楽しかったです
あなたが不可能と断定したものを、あたしは2つも実現してみせたんですから、少しは敬意を表しなさいよ笑
断定したことをひっくり返されても、上からの態度とか、かっこわるいわよ
そんなんじゃ、いつまで経っても童貞卒業できませんよ >>672
場合分けしました。
とは言え、ググって原因は予想したけど。
昔、「システム業界では、滅多に不可能と答えてはダメ」というようなことを言われたことがあります。 >>678
proc_openはexecと変わらんだろ。
それで環境依存無しのコードが書けるわけでも無し。
PHPについては何度も言ってるように無料レンタルサーバーで動かす為で、
それは俺が使う用ではないからだよ。
PCのことなんて分からない連中でも動かせるようにして、しかも無料なら試しにやってみようかともなるだろ。
この辺については俺がどういうアプリ戦略を採るかだから、意見言われてもああそうですか、でしかない。
そしてここで色々ひけらかして後々粘着されてもウザイだけだから、特定出来るほど詳しく言うつもりもない。
なおNodeの無料鯖が日本に出現したら間違いなくそれに向けて作る。
今それがあるのならPHPは捨てるし、多分今後は書くこともない。
既に言ったが俺的にベストなのはサーバレスで、実際はレンタルサーバーよりもサーバレスが断然いい。
だからherokuの鯖が日本に出来るのがベストだが、無いのだから仕方ない。
PHPは糞だが、そもそも俺のアプリはそんなに大きいものではなく、
むしろSQLiteのラッパでしかないので、今はphp.netを睨みながらやってるような状況だが、それでも何とか進めてる。
ただまあ、俺が考えてることは今のWebからすると奇妙な事だから、君達と話が噛み合わないのは仕方ない。
それで君らが頭に来てるのも分からんでもない。
ただ先述の通り、詳しく言うと後々の憂いになるから、お互いに技術的なこと以外には踏み込まないようにした方がいい。
Webってのはそれくらいの距離感が丁度いいのだと俺は思ってる。 場合分けしました。 →場合分けして検証しました。
たいした仕事ではなかったんだけど、
ある公式を忘れても、基本の基本から証明できるので、
基本の基本が用意されてれば、(システム業界では)不可能と答えてはダメなんです。 >>680
つかまともな解じゃねえし。それでドヤられても困る。
動くっつうのと、やっていいかと、やるべきかは、別の問題だよ。
ただまあ、アイデアは面白いよ。それは他の人も言ってるとおり。 >>684
エンタープライズ用途ならスケールアウト出来ないSQLiteは論外なのだろうけど、
ぶっちゃけ俺の用途ではSQLiteで十分だし、それは既にチェック済み。
というかね、単体では十分速いよSQLite。
まあ、他は使ったこと無いんだけどね。
SQLとか知らんし、とりあえず一番簡単な奴から、ってことで試して、十分だったのでそれまで。 >>682
execとproc_openが同じなんだw
もうこの一言で満足したわ 上のレン鯖の人は、
・無料で使える
・日本国内に鯖がある
・好きなミドルウェアや言語をセットアップできる
という条件を満たす環境があるなら、PHPに拘らないという主旨の発言をしているようにみえるが、その認識であってる? >>681
場合分けとは?
具体的にどういうコードにすればいいのか教えてもらえるとありがたいです。
「いらない」とは、単純に指摘箇所をコードから削除するだけですか? php嫌いなのは分かるし俺も別に好きじゃないが、じゃあなんで使うんだよ、使わざるを得ないなら従え、以外に帰着しねーんでは。
お得意のnode様でも他言語からしたらディスられるだろうし不毛だわ >>689
まあyes。正確には
> ・無料で使える
> ・日本国内に鯖がある
ここまではその通りで、
> ・好きなミドルウェアや言語をセットアップできる
この必要はない。好きでもないPHPを使ってるのがその証拠。
一番いいのはNode。
ただ、動的言語でないと無理なのではないかと予想してるので、(が、何故そうなのかは言えない、これはすまん)
GoとRustは駄目だ。というかGoはPHP以上に糞だし、Rustは今のところ様子見してる。
それで、無料鯖で使える動的言語=PHP/Python/Rubyで、どれも知識ゼロだから、
とりあえずメジャーなPHPから試すか、で、まあ、言語と界隈が糞な所以外は問題ないから我慢して使ってる。(というほど使ってないけど)
まあぶっちゃけ、PHPが糞だ糞だと言われつつものさばってるのは、確かに便利なんだよ。これは認める。
そしてPHP.netの出来はマジで素晴らしい。PHP.netと比べるとPythonやRubyのサイトはゴミだね。
この辺も、また、ググッて回答が出てくるかも含めて、知識ゼロならPHPから試すのが妥当だし、そうしただけ。
もしかして他の選択肢がある?
ご指摘の通り、PHPは手段であって、目的ではない。 >>692
あるよ。俺はoracleが提供しているプラットフォームを無料で使ってる。メモリ1GBのインスタンス2つとoracleの自律型DB2台。東京と大阪リージョンがある。
あとGCPのGAEなら東京リージョンで使える無料枠がある。 >>691
Nodeは、俺がJS好きなだけで、PHPerからすると糞なのは認める。
というかね、DBと非同期が壮絶に相性が悪くて、Nodeだと結構トンデモなコードになる。
それに慣れてる俺は良いが、慣れてない奴からしたら糞以外の何者でもない。
ただしasyncが導入されたから今書いたらだいぶマシなのかもしれんが。
とはいえ、PHPは真偽判定テーブルとか見るだけでマジで糞で、糞なのを知っててもどハマりするから俺的には無理なんだ。
直近だと三項演算子、勿論結合がおかしいのは知ってるが、癖としてやってしまうんだよ。
そして見た目、バグに見えないから嵌る。
だからまあ、PHPを主力に使ってる人にとっては問題ないのだろうけど、
他言語を普段使ってて、偶にPHPとかだと、本当に無駄に嵌って、あ〜、ってのが多すぎて悲しいんだよ。 >>693
DB必須ならGCPだと無料のGCEにDBセットアップすれば良いけど国外リージョンになるので、実質oracle一択かな。 >>693
Oracleなんてガチ枠だから完全にノーマークでしたわ。
とはいえ、SQLとはまた違うとは聞いてるし、そもそもそれってあんまりど素人向けじゃないから不味い気が。
逆に無料レンタルサーバーなんて完全にど素人向けでしょ。
向こうもど素人が使う前提だし、やっぱりど素人にはレンサバがお似合いだと思うのだけど。
お互いトラブらないという意味で。 >>690
勉強不足では困るので、
「ハードウェア」も「予想してから知識を呼び出す」のも必要です。
単純なプログラムを作ってから、魂を足し算します。 >>694
jsの真偽判定テーブルも他言語からみたらPHP8と50歩100歩だと思う。7や5はもう過去だから知らない。 >>696
補足しておくと、インスタンス2台無料だから、oracleのDB使いたくない場合は、インスタンス1台に好きなDBインストールする方法もあるよ。ど素人にどこまでのオペレーションを任せるかはわからんけど。 >>697
えっと、すいません、なにかの宗教ですか? >>698
JSのもそれなりに糞だが、
型を意識してれば実際問題としてそこに命中することはないんだよ。
だから一般のプログラミングをしてる奴にとっては問題ない。
PHP7のはなあ、なんだったか忘れたが、
JS的には問題ないものでもおかしなのがあって、しかもそれに普通に命中するから嵌るんだよ。
とはいえ最早PHP8を使うべきなのかな?三項演算子は解決されてるし。
今確認したが、無料鯖はまだ7のようなのだけど、
現実的に俺が今書いてるのを公開するのはどうやっても半年後とかでしかないから、
その頃に一般的に使えれば全く問題ないし、
駄目でもいつかはPHP8に移行するのだろうから、待ってれば済む話ではあるし。
今7を使ってるのは、実は4年前に味見だけしてて、その時に7だったからなんだよね。
まあ、PHP8は検討しとくわ。 >>701
10月に8.1出るし、今から開発するのに7.4はどうかと思う。アクティブサポートは今年の11月末で切れるし。 >>699
OracleやAWSとかは、基本的に「将来有料のお客様になるかも」な人向けだろ。
だから、その気がない人がずっと使うのは不味いと思ってるんだよ。
勿論技術的な問題もあるけど。
無料レンサバはその点、広告を貼りますよ!だから、
永久に無料で使われてもいいですよ、な点が違う。
だからまあ、ガチ向けなものは基本ノーマークなんだわ。
ただ、技術的にはだんだん敷居が下がってて、サーバレスなんてその最たる物だろ。
たぶん、本当になんにも知らないど素人が、それが鯖であることを認識もせず鯖を運用する時代が来つつあるんだよ。
俺はそれに向けてちょっと仕掛けようとしてる。(まあ高確率でポシャるが、それは致し方ない) >>702
了解です。
現実的に古いバージョンを使う理由もないからね。
まあ問題は環境の再構築だが、これもやるしかないね。 >>700
コマンドラインだけのプログラムでは、
ユーザーが使いやすいものではないので。 無料サーバーは低品質だから、まともに動かない。
他のアプリがリソースを使うと、5秒ぐらいの動画広告でも、1時間動かない事もある
素人向けだから、PHP・SQLite でも良いと思う。
KENTA がPHPを一生やらなくても良いというのは、お金にならないから
未経験者の転職では、Ruby on Rails, Heroku, AWS だけ。
Node.js, Django も使われていない
プログラミングの話というよりは、安い・低品質の仕事の話。
すごく限定されたことしか出来ない、世界の話 >>706
実稼働12時間程度で100万円超えの案件もあるぞ
言語やフレームワークだけで語ってる奴には一生回ってこないだろうなw >>707
もう令和になっているのにこのネタにマジレスしちゃうの? そもそも後処理とやらを軽くすればいい話ではないのかね
DBの設計とSQLの書き方次第で速度がかなり違うよ
そこを見直すのがいいんじゃないかな
それとnode.jsはwebサーバーと一体だから切断があるがphpはwebサーバーからリクエストされるものであって接続の管理はできないのでは無いんでないのかね そもそもphp上で接続するのではなくブラウザに終了を認識させればいいので
ob_startとob_get_lengthなどを使い
headerでContent-LengthとConnection: closeを出力する方法がマッチしているのではないかな
適当にググってみたけど下のサイトがわかりやすかったかな
ttps://pisuke-code.com/php-send-response-immediately/ > Content-Length
おお正解出てきたか。実はこちらもそこに気づいて試して(昼間に)確認済みだった。
んで、いちいち文句言われるからとりあえず夜まで待ってたところだった。
つかマジで、お前らだいぶ酷いわ。改めてPHPerは糞だと再認識した。
小学生同士の小手先テクニック大会は楽しいのだろうけど、そんなんだから上達しないんだと思うぞ。
>>710-711
こちらはheaderだけで問題なくなった。
とりあえずサイト読んでみたが、こちらの結果からすると、ob_xxxもconnection:closeも要らんね。
(というか多分 connection: close は問題になるからやらない方がいい)
> そもそも後処理とやらを軽くすればいい話ではないのかね
> DBの設計とSQLの書き方次第で速度がかなり違うよ
> そこを見直すのがいいんじゃないかな
勿論分かってるが、今でも十分軽いし、これ以上どうしようもないので。
> 接続の管理はできないのでは無いんでないのかね
これは違う。接続の管理を「しなくてもいい」のであって、「出来てもよい」んだよ。
単純には機能が足りてないだけ。
近いのはGUIのイベント、onXXXだが、
あれも最初は addEventListenerとかは不要(onXXXだけで問題ない)と思われてたんだよ。
でも、有るのと無いのとでは大違いで、今は全面的に採用されてるだろ。
といってもお前らは若すぎてこの話が意味不明なら、イベントバブルでもいい。
あれもHTMLは最初から搭載していたようだが、おまえらPHPerなら特に、バブルなんて無くても設計出来ると思ってるだろ?
しかしこれも同様に有るのと無いのでは設計のしやすさの次元が違ってくるので、全面採用になりつつある。
機能が足りてないときでも、足りてないと気づけない人の方が多い。
ネットが無くても不自由しなかったし、その前は携帯が無くても不自由しなかった。
無ければ無いなりにやってしまうものなのだけど、これが有ればどんなに良いか!と思いつける人はほぼ居ないんだよ。
(一応言っておくが、俺も思いついたわけではなく、他言語で知ってたから不便を感じられただけ)
例えば、asyncとか、技術的には最初からあっても不思議ではなかったけど、誰も思いつけなかったろ。あれと同じ。 >>711
> 適当にググってみたけど
ちなみにどうググッたか教えてもらえないか?
こちらも昼間ググリまくったが、このサイトは見てない。多分ヒットしてない。使ったのはBingだ。
んで、今google/duckduckgo/yandexで"Content-Length header"で試したが、ヒットしない。
ヒットしない(しにくい)理由は簡単で、多分仕様じゃないからだ。
ブラウザが勝手にそう動くだけで、動かなくても問題ないし、動くべきだともされてない物を、
Content-Lengthの紹介で書くことが出来ないからだ。
ただこちらは、前から意味不明なヘッダだなと思ってたので、今日改めて目にした時にピンと来た。
が、ググッてもそうは書いてないし、まあ試しにやってみるか、で、ビンゴだった。
(と書けば簡単そうに見えるが、実際はちゃんと動いているか確認するまでに結構手間取ってる)
だからここみたいに個人レベルのTips集やQiitaとかじゃないと駄目なのだが、
そもそもこちらの検索結果にはそのサイトが出てこない。
どういうキーワードでどこで検索したか教えてもらえないか? php 後処理 でgoogleで検索して最初に出てきたやつ
接続を切ることができないのはwebサーバーへの接続だから
node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない
Content-Lengthは何バイト応答があったらコンテンツの終わりかブラウザが認知するのでそれを利用したテクニック >>711
すまん、713取り下げ。
Bingで「PHP 後処理」でググったら一番上に出た。
俺は仕様を確認しようとしていたのだが、やり方をググれば出るのか。
なまじ自分で出来るものだから「やり方」なんてググろうとも思わなかったのが問題だな。
PHPについては初心者だということを再認識して、「やり方」もググるべきだった。 >>714
すまん、前後した。手間をかけて本当にすまん。
> node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない
これはその通りだが、PHPから出力をクローズしたら当然apacheにも伝わりクローズされる。
そしてこれはnodeでも同じだ。
実際は(Nodeでも)closeしてもhttpコネクションを切っているわけではない。
それだと再送要求が来た時に対応出来ないだろ。
だから、実際の低レベルの接続はNodeでもPHPでも同様に隠蔽されてる。
(勿論ApacheはHTTP/1.1だとgzipしてるし、別にバッファも持ってる)
よって、PHPでもNodeと同様に『プログラミングモデルとしては』接続を切ることが出来る。
だからやっぱり機能が足りてないんだよ。
パイプで説明した方が分かりやすいかな?
php | apache > /dev/eth0 な状況で、php が stdout(出力パイプ) をクローズすることは出来るだろ。それだけ。
その後も apache は必要なら動き続けるし、終了すれば終わる。
この構造はNodeも内部的に持ってないと話にならないから同様の筈だよ。
ただしそもそも論として「Content-Lengthは常に付けとけボケ!」なノリのようだ。
この手のTipsとしてはStackoverflowが秀逸で、
https://stackoverflow.com/questions/2773396/whats-the-content-length-field-in-http-header
の回答の中に以下仕様書へのリンクとかがあるが、
https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4
読む限りContent-LengthはもしかしてHTTP/1.0時代には必須だったのかな?
今現在、 echo json_encode(...); でjsonを語れ流してるから、これアウトかよ、、、、ってちょっと萎えてる。
メモリを無駄に食わない素晴らしいコードだと思ってたんだがなあ、、、。 >>716
最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した
そのあたりは認識してほしい
環境依存にはなるがwebサーバーに通知つする仕組みはある
fastcgi_finish_request
tps://www.php.net/manual/ja/function.fastcgi-finish-request.php
FastCGI用の物なのでapacheのmod_phpでは不可
また、Content-Lengthは後処理不要ならば付けなくても問題なし
json出すならContent-Type: application/jsonは付けたほうがいいと思う 楽に使うならクラス作って継承して使えばエレガントに書けると思う androidにPHPアプリとかあるけど役に立つ? >>717
> 最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した
責める気はないが、これはさすがに屁理屈だろ。
572は確かに俺の書き方が悪い。
ただ、「初心者」が間違った「やり方」を選んでトンチンカンな方向に行くことはよくある話で、
これを防ぐ為には「最終的に何を目指してるか」を言わなければならないが、
俺は575の時点で、
・俺が初心者であり、
・後処理してる最中でもブラウザにパースさせてUXを改善したいから、
・TCP接続を切りたい
と全部揃えているのだから、本当に分かってる奴が居たら、この時点で
「それはやり方を間違ってる。ヘッダにContent-Lengthを付ければそれで済む」の回答が出てきて然りなんだよ。
それがおかしな小手先テクニック合戦になったり、
或いは上記のように全部正しく揃えているのにそれを理解せず「コミュ障」呼ばわりしてくるから、
PHPerは糞だと言ってるんだよ。
これは君も含めてね。何を相手に伝えるべきか分かってないんだよ。
まあコミュ障だからこそ、(=つまり何を伝えれば通じるかが分かってない)
相手がコミョ障かどうか(=つまり必要事項が全部含まれているか)を見分けることが出来ないという、
至極当然の話で、よくあるから慣れてはいるけども。
なんかNodeを勘違いしているっぽいが、プログラミングモデルのレイヤーはPHPと同じだよ。
PHPは上手く抽象化されてる(584)というのなら、そりゃNodeでもその他でも同じだよ。
実際書けば(文法が違うだけで)ほぼ同じコードになる。
下位のTCP接続を直接切りに行けるのはCで相当野蛮に書かれたものだけだが、そんな物存在してないでしょ。
だからこれはエスパーではなく常識で読み替えられる範囲だよ。 >>717
ただまあ、これはさておき、
そもそも環境依存コードを導入する気はないが、無料鯖は大体CGIモードだから行けるのか。
とはいえ少し金かけたらモジュールも選べて、
その際にいちいち「動かなくなりました」とか言われるのが面倒だから止めとくが。
ただ、これだとやっぱり昔は必要だと認識されてたって事だよ。
正直、Content-Lengthよりも直接的で分かりやすい解決策だから、俺も606で言ってるように、
最初に整備されるAPIであり、普通のプログラマにとっては第一選択肢の筈なんだよ。
ただこれだと、モジュール化した際に不要だと見なされて落とされたってことになる。これは何でだろう?
実装自体は至極簡単だし、基本的な物だから、「問題を多発させた」とかない限り落とす判断にはならないはずだけど。
> また、Content-Lengthは後処理不要ならば付けなくても問題なし
MDNは「付いている時も、付いてない時もあります」と言い、
W3Cは「出来る限り付けろ。ストリーミング以外は付けられるだろ」と言い、
実際の他サイトは確かに「付いている」ので、ちと迷ってる。
> json出すならContent-Type: application/jsonは付けたほうがいいと思う
これは勿論付けてる。てか、そうじゃないとブラウザで正しく読めないので。
> 楽に使うならクラス作って継承して使えばエレガントに書けると思う
問題はそこではなく、メモリを出来るだけ食わない方法でやろうとしてた。
jsonはDBの読み出し結果から直接生成する(長さを予期出来ない)ので、Content-Lengthを付けるにはob_xxxxを使うしかないが、
これだと単純に倍のメモリを食ってしまうので。
まあ君らは「でも物理で殴る方が速いんでしょ?」なノリで、実際これも事実ではあるが、俺としては以下と同様、
正しく使えばポンコツでも速いぜ!を目指したいんだよ。
https://qiita.com/masarufuruya/items/3bd72326448e4f8fa569
JSがそうなんだけど、おそらくPHPも同様で、糞コードばかり食わされて正当な評価を得ておらず、
それなりに洗練されたコードだったら意外と速いんだろうとは思うよ。
Webでは「速いよりも早い方が重要」だからある程度致し方ないのだとしても。 phpでもやるかなって思ったけど、大勢で同じセッションみるとかできる? >>717
一応こちらの現時点の結論を言っておくと、
Content-Lengthはストリーミング以外は全部つけないと駄目だな。RFCでもSHOULDだし、
https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2
動きを見る限り、apacheもこれをスヌープしてる。
よって、「仕様準拠」なら flush() だけで何も問題ないから、
fastcgi_finish_requestはモジュール化した際に廃止された、と見える。
だから711内のページ筆者もだいぶ間違ってて、
まずConnection: closeをTCP接続終了(いわゆるFIN/FINACK/ACK)と勘違いしてるが、
実際はこれは同じコネクションを再利用するかの話だから関係ないし、
HTTP/1.1だとデフォでkeep-aliveなので無駄にcloseにするとバグに当たる可能性があるから悪手だ。
https://en.wikipedia.org/wiki/HTTP_persistent_connection#HTTP_1.1
そしてContent-Lengthを付けたら上手く行くよ!ではなく、付けないと話にならなくて、
仕様準拠=付けてれば最初からこんな事にはならずに済んでる。
だからこいつも俺も『仕様を知っている者から見れば』ただのマッチポンプでしかない。
ここで711内ページ筆者、俺、或いは君らも含めての問題は、レイヤーを間違ってることだ。
PHPは生のヘッダを普通に扱えるレイヤーでのプログラミングになるから、ヘッダについての仕様を(本来は)熟知してないといけない。
だから575に対してはいきなり「Content-Lengthヘッダ付けろ馬鹿タレ」とぶった切れないといけない。
とはいえ昨今の状況であらゆる階層の仕様を熟知しろなんてどだい無理な話ではあるが。
だからやっぱりもう一つレイヤーを上げるべきなんだ。
ヘッダの知識がない状態で具だけ書きたいのなら、ヘッダ周りを自動的によしなにやってくれるフレークワークを使うべきだろう。
そしてLaravelは見たところそんな感じだ。
なるほど、「セッション周りとかはフレームワークに任せてLaravelだけ使ってろ」というのは当たってる。
(俺も含めて)素人ほどフレームワークを使うべきだろう。
とはいえ、俺はデプロイ先が無料サーバなのでいちいち仕様確認して素PHPレイヤでのプログラミングをするしかないのだが。 ぶつくさ文句ノイズ垂れ流すの鬱陶しいからNGするためにコテつけてくれよ
「PHPerは糞」とかどうだ chmateだと最初から荒らしってなって表示されないよ! それにしてもThe老害を絵に書いたような奴だな
加齢臭が半端ない
そんな奴が無料レンタルサーバーでできるPHP案件にしがみ付いてるのがまた笑うところ YouTube で有名な、雑食系エンジニア・KENTA は、
PHP は、一生やらなくてよいと言ってる
価格低下圧力がひどいでしょ。
客もプログラマーも、PHPを見下しているから、大金を出さない
だから勉強しても、まず食えない
それでサロンは、Ruby on Rails だけにしている。
マコなりとか普通、学校でも80万円コース
今はYouTube で、200万円の学校をぼったくりと言ったから、訴えられているけどw
KENTAは日本一だから、学校も訴えて知名度を上げようとしてくる
KENTAは、Railsを使っている会社は、モダンな会社とも言ってるし。
他の会社とは、明らかに異なる 一YouTuberの言うことを真に受けなくてもいい 1つ聞きたいんですが、SCSSを導入する際メンテナンスが面倒なら嫌だなと思ってます
dart sassにサポートが切り替わった際にその前のruby−sassやnode-sassのコードをわざわざ書き換えないといけないんでしょうか? 結局Javaもphpと同じで自分で考えて構築しないとダメなんですね…
人のコードを映しても環境の違いからエラーが出ると
SASSを使うためにとんでもない時間掛かってます… ruby−sass は、かなり前に終了している
Ruby on Rails 6 では最初から、Node.js, Webpack, Babel。
当然、SCSS でBootstrap を使うことも多い
autoprefixer, browserslist とか、ミニファイなど、すべて全自動
会社では毎週、各ライブラリを更新してテストする。
この環境構築運用部門がないと、ずっと環境が古いままで直せないので、
ウイルス攻撃などを受ける
こまめに更新・テストするのは常識。
貯めてはいけない
だから、Rails入門者にも、CircleCI も必須。
最近は、AWS Fargate, Terraform なども必須で、
皆、AWSのくろかわこうへいのサロンにも入る
KENTA のサロンの初心者向け勉強のコースは、
基本情報技術者資格、Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース JavaとJavaScriptの区別がついてない奴がいるらしいぞ。 PHPでの参照渡しの「ノリ」が分からないのだが、どの辺が相場なのだ?
なお、 https://tanakahisateru.hatenablog.jp/entry/2013/12/12/012728 は読んだ。これはいい記事だ。
そしてとりあえずコーディングルールを探してみたが、無い。
PSR/WordPress/Zend/Cakeのはさらっと見たが、文法だけで、動作については記述がないようだ。
だから、動作周りも含めての推奨コーディングルールがあればそれを教えてくれると助かる。
DBから読み出してフォーマットしてjsonで出力する場合、一番単純には、
$resultArr = fetch_from_DB();
format_for_API($resultArr); // 参照渡しで自己書き換え
echo json_encode($resultArr);
function &format_for_API(&$arr){
// ここで何かフォーマット
return $arr; // 直上のコードでは必要ないが、直積み(以下)用にreturnしている。
}
となる。ただしこのコードは以下の様な直積み
echo json_encode(format_for_API(fetch_from_DB()));
だと、
Notice: Only variables should be passed by reference
が出る。(ただし動く) ここで、直積みコードを動かす為には format_for_API を「参照渡し」から「値渡し値返し」に変更する必要が有り、
コードは、
$resultArr = fetch_from_DB();
$resultArr = format_for_API($resultArr); // 再代入
echo json_encode($resultArr);
となる。これだと結果としては速度/メモリ共に変化無い。ただし最近の『再代入禁止』には反するので、
$resultArr = fetch_from_DB();
$resultArr_formatted = format_for_API($resultArr); // 別名
echo json_encode($resultArr_formatted);
と別名にすると、(今回の俺の場合、速度は大して変わらないが)使用メモリは増えてしまう。
これらから言えるのは、
A. format_for_APIは「参照渡し(参照返し)」が正しいはずだが、何故かNoticeが出されてしまう。
仕様としては、参照渡しに未初期化の変数が渡されたらそこでnull初期化される、ということだから、
直積みでも動くのは正しく、Noticeが過剰なように見える。(ただし以下7とは矛盾)
(PHPの構造上 is_ref が変数上にしか持てないのが問題なのだろうが、
そこはボックス化みたく変数化すればいいだけで、このような右辺値を流し込んでいる状況なら危険性はないはず。
実際動いているし。だから何でNoticeなの?となる)
B. 同名の変数に再代入する場合は(破棄されることが見えているから)最適化がかかり、問題はない。
C. 別名の変数に保存した場合、元の変数($resultArr)がそれ以降使われない場合でも、破棄されず、最適化がかからない。
結果、メモリを余分に消費する。
これについて、冒頭の記事では「そういう特殊な高級言語だ」と表現されているが、これは当たっている。
クダグダ考えずに「値渡し値返し」でひたすら全部組み上げてもそれなりに動くからだ。
そして昨今の『インミュータブル』で『再代入禁止』なのは下位での変更が上位のコードから見えないからであって、
PHPの場合は「値渡し」でガッツリ保護されているから、
『再代入禁止』『参照透過』何それ美味しいの?でも確かにそれなりに問題ないはず。 俺の現環境ではBしか選択肢がないが、ここら辺はPHP界隈ではどうなってるのだ?具体的には、
1. 理想的にはAでNoticeが削除されるべきだが、既にそうなってる/これから削除予定か?
2. (知らんが、)実はPHPって一つのコードで出来てて、「おま環」ってのがあまり無く、
俺の環境でBが最適化されてれば、どの環境に持って行っても最適化されてて問題なく動くのか?
(これについてJSが悲惨なのはご存じの通り)
3. まさか、notice切ればいいだけだろ、とか言うノリか?(個別に切れるのならこれも有りだが)
4. 最適化を期待して、参照渡しの使用自体を禁止/抑止する方向か?
(真に必要な場合以外は使うな等。今回なら上記のように同名の変数に代入すればいいだけだよね、みたいな。)
5. この辺も含めての、文法(見た目)以外のコーディングルールで有名なのが有れば教えてくれ。
6. このPHP流の参照仕様、使い道無いよな?実は冒頭の記事を読んだ当初、
> PHPの参照はいちど変数が参照になってしまうと、二度ともとに戻ることができないので、扱いにくくてやっぱりダメです。
とあるので、参照は変数側に固定で、参照変数を値渡しの関数の引数にしても常に参照渡し、なら、
スゲーカッケー!!!と思って試したが、全くそうじゃなかった。
しかも参照渡しの関数の戻り値を普通に値変数として確保出来るし、「二度ともとに戻ることができない」というのが意味不明。
Cみたいに呼ぶたびに自由に切り替えられることを想定しているのなら、それは過剰で、
(そもそも元々出来たようだがPHP4.1.3で廃止された、というのを見た覚えがあるが、再確認出来ない)
実際はRustみたいに「mutableな変数は最初から決まっているので宣言時に固定する」で問題ない。
だからコピーオンライト(これってPHP.netでは書いてないだろ!今日初めて知ったわ!)で
全部見た目は値渡し値返し、なら、凄く先進的ではあったのだが。
(なお参照の取り扱いは他言語も苦労してて、C++でも失敗してる) 7.
> リファレンス渡しが想定されているところに、値渡しを行うとエラーになります。
> https://www.php.net/manual/ja/functions.arguments.php
ってあるのだが、今回ってこれか?なら動いてはいるがやっぱりアウトなのか?
ちなみに直積みになってるのは、元はfetch_from_DBの出力側で format_for_APIしてたのを、
json_encodeの入力側でやるように移動して、結果的に <?= => の間にブッ込まれてるからだ。
まあ色々文句有るんだろうが、それでも答えてやってもいいぞ、って人はよろしく。
一応724の要求どおりにこのスレ内ではコテにしておく。 参照返しも値返しもメモリ使用量差は今日日のメモリ容量から見たらわずかな違いだから気にしなくて良い。
参照返し、値返しを考慮したメモリ省使用量化はクセのあるコードになる。
書いた本人以外が今後保守する場合は、その人にもわかりやすく、ミスさせないためにそういうコードを書かないほうが良い。 >>739
その記事とかからすると、どうも過度にやってる奴が居るようだが、今回の件は全くそうではないだろ。
むしろ、「値渡しで自己に再代入って、こいつ参照渡し知らない馬鹿だろ!」って、お前らなら突っ込んでくるところだろ。
がまあ、PHP鯖はPCでしかないので大富豪プログラミングでおk、なのは確かにその通りかもな。 スクレイピングは逮捕される危険があるって聞いたんだけどマジ? スクレイピングでは、そのサイトのrobots.txt を遵守する必要がある
初心者がスクレイピングすると、プログラムのバグで無限ループしたりして、
そのサイトを落としてしまう事があるので、超危険!
だから、必ずテスト中は、ローカルPC に対して行うこと!
絶対に、本番サーバーに対して、テストしてはいけない
Udemy の山浦清透、2021/6 の動画を参照。
PHP で、マイナビ転職をスクレイピングしてる
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI 仮に無限ループしたとしても落ちるのはサーバー側に不具合があるからだろ >>735
Ruby on Rails では、
format.html
format.json
と書いておけば、
/books/1 にアクセスすれば、HTML を、
/books/1.json にアクセスすれば、JSON を返す
jbuilder モジュールでも、JSONを簡単に書ける >>741
>>642
こんな事も人に聞かないと分からんない奴が居るんだな >>745がサーバ構築した事がない人間なのは分かった >>746
お前も PHPerは糞 おじさんを見習って
名前欄に RUBYガイジ って入れてくんない?
PHPerは糞おじさん、2021年にもなって参照渡しでメモリがーとか言ってるはクソ笑う
さすが加齢臭おじさんやね <input type="text" name="text1" value="aaa" readonly>
ユーザー側がvalue="aaa"を書き換えてpostする事ってできますか?
出来るのだったらhtmlのソースに載るものをsqlに入れる時は全部プレースホルダにしないといけないですよね クライアントから送られてくるものは、絶対に信用してはならない。
place holder を使うのが基本
ドラクエ10 では、0.2% ほど、おかしなデータが送られてくると言ってる
伝送エラーでも、パリティーを再計算して、
正しいデータのように見せかけて伝送する、ルーターがある。
そういうルーターを、世界中から排除できない >>748
例の図書館サーバーは三菱がメンテナンスしてたんだよな
それは知ってる >>750
いくらでも出来るよ
そういう値をめんどくさいからと言って送ったりしない事
サーバー側に保存しておけ >>748
あの図書館サーバーは普通のアクセスが集中しただけで落ちるんだぞ
DBのカーソルを使ったあと開放してなかったんだそうだ
こんなの初心者しかやらないコーディングだろう? >>751
>>753
有難うございます。
セレクトボックスの値や、javascriptで書き換えるreadonlyのテキストボックスの値を
sql文に入れるかどうか迷ってました。
全部プレースホルダにします。 >>754
それがナンナンダヨ
岡崎図書館事件は、お前の言うようなシステムだったとしても逮捕されて起訴猶予がくだされたって話だぞ
あと三菱じゃなくてMDISな
子会社ってのは別会社なんだよ
お前社会経験無いだろ 最近も偽造で有名になった、あの三菱
ホント、三菱の名前って有名になったよな >>756
不具合がある事は以前からは悪していたが、顧客には伝えていなかった
定期メンテナンスの度に、コッソリ修正を加えていたが、
岡崎図書館だけはチャンスがなかった
通常の利用者がアクセスするだけで落ちるサーバー
毎朝再起動するのが日課だったそうだ
そうしないとダウンするサーバー
隠蔽体質は独特だよな 岡崎図書館だけでなく、システム導入した全国の図書館で不具合は起きていた
各図書館は定期メンテナンスがあった際に修正版を導入していたが、
岡崎図書館だけは、必要ないとメンテナンスを断られていた
不具合があると、本当のことを伝えてさえいれば修正できたのにな 確か、毎秒アクセスしてたのだろ。一日で何万回も。
それで落ちた。
普通のアクセスでは落ちない
それで自白に追い込まれた。
自白しないと、一生家族を追い込むぞと脅されて、自白させられた
日本の裁判は、行政・司法の事前打ち合わせで有罪が決まる。
法廷では裁判しない
だから、拷問捜査でも自白すると、絶対にくつがえらない。
自白したのが嘘でしたと言っても、裁判官がそんな事はあり得ないと、絶対に認めない
それで、ボクサーが自白して、今も死刑囚のままの事件がある。
DNA 判定でも別人なのに、裁判官が嘘で自白する事はあり得ないと、言い続けている
でも、無罪が国民にばれているから、有罪のまま釈放してる
ボクサーはパンチドランカーで、知的障害になりやすい。
そういう奴を探してきて、拷問して自白させる。
知的障害は、すぐに自白するから
そうやって犯人に仕立て上げる
自白を優先させる国は、世界中でも日本だけ
有罪率も他国では、50% だけど、日本だけ100%。
だから半分は、自白による冤罪 岡崎図書館システム作った企業は、サーバ構築した事がないんだろう
あろうことか、システムの全ソースファイルがネットから丸見えだった
当時大勢がソース閲覧してレビュー大会始めてたな
隠しきれなくなった企業は、最期に全面謝罪していた >今年5月に発覚した岡崎市立中央図書館ウェブサイト「サイバー攻撃」事件は悪意のない一利用者の
>プログラムによる DoS 攻撃とみられており当初「偽計業務妨害の疑いで」の逮捕も妥当かと思われて
>いたのですが、不起訴(起訴猶予)処分が発表された後で図書館のプログラムを入手した朝日新聞が
>セキュリティ専門家らに調査を依頼したところ、実は図書館プログラムのバグだったことが判明。
> このコードの場合、DB接続はアクセス元のブラウザ専用として確保(ASPセッションに紐付け)され、
>ASPセッションがタイムアウトするまでの間(7月の時点で岡崎市立中央図書館では実測で620秒くらい
>だった)、閉じられることなく(使いもしないのに)占有されてしまう。その間に新しい閲覧者(ブラウザが)
>接続してくると、次々新しいDB接続が確保され、その最大数に達すると、それ以上のアクセスを受付け
>なくなってしまう。
>しかも酷いことに新聞報道に基づいたコメントによると、ソフトウェア開発業者の三菱電機インフォメーショ
>ンシステムズ(MDIS)は2006年にこのバグを修正していたが、それ以前に導入した顧客には「ホームペー
>ジが閲覧しにくくなるのは、コンピューターの性能が低いからだ」と説明、「新しいサーバーを導入して金を
>出させるために、わざと情報を秘密にしていたようですね」。
https://ameblo.jp/ecomstation/entry-10627088813.html 日本では自白をしたら、絶対にくつがえせない
裁判で、無理やり拷問捜査で自白させられたと言っても、
裁判官がそんな事はあり得ないと、絶対に認めない
自白して、100% 有罪に出来るから、立件されなかっただけ
日本の裁判は、行政・司法の事前打ち合わせで有罪が決まる。
法廷では裁判しないから、有罪と同じ
青汁王子みたいに、検察庁の拷問取り調べを発信したら、起訴されて有罪になった。
一方、徳井みたいに脱税を認めたら、不起訴になった
だから、青汁王子は検察改革として、選挙に立候補するかも知れない
日本の裁判の半分は、自白のみで証拠がない。
だから、本当は無罪だと国民にばれないように、マスコミを使って印象操作する
毎日ひっきりなしに、事件の捜査進行をマスコミにリークして、犯人だとでっち上げる。
それで実質的に、裁判所では裁判をしない
西村と同じ。
自公は何も立法せず、銀行へ要請して、酒屋に資金提供しないように締め上げる
これは要請で強制力がないから、自公は責任を負わない。
単に、銀行が加害者になるだけw プログラミング言語を作るヒントのために
メモリがー
参照がー
という流れでもないな >三菱電機の不祥事が止まりません。労務問題に品質不正などが相次ぎ、6月29日には
>鉄道車両向け空調装置において、35年以上にわたる不正検査の問題が発覚しました。
>7月2日に記者会見した三菱電機の杉山武史社長は組織的な不正行為と認め、引責辞
>任を表明する事態となりました。外部の弁護士を起用した調査委員会を発足し、原因究
>明や再発防止策の策定に乗り出しました。
体質として、どこかおかしい >>749
それだけ言ってNGし切れないとか超ダセエ。ゆとり臭すぎ。
>>765
それは俺に言ってるのか?
なら俺はいいが、場所は移るべきだ。ここの連中は興味もないだろうし。
PHPを中心に考えるのなら、候補としてはWebプログラミング板かな?
592を額面どおり受け取って移動でいい。
他に希望があれば指定してくれ。
(なおPHPを中心に考える必要は全くないので、他言語スレでも問題なし)
一般的にはプログラミング言語開発者は複数の言語を使いこなしていて、
それらで駄目な点を自身の言語で改善するものだから、
創始者のプログラミング観どおりにやればどフィットするものだが、
ラスマスはああいう感じで他の連中とは違うし、
実際、PHPの参照の仕様は、使い道なさそうに見える。
(ただし俺は仕様を完全に理解しているわけではない)
PHP.netには、コピーオンライトと書いておくべきだろう。
ほぼ完璧に見えるPHP.netだが、これを落としているのは痛い。
(ただし他言語はもっとズボズボだから、PHP.netだからこその要求水準ではあるが) DBのコネクションプーリングとかWEBアプリならLaravelにおまかせで良いじゃん じゃあrobots.txtを遵守していればスクレイピングしてもOKなんですね? robots.txt遵守は一種の紳士協定のようなもので、法的な強制力は無い
OKかどうかの判断は結構難しいと思う。
たとえ手順が正当だとしても、相手サーバーを落とす目的で
実行していると見なされれば業務妨害罪は成立する
これは妨害する意図でしつこく電話を掛け、
対応に追われる状態になれば、妨害罪が成立するのと同じ
大量のアクセスになる場合は、事前に相手に了解を取るか、
リクエスト内のエージェント情報の中に、連絡先を書いておくとかする >>734
当時最先端のJavaのように使えるブラウザなんだぜぇーと宣伝タレ
虎の威を借る狐
旧京都造形芸術大から名称変更した私立「京都芸術大」のようなヤカラたち >>770
してもいいがアク禁にされたり大量アクセスして訴えられても知らないが teratail見るとアホほどスクレイピングしたがるのが分かる >>748に対して ID:ZBXe4sG30 が発狂しててワロタw
サーバが落ちる落ちないの問題ではないんだよなぁ
そして748はやはりサーバ構築経験が無いんだなと PHPerは糞 おじさん相変わらず元気に加齢臭撒き散らしてて草w
無駄な長文は無能の証拠
まぁこいつはコテハン付けてるだけマシだけどな 基本、スクレイピングじゃなくて、
サイトと契約して、サイトのAPI を使う
YouTube API, Google Maps API など
5ch も、そう。
契約して、APIを使う。
勝手にスクレイピングすると、どうなるか知りませんよと、脅し文句が書いてある
スクレイピングする所は、APIを提供していないサイトで、
robots.txt を遵守する
とにかくスクレイピングは、初心者向けじゃない。
初心者のコードには、バグが多く、
無限ループでアクセスしたりするから、超危険!
だから、そういう依頼があっても、受けてはいけない。
スクレイピングの本にも、スクレイピングしないように書いてある。
書いていないと、スクレイピングを推奨した人も、共犯者になるから
>>744
のUdemy の山浦清透、動画を参照。
PHP で、マイナビ転職をスクレイピングしてる グローバルスコープに定義した関数は、クラスの中のメソッド内でそのまま使えるのですか?
使えるのが奇妙な気がするのですが。。。
グローバルな変数は、クラス内では、そのままでは使えないですよね。 そのままでなく、
var で宣言して $this->num
昔はインスタンスの呼び出し無く使えたけど、
開発陣営に割り込んで圧かけて、
「難しくなければなりません」
と言って無茶苦茶にした人がいるんだよ。 >>779
クラス内で global $hoge; とすれば使えるけど?
逆に聞くが、クラス内でグローバルスコープに定義した関数を使う際には、どういう風に使えたら奇妙じゃないとお前は思うんだ? >>779は namespace を理解してない可能性もあるか… >>781
>>どういう風に使えたら
グローバルな関数を、いわば閉じてるクラスのメソッド内で使えること自体が奇妙に思えたのです。
オブジェクト指向のカプセル化に反するせいかもしれません。
たまたま、今日、グローバル関数をクラスメソッド内で使ってみたら使えてしまい困惑したので、
気になり尋ねてみた次第です。
global $hoge; みたいに宣言してから使うなら、なるほど納得できるのですけど、
宣言なしで、いきなり使えてしまい、戸惑ってしまいました。
便利ではあるけど、使うのはちょっと怖い感じもします。 PHP言語を開発した私が話についていけないなんて!
いやぁぁぁーーー!!!
まあいいや。
頑張ってね。 global $hoge;//グローバル変数の宣言
global $hoge();//グローバル関数の宣言(不要)
考えてみたら、両者とも宣言が必要な方が直感的でわかりやすいですよね。 global hoge();//グローバル関数の宣言(不要)
$マークはいらなかったですね >>786
そんな仕様の言語は見たことないな
組み込み関数はどうやって使うの? >>788
なるほど、たしかに組み込み関数は、クラスのメソッド内で自由に使えますね。
ユーザー定義関数もそれと同じと考えれば、そこで使えるのは当然なのか。
目から鱗、モヤモヤ感が解消しました。ありがとうございました。 先週から勉強を始めた学生なんですが、
初心者向けの入門書の例文どおり入力してるはずなのにエラーが出たり正しく動作しなかったりで、
間違ってると思われる箇所を何度見直してもダメだったのに、
本の付録のサンプルコードでその部分を上書きすると動くようになることがあるんですが、何が悪いんですかね?
知識を習得する前に、間違い探しで日が暮れて還暦になっちゃいそうです〜_| ̄|○
機嫌で動いたり動かなかったりすることあります? 全角と半角の区別、大文字と小文字の区別とかわかる?
全角スペースって知ってる? 日本語プログラミングには落とし穴が多いんだよ。 >>790
エラー文が読めないってこと?
何行目にどんなエラーがあるかきちんと出してくれるよね? >>790
とりあえず自分の書くコード先頭に
error_reporting(E_ALL);
ini_set('display_errors', 1);
を書いて出力されるエラー文を読もうな
エラー文が読めない人はいくらやっても時間の無駄
毎回この2行を書くのは面倒くさいからこれを読むといい
https://qiita.com/fallout/items/31f793708b243033fab1 >>791
はい、ちゃんと書き分けてる筈なのにい〜(>ε<)
>>792
いえ、エラーの出た行(その行より前のこともありますが)あたりを目を皿にして見直して、それでも分からないからサンプルコードで怪しい行を上書きしたら動いた、ということが何度かありまして:
やだな〜、お盆だから何か来てるのかな? 日本語では使わない記号というのも落とし穴だね。
'と`の違い分かる? :と;の違いわかる? >>794
今度エラー出た時にそのコードをここに転載してみ
たぶん俺や他のPHPerなら見た瞬間にどこが間違いか分かるから >>794
あーあとフォントを見直した方がいいかもね
プログラミング用のエディタで使うフォントってわりと重要 >>796
(;´‘Д’:)
>>797
そうですね、またお世話になるかも知れませんが、宜しくお願いします。
フォントはMSゴシックなんですが、まずかったでしょうか >>790
動くコードと動かないコードをWinMerge等で比較したら違う箇所がわかるからそこを確認する 悪さする幽霊の正体が1つ分かりました!
同じプログラムを違うエディタで開いた際に文字化けしてて、
「これ、違うやん」と弄くり回しているうちに内容がおかしくなっていたようです。
>>801
早速試しましたが凄い、お手本との比較が一目でできて、自習には神ツールですね!
今のうちに入手できてよかったです、ありがとうございます! 最初はPHPで 、だんだんHTMLになってる。
Pythonじゃないんだが、これ、どうすればいいんだろう? <?php
//最初はPHPで、
?>
<html><head><title>だんだんHTMLになってる。</title></head></html>
Pythonじゃ(こんなことは)ないんだが、これ、どうすればいいんだろう?
…なんてPython使いが聞くわけないよな PHP8にしてみたらバグが結構でて焦る
0 == ""
これがtrueからfalseになったのが痛い
こういうキャストの理解でいいですよね
PHP7 0 == 0 true
PHP8 "0" == "" false
https://www.php.net/manual/ja/migration80.incompatible.php 結局$_session[ほにゃらら]はユーザーからいじることは不可能でいいの?埒があかないまま使ってて不安だわ 流れ読んでないけど、
セッションに登録された変数の内容をいじらせるということであれば、
$_SESSION[] = $_POST[] みたいなコードを書けば可能だし、
セッションファイルを、こちらの意図とは別にユーザが直接編集できるか?
と聞いてるなら、OSやサーバの設定が不適切だったり、バックドアが仕掛けられてれば可能。
今時大丈夫だとは思うが、共用サーバなら念の為、
セッションファイルを管理するフォルダが適切かどうか確認したほうがいい。 >>808
personal home page processor ubuntu16.04(32bit)にPHP8系ってインストールできる? じゃPHPの勉強はボケ防止やハゲ防止になりますか? ここでそんなこと聞いている所からみると、既に手遅れ感がハンパない 人によっては効果が見られるが、
このようなアホな質問をする奴に効果は無い >>814
インストールしたら7.0が入ったからどうすっか悩んでる。Laravelインストールできなくて詰んだ
パソコンが32bitのCPUだから16.04より新しいのがインストール出来ない
ググっても16.04にPHP8をインストールしようとしている人を罵るコメントしか見つからない
海外の掲示板も英語を翻訳してがんばって読んでみたんだけど英語で罵ってるだけで結果は同じだった
パソコン買い換え以外で何か解決策ないですか? >>821
7.0が入るのはOS標準のリポジトリからインストールしてるからであって、リポジトリを追加すればインストールできるよ
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php8 >>821
罵ってるのが気になるからその掲示板とやらを教えて phpspreadsheet詳しい人おる?
laravelでExcelファイルダウンロード機能作ってるんだけど関数が入ってるとうまく動かないのかな… >>824
PhpSpreadsheetはエクセルファイルの読み書きようのライブラリ
Excelファイルをダウンロードするのは、PhpSpreadsheetとはまた別の話になるが?
とりあえず問題がどこにあるのか、その切り分けすらできてない気がする >>821
apt でインストールするのではなく、
ソースコードをコンパイルしてインストールってやった事はないのかな?
>>822が書いてる通りリポジトリを変更してaptでやっても良いけど、ソースコードからインストールする方法も(やれないよりは)できた方がいいよ >>810
その「ユーザー」というのが、810の作ったウェブアプリを利用する一般ユーザーって意味なら、
セッション変数をユーザー入力(GETやPOSTのことね)で直接上書きする設計になっていたら、ユーザーがいじる事はできるわな
だから、ユーザー入力は常に汚染されていると考えしっかりチェックしようって話になる
その「ユーザー」というのが、810の作ったウェブアプリが入っているサーバの別ユーザーって意味なら、
PHPが生成するセッションファイルは、Linux系OSのデフォでは /tmp 以下に sess_xxxxx ってファイルでPHPからの読み書き権限が与えられた状態で保存されてる
※デフォでどこに保存されるかは phpinfo() で確認しよう
だから、もし別ユーザーからもそのファイルを読み書きできる状態なら、やりたい放題になる
その場合、セッションファイルを保存する場所を変えるとか、ファイルベースではなくDBベースに変更するとかして対策する >>809
書いてる内容は合ってる
そもそも == なんか使うのがいけない
=== を使えって話
PHP8の方が、人間には直感的に分かりやすい挙動だけど
型キャストなんて特別な理由がない限りはやってはいけない
WordPressなんか型キャストだらけだけど、あれは後方互換を重視しすぎたせいで設計がクソなだけ >>808
PHP
>>807
んなわけないw
出力をバッファすればどうにでもできるが、それはPHPでも一緒 Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html
第二プログラミング言語として Rust はオススメしません Nim をやるのです
https://wolfbash.hateblo.jp/entry/2017/07/30/193412
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます htmlのクラス付けについて通常はclass javascriptはidだと教わったんですが
phpのクラス付けでdiv idとdiv classのように分ける基準はどこでしょうか? >>832
> htmlのクラス付けについて通常はclass javascriptはidだと教わったんですが
これも間違い(勘違い)だと思うが
> phpのクラス付けでdiv idとdiv classのように分ける基準はどこでしょうか?
これも間違い。phpで生成したクラスをjavascriptで使うのだから、基準が違ったら困るでしょ。
同じだよ。同じ論理でCSSともね。 >>834
すいません答えを理解できないんですが
classとidをつける時はどう使い分けるんでしょうか?
idの方が優先順位が高くなってCSSの要素が強くなるんですが >>835
ググって出てくる奴を3つほど斜め読みしたけど、全部同じこと言ってる。
ここでグダグダ字だけで説明するより断然いいから、そっちを読め。
その上で、俺は違う意見だ!とか、ここが意味不明だ、というところを質問するんだよ。
お前はネットの使い方を間違ってる。 >>837
日本語が若干不自由だけど、そのまま読むなら、
当初はphp/javascript/cssでクラス/id使い分けの基準が違うと思ってたんでしょ。
なら、ここで聞くのも止む無しかと。 >>835
スタイルシートの class と id の違いと使い分け
https://allabout.co.jp/gm/gc/23897/
HTMLにスタイルシート(CSS)を適用する方法には、class属性を使う方法と、id属性を使う方法があります。
この「class」と「id」は明確に役割が異なります。
class属性とid属性の役割の違い
「class」と「id」の役割と、使用上の違いを簡単に言うと、次の通りです。
■class:
「種別名を割り当てる」
→ 同じclass名を、1ページ中に何度でも使える。
■id:
「固有の名前を割り当てる」
→ 同じid名は、1ページ中に1度しか使えない。 >>839
ありがとうございます。
自分の解釈ですが、div idは<div id="comment-<php comment_ID(); ?>">
divとhtmlが混合してるときに使って
classは<div class="postlink">
<p class="fLeft"><php previous_post_link('%link', '« %title'); ?>
</div>
あとつけでCSSを付与したいときにつけるのではないかと もう1点聞きたいのですが
<article class="article__item">
<h1 class="ttl">// <a href="<php the_permalink(); ?>"></a>
<php the_title(); ?></h1>
<time class="date"><php the_time('Y/m/d'); ?></time>
<ul class="post-categories"><php the_category(); ?></ul>
<div class="comments_link">
コメント <a href="<php comments_link(); ?>"><php comments_number('(0)','(1)','(%)'); ?></a>
</div>
</article>
// <a href="<php the_permalink(); ?>"></a>の部分をphpファイルでメモとして反映させずに記載したい場合、どのようにコメントアウトすればよいのでしょうか? >>840
違うぞ。てか誰もそんなこと書いてないだろ。
あの記事をそう読めるのなら、PHPの前に日本語を勉強しないと話にならないぞ。
それだと php.net も読めんだろ。 記事を1,2,12と分けて表示する場合if-else 文を使うと思うんですが、
例えば
RSS
記事1
RSS
記事2
RSS
記事12
RSS
フッターと並べる場合最新の記事から順に分けて表示することは可能でしょうか? >>835
また君かw
前から何度も言ってるけど、HTML, css, JavaScript, PHP
それぞれの役割分担がまるで理解できてなくてごちゃ混ぜになってる
理解力が低いのに、基礎をすっ飛ばしていきなりWordPressからやるからそうなるんだ
>>839を読んでなぜ>>840の解釈になるのよ
意味がわからんw
もう独学するのはやめてスクールで基礎から学べば?
今のままいくらやっても時間の無駄だと思う >>847
ありがとうございます。ブックマークしておきます。 <php
echo '<0';
$max = 103;
for($i = 0; $i < $max; $i++) {
if($i%3==2 && !empty($i)) {
echo $i.'>';
if($i!=$max-1) {
$a = $i+1;
echo '<'.$a;
}
} else if($i==$max-1) {
echo $i.'>';
};
};
記事を3件ずつ表示させる方法はわかったのですが、1,2,12件を縦に並べて表示する方法がどうしてもわかりません。
ヒントでもいいので教えてくださいお願いします。 ちょっとお聞きしたいんですが
ウィンドウズの根本というか中核のプログラムはどういう言語で書かれているんでしょうか? >>849
if ($i % 3 === 2)
の意味が理解できてないんでしょ? だから自力でできないんだよ
ほんと基礎からやり直した方がいいよ
時間の無駄 break文で記事を10件中3件表示させることまで成功したんですが、3件を除いて残りの7件を表示させたいのですが
continue文で残り7件を表示できるのでしょうか?
通常は数字とか名前とか短いものを除外して表示させる処理だと思うんですが
もしくわbreakで切って繋げた状態で処理を書く方法があるのですが
テラテイルにあるように処理が長いと重くなるので懸念してます >>853
いやだから学びながら組んでるんでしょ
そういうあなたはコード組めるんですか? >>854
日本語で頼むw
プログラミングの上達が遅い人って質問も下手なのよ
なぜか分かる?
単純にこうしてもいい
// 最初の3件だけ表示
for ($i = 1; $i <= 10; $i++) {
echo $i;
if ($i === 3) { break; }
}
// 4件目以降だけ表示
for ($i = 1; $i <= 10; $i++) {
if ($i >= 4) { echo $i; }
}
データが配列に入っているならこうしてもいい
$arr = range(1, 10);
// 最初の3件だけ
print_r(array_slice($arr, 0, 3));
// 4件目以降だけ
print_r(array_slice($arr, 3)); >>854
データベースから取得するデータを変えてもいい
10件中3件しか表示する必要がないなら、
そもそも最初から3件分のデータだけ取ればいい
SQLなら SELECT 〜略〜 WHERE 〜略〜 LIMIT 3 のように「LIMIT句」を付ける
残り7件を表示したいときは上記の続きから
LIMIT 7 OFFSET ○
とすればいい
>>855
そりゃ組めるわなぁ
喧嘩売ってんの?w >>835 = >>854 か
ワッチョイかぶってるから紛らわしいんだよなぁ
頼むからコテをつけてくれ
お前は「学びながら組んでる」というレベルじゃねぇよ >>857
失礼いたしました、勉強になります
ついかっとなってしまいすいません…
コテハンつけました。
繋げて途中でRSSとか出力しても重くならずに動かせますでしょうか? >>859
そんなのコードを見てみないと分からんよw
ただし、ウェブアプリのボトルネックの多くはDB処理にあるって事は覚えておくべき
つまり、DBから10件取得したものをどう扱おうが(よほどおかしな事をしない限りは)大差はない
だからレベルなら、重くなるかも…なんて事をウダウダ考えず
それはあとに置いておいて、「とりあえず自分にできるかどうか?」を試せばいいじゃん
それすらできないなら、重くなる云々を考える事自体が時間の無駄でしょ?
もし作ったものが重かったら、重い原因を突き止めて改善すればいい
考え方の順番がおかしいんだよ
PHPなんて簡単なスクリプト言語なんだから、うだうだ悩んでる暇があったら書いて動かした方がはやい
もちろん他人に迷惑のかからなローカル環境でね
だからもしローカル環境すら作れてないなら、そこからやれって話になる >>859
>>860じゃ何言ってるのか分からんかもしれないか…
1.DB処理
↓
2.ごにょごにょした後処理
↓
3.出力
とやった時にもし重くなるなら、その原因は大抵は1にあるってことね
※2でよほどおかしな事をしてない限り
にも関わらず860は、「とりあえず試す」ことすらせずに3で悩んでる
それは時間の無駄じゃね?って俺は言ってる
今日はこれで終了
俺はたまに気が向いた時しか答えてないし、もっと優しい人が答えてくれるといいな >>859はローカル環境すら構築してない。
(レンタルサーバーの30日間無料試用期間が終わって本契約しなかったから)データ全部消えたって別スレで言ってたから。推測だがサーバー側のファイルを直に弄ってる。
259 名前:名無しさん@お絵かき中 (オッペケT Sr73-Y0h+) :2021/08/21(土) 22:37:33.20 ID:NVDoOS7qr
厳密にはサイトのサーバー契約が切れて中のデータが削除されてる状態ですね
作り直してますが データベースは、情報処理資格のデータベース技術者を勉強したか?
第3正規形とか、1対多・多対多とか、インデックスとか、実行計画とか、
ミックの本も読んだか?
Ruby on Rails をやる香具師は皆、これらを勉強している
そうじゃないと、2つの表の積になる。
例えば、表Aに千件、表Bに千件なら、千 * 千 = 百万
表の積にしてはいけませんよとか、
基本的な計算量が分かっていないと、システムを組めない >>860
組んだから考えると言いますが何処で速度の測定をするんでしょうか? >>862
無料期間じゃなく正式に契約しててキレたんですよ
半年文 1万円無駄にしたって書いたでしょ >>865
194 名前:1 ◆YagGt6RMp2 (アウアウウー Sa63-z27x) [sage] :2021/08/20(金) 16:43:17.91 ID:6SN5UR3Va
半年間サイトを運営してたんですがバナーの問題で1万円無駄にしてます
普通の人間はコレ見てサイト契約してたとは判断できねーだろ。説明不足にも程がある。
後、作りかけのサイトをいじくりまわしてただけなのを「運営」って言うつもりか…? 散々基礎をやれと言われ続けてるのに毎回どこぞのソースコピペして「動かないですなんとかして下さい」で何も学ばないんだから、そりゃ無駄になるわな >>865
お前まさか1年やってて今これか?
ならもう向いてないから諦めた方がいい。
おかしなプログラミングスクールの宣伝に引っかかって一発逆点とか勘違いしているのかもしれんが、
プログラミングは馬鹿では出来ないし、(すごく頭がよい必要もないけど)
それなりに学校の勉強の延長線上にある。
お前はプログラミング/プログラマを舐めすぎ。
お前が引っかかってる案件は、学校でなら3日目くらいで修得するところだ。
お前は態度も悪いし、頭も馬鹿すぎる。
(そしてここのスレにいるような連中はほぼ全員、そんなこと3分くらいで書ける。お前失礼すぎ。
ただし程度が低すぎで煽りにもなってないが)
今ならいくらでも大学の講義資料なんて転がっているのだから、学ぶ気があればその大学に入っていなくても同じ事を学べる。
この意味ではいい世の中になったのだけど、だからこそ、糞であるのはお前だけの問題だね。 釣りじゃないんだよなぁ
そいつお絵描き板で全く同じムーブかまして呆れさせてる真性やぞ 5chで質問するやつはバカ
teratailに行ってまずは殴られてこい
殴られてダメだと思ったら諦めろ 3分でとける?そんなわけないでしょ
言っておくと一応書けますが記述が重いから別の方法はないですかと聞いてる
それにコード見てもらえれば分かりますが300行ぐらいあるんですよ?
だからそのコードを上手くまとめる方法がないかと調べてなかったので聞きました >>871
あなたはお絵描き板の人間でしょ?
何でこっちにきたのコードも書けないのに そもそもコピペしてコードが組めるわけないだろ
考えて分からないから聞いてる
質問だって丸投げにしてないし調べてるでしょ
パターン1があるんですが別の方法を教えてくださいと テラテイルって結局コード載せても教えてくれないし自分で考えてクリアしろって言ってるようなもんでしょ
どの質問見ても質問者の回答が90%レベルまで完成して残りの10%程度ですよ 取り乱してしまいすみません。
調べてみてどうしても分からない時に出来るだけ聞いてます。
初めは丸投げばっかりで迷惑かけたのは反省してます。 Ruby on Rails の学校では、必ず自走力を問われる。
自分で検索して解決する能力
他人に答えを聞いても、仕方ない。
企業・社会は、そういう人を求めていない
求めている人は、自走力のある人。
自己解決能力
大学の問題が分からなければ、高校へ戻る。
それも分からなければ、中学へ戻る。
それも分からなければ、小学校へ戻る。
究極は、0歳児まで戻る。
それが基礎から始めろという意味。
他人は関係ない。
自分が分かるレベルまで戻ること
そこから、新たに積み上げていく
それと、コテハンを付けてくれ。
誰が書き込んでいるか、分かりにくいので
全員が、YouTube で有名な、雑食系エンジニア・KENTA のサロンで、
Railsを学んでいるのには理由がある。
学習環境が整っているから。本・学習教材が多いから
WordPress には、そういうものが無い。
デザインの本ばかりで、プログラミングの本もない。
だから、プログラマーは手を出さない。
学習環境がないから 結構色んな人が教えてくれてるのに逆ギレしたらいかんでしょ 半年で1万円とかただみたいなもん
求めすぎだろう
自力で進められないなら、ちゃんとした学校入ろうよ 自力で進めないから学校入れって…
じゃあテラテイルとかYahoo知恵袋とか何のためにあるのやら…
それにどうしても分からないなら参考書買いますよ >>883
自力で進められるやつは、体系的な基礎知識の重要性知ってるからなぁ。。。
お前は独学向いてないよ どうでもいいんだけどさ、なんで最初から有料のレンタルサーバー使ってんだろ
まずローカル環境でコード書いてテストして、そこからレンタルサーバーに導入するのが基本筋だよな
PHPのテストだってXAMPP使えばいいし
テストを人に見せるだけなら、無料のレンタルサーバー使って見せればいいし
一万円無駄にしたって言うけどそういうところちゃんとやったの? >>885
やってなかったです
まぁ色々バナーの件とかありまして
ローカル環境でやれば良かったです エンジニアが全員学校行ってるわけないでしょ
学科が違う人もいるわけだし、学校なんか行っても大学の授業中に勝手に頭に入るわけないでしょ
結局独学で勉強するかどうか 学校行っても授業なんて聞いてませんでしたよ、本読んでる人もいたし 彼は自分の基礎能力を不相応に高く見積もっているからだよ
実際には他人より著しく劣るのに「やればじきに習得できる」と思っている
だから常に見込みが甘い エンジニアは勉強をどれだけやったかどうか
独学でやるしかない学校行って全員成功できるわけがない これがいわゆるダニング・クルーガー効果というやつですね
ていうか1はここじゃ個スレ建てないの? 1ってさ、バナー絵描いてサイト作成したらゴールラインだと思ってそうだよね
そこから競合他社(っていうの?)とどうコンテンツを差別化して蹴落とすかを考えながら運営するのが一番のメインなのに、熱量の配分が間違ってる気がするわ
競合他社はlivedoorブログで効率よく作成とメンテナンスをしてるのに、簡単なプログラマングで躓いている1がまともに戦えるかというと、難しいよね >>892
できれば個スレの方でお願いします
あとライブドアはPHPいじれませんので、カスタマイズ性に劣りますし
広告もオーバーレイで仕込めません >>436
まー普通はそう思うわな。
でも本人の口から語られた真実聞いたらびっくりするぞ。
別板で
865 名前:デフォルトの名無しさん (アウアウウー Sa63-LN3e) :2021/08/23(月) 22:15:13.77 ID:xp75siXWa
>>862
無料期間じゃなく正式に契約しててキレたんですよ
半年文 1万円無駄にしたって書いたでしょ
つまりバナー描いてる間にサーバ契約してたのにファイル削除されたので料金(1万円分)損したって事なんだぜ。エスパーでもなきゃわからないよな。 基礎も知らないのに金稼ぎか知らないが自前でプログラムって正直甘いよなw
多分こういう奴は学校とか行っても無理かと思う
出来る奴は自分で調べて解決出来るしな
まぁ、そもそもコンピュータの事やwebの事知らなさすぎじゃね? 自分の場合、
web系は敷居が低いが、非web系はものすごく難しい。
html系から出発しているからだと思う。 誰もツッコまないから書くがレンタルサーバーでプログラムの勉強するのやめれ
ミスで負荷かけたら他人に迷惑かかるよ
ローカル環境作ってデバッグしてからレンタルサーバーにアップロードしなよ
ローカル環境ならデバッグ環境も整うしね >>899
ファイル消されてのはたぶんレンタルサーバーで直接ファイルいじって高負荷かけまくってたからだと推測してる。 なんか盛り上がってるみたいだが流れを読まずに上から順に淡々と回答
理解力に乏しいアホの疑問はさっさと解決し、スレから出ていってもらいたい
>>864
古くからの定番なのはApache Bench
Windows環境でも使えるからググろう
この手の疑問が出た際に「ベンチマーク」って単語を使ってググれないのはセンスがない
>>865
開発はローカル環境で行うもんだ
ローカルに開発環境すら構築していないのにこれ以上やるのは時間の無駄
WordPress向けのローカル環境構築は、理解力の低いアホはXAMPPでやればいい
個人的にお勧めなのは「VCCW」と「WordMove」での環境構築だが
>>875
たったの300行なら、paiza.ioにそのコードを書いてもらえばいい >>878
teratailは基本ルールが守れてない人には回答はつかない
この調子だと呆れられてるだけだろう
>>879
前から同じことの繰り返しだし反省してないよね
まるでDV男だ
暴力をふるった後に「こんな事するつもりじゃなかった!愛してるよ」の繰り返し…みたいなw
>>883
頼むからコテハンを付けてくれ
独学できる人とできない人との間には決定的な違いがある
俺やここの人の何名かは独学で身につけたが、883には独学するセンスはない これは断言しとく
独学できないのが駄目ってわけではない
センスがないのに独学を続けるのは時間の無駄ってだけ >>901
ローカルサーバーは設定が面倒で使ってなかったのですがWindowsのフリーソフトでは
XAMPPやApache Bench で使えるって事でしょうか? 例えば「大人のADHD」ってあるけど、
大人になってから自分に学習障害があるって事をどうしても認められず、自分も周りも不幸になっていくって人がいる
学習障害を持つ人は素直に早い内に障害を受け入れ、大手企業の障害者雇用枠辺りを狙った方が、自分も周りも幸せになる
独学できるできないも一緒の話
独学できないのは仕方ない
独学するセンスがない事を素直に認め、スクールなどで手取り足取り教えを請うという方法を模索した方がいい
>>887や>>888は、独学できる人のセリフであって Sa63-LN3e が言うセリフじゃない >>904
つべこべ言わずにローカル環境を構築すればいい
やってから質問すればいい
お前は結局やりもせずに「自分がやらない言い訳」を作って面倒事から逃げてるだけなんだよ
>>879や>>886のセリフはもう忘れたの? 今日はもうこれで最後にしとくが、Sa63-LN3eは考え方が「他罰的(外罰的)」なんだよね
自分は悪くない!悪いのは周りの人間だ!
5chによくいるニート・こどもおじさんがこのパターン
自分は悪くない!悪いのは国だ!政治だ!学校だ!先生だ!親だ!
ってねw
自分の努力不足などを棚にあげてそんな事をいくら吠えても
やがて誰もまともには相手にしなくなる この人はコテハンつけてくれってのを受け入れるまで個スレ丸4つほどかかった人間だぞ >>875
3分で、というのは問題解決の根幹部分、つまり856の内容のことだ。
お前の質問は、お前にも分かるように言うと、
「ひらがながうまくかけないんですけど、どうすればいいですか」
であって、マジレスするにしてもどうしろと?なんだよ。
> 言っておくと一応書けますが記述が重いから別の方法はないですかと聞いてる
ならそのコードで行け。それ以外無いよ。
ただちなみに言っておくと、初心者の「重い」ってのは全く当てにならない。
実際の負荷をきちんと計測するのは見た目以上に難しくて、初心者が適切に対応出来る案件ではないんだ。
だからお前の「重い」もデタラメだとは思うが、それも含めて、
初心者なのだからある程度試行錯誤(=味見)するしかないのも事実で、そのコードで行くしかないよ。
そしてその後上達したら、その自分が書いたコードがとんでもなく糞だったと理解出来るようになるだろうよ。
>>883
ネット上の質問は、自力で進められる奴が何か勘違いして引っかかっている時とかには有効だ。
逆に言えば、それ以外では大して意味がなく、学校で体系的に習った方が断然いい。
ただお前は独学に向いてもないが、学校に行っても駄目な奴だと思うよ。(他の人も言ってるけど)
だからプログラミング自体を諦めた方がいい。仮に上手く紛れ込めても、ろくな未来は待ってない。
絵が描けるのなら、絵で勝負すべきだよ。
そして絵で稼いだ金でプログラマに発注して望む物を作ってもらえばいい。
青水庵とかいう有名同人(らしい)がこれやって話題になってたけど、やり方としては正しいよ。 >>907
それにはゆとりの驕りを感じるけどね。
ゆとりは実力があったのではなく、社会情勢(景気=求人状況)がよかっただけ。
とはいえ、人は皆一度きりの人生しか歩んでないから、そんなもんだと勘違いするのも道理なのだけど。
自分が目指してきた事の先に道がつながってない状況に遭遇した時、たくましく方向転換出来る奴なんてそう多くはないのだよ。
良い就職を目指してあれこれ頑張ってきたのに、そもそも求人がないのではどうにもならんだろ。
そこで凹んで腐ってしまうのは当人の問題でもあるけど、
ゆとりなんてメンタル弱いし、同じ状況ならもっと沢山腐ってる。
それを認識出来ずに「俺ら最強」みたいな勘違いをしてるからゆとりは嫌われる。
がまあ、それも含めて、Web系は比較的自由な状況のようだし、
悔しければブログでも何でもいいからサイト立ち上げて勝手に稼げ、が出来る状態なのは良いことだよ。
そしてゆとりの実力が評価されるのはその次の世代、つまりさとりが社会人3-5年目になって、さとりだけで仕事が回るようになった時だ。
そうなって初めて、お前らは調子乗りすぎてたって自覚出来るのだとは思うよ。
(だから今のお前らに言っても無駄なのも事実なのだけど) 「サイト作るのは無理そうだから絵描けるなら絵で勝負しなよ」
「絵描くのは無理そうだからサイト作れるならそっちで勝負しなよ」 >>911
他の専門板なんて見る機会ないから、試しにpart7とIP有り(part8)を読んでみた。
民度が高くてびびった。
いや、これ以前に色々あったのだとは推測するが、基本的にみんなちゃんとアドバイスしてる。
むしろ、こんな専門板がまだ残っていたのか!と驚きだ。
この板なんてマジで腐ってしまってるし。
が、まあ、やってることがいちいちおかしいのはさておき、
プログラマか絵描きかと聞かれれば、向いてるのは絵描きのように見える。
とはいえ、一枚のバナーで集客出来るほど絵に魅力があるわけでも無し、
既にあるlivedoorブログ等を凌駕するほどの何かを組めるプロブラミング力があるわけでも無し、
こいつは色々舐めすぎだよね。
プログラミングも絵も同様に「技能」だから、修練しないと出来るようにはならない。
それでも、こいつがどちらの修練に向いているかと言われれば、見てる限り絵のように見える。
途中経過等も上げまくってるし、本人なりに楽しめているのだろう。
なおプログラミングに向いているのは、例えば>>680とかだ。
「楽しめてない奴」が「楽しめてる奴」より時間を費やすのは難しいから、楽しめてること自体が素質だよ。
だから680は上達するタイプだとは思うが、方向性はもうちょっとマトモにした方がいいとは思う。 >>883
>どうしても分からないなら参考書買います
これで、分かるようにならない
課題は無数にあるから、数冊に書けるわけがない。
それに入門書が10冊あっても、内容は同じだから、1冊分しかないのと同じ
例えば、プログラムの本には、決済システムが書いてない。
検索システムや、データベースの改善方法も書いていない
こういう課題は無数にあるから、無数の本が必要になるから、無理。
だから皆、調べる力を付けるために、学校・サロンへ行く。
これが自走力。
どこの学校でも、自走力・自走力と、うるさく言われる。
勉強した人には、ほぼ無限に領域がある事を知っているから
YouTube で有名な、雑食系エンジニア・KENTA のサロンとか、
Udemy の山浦清透、AWSのくろかわこうへいのサロンとか、
皆が入るのは、東大専門予備校と同じ。虎の穴
自走力がついて、転職競争に勝てるから。
ここで1年勉強するだけで、10年以上のプログラマーよりも上になる
独学で10年勉強しても、まず、サロンの1年生に勝てない KENTAとかそんな奴知らんし、いちいちそういう固有名詞出すのも怪しい
長文書くのも基本的にはダメな奴の特徴 0881 1 ◆YagGt6RMp2 2021/07/22 22:45:20
海外の方も来れるように翻訳機能を搭載して戦えればpixivなんか勝てます
ID:7voVJ3lT0(2/4)
こんな事言うヤツやで、いかに舐めくさってるかわかるやろ。 KENTA は本の著者。
日本6位の3千人が、サロンに入っている
Udemy の山浦清透も3千人。
AWSのくろかわこうへいは、数百人
Ruby on Rails, AWS, Docker などを使って、
日本の教育革命を起こした、3人 なんでオンラインサロンに当てられてるタイプの人って句読点多いんだろう。
ヤバい奴の中でも打倒pixivの日本語は句読点少ないから世代なのかな。 まあ、たしかに、句読点が、多いと、違和感が、あるよな。
俺も、よく、付けすぎる、時が、あるけど、いらない所、は、消すように、してるわ。 文章は、リズムで読んでるから、無駄に句読点多いと、ペース悪くて、めちゃくちゃ読みにくいわ。
同じ理由で単語ごとに、絵文字使うやつも、苦手。
視覚的に認識してる割合が強い人は、句読点多いほうが意味のまとまりが可視化されて捉えやすいのが好きなのかもしれないね。 可変サイズのフォントで、文字の切れ目が分かりにくいからかな?
なんか詰まりすぎるから、開けたくなる ここではきものを
みたいな文だと、誤解されないように読点か空白を入れてる もちろん句読点がなさすぎて読みにくくなる文もある。
ただ >>915 の牛歩みたいな句読点の多さだったり、
「エンジニア・KENTA」「自走力・自走力」みたいな、記号を新解釈用法で使いだす文章見ると、
相手に伝えるための文章書くときに、世間一般的なルールに従うより自分が使いたいと思うやり方でやるタイプの人なんだろうなとは感じる。 LP等で特定の文字のみ装飾つけて強調したりすることもあるじゃん
それの変化型かなと思わないでもない
装飾がつけれないから句読点で区切ってるとか
何かの演説っぽくて鼻につくけどね Eigo ha supeesu ga Ookute yomi Nikui desu Ne PHPなんて双方向通信にしか使ってないけど
他にもいろんなことできたんですね
でも他のことあえてサーバープログラムでやる気しないけど
普通にJavaSpiriteでよくないすか
すか 5chだとすぐ句読点がー長文がーって話になるけど
プログラミングできない人(多少できたとしてもウンココード量産する人)って、日本語の文章を書くのも下手よね
TwitterやLINEなどのショートメッセージサービスばっか使ってるせいで、
いざビジネスメール書かせるとめちゃくちゃだったりw
長文の活字を読まないせいで、仕様書を理解するのがやたら遅かったりw 偶然読んだひろゆきのコラムか何かで
何かの信者になる人は頭の悪い人(だから自分の信者もバカばっか)みたいな話があったな
ひろゆきは嫌いだが、たまには良いこと書くなって思ったw >>917
そこからもう1ヶ月経ったわけだが、その間に彼が何を創造できたのか聞いてみたいもんだ
5chにクソレスしか残せてないなら笑うしかないw
創造する力もないのに口ばっかの奴って居るよな 夢を見ることは大事だが同時に現実を見ることも大事である >>931
俺は自己愛性人格障害でもアスペでもないからその話は当てはまらない共感した奴はひろゆきに似てるんだろう ひろゆきを否定する、クールでカッコいい俺を
演出するものではないことを事を祈ろうか 信者になれば自分で考えなくてよくなるから楽なんだろう
だからバカは何かの信者になるし賢い人は自分の下にバカな信者を作って都合の良い駒として活用する 条件分岐の際、複数の条件にマッチしていた場合は別の処理を行う簡潔な方法を教えて下さい
【やりたいこと】
$matched_count = 0;
if(条件1){
$matched_count ++;
}
if(条件2){
$matched_count ++;
}
if(条件3){
$matched_count ++;
}
if($matched_count > 1){
処理A
}else{
if(条件1){
処理B
}
if(条件2){
処理C
}
if(条件3){
処理D
}
}
上記のやり方では2箇所で同じ条件分岐をしているのでそれを1箇所で済ませたいのですが、いい方法はないでしょうか? すみません>>942のコード後半訂正です
正しくはこちらです(後インデントのやり方が分からず見づらくなってしまい申し訳ないです)
if($matched_count > 1){
処理A
}else{
if(条件1){
処理B
}elseif(条件2){
処理C
}elseif(条件3){
処理D
}
} ビット演算子やら使うのがプロっぽいけどまあ簡単な方法としては
条件1 $matched_count+=1;
条件2 $matched_count+=10;
条件3 $matched_count+=100;
switch ($matched_count)
case 1: 処理B; break;
case 10: 処理C; break;
case 100: 処理D; break;
case (substr_count((string)$matched_count, '1') > 1): 処理A; break; $matched_countって、これ以降の処理で使ってるのか?
この範囲内だけ見てると、ほとんど意味が無いように思えるんだが switch (条件) {
case (条件1): 処理A; break;
case (条件2): 処理B; break;
case (条件3): 処理B; break;
default: break;
} 訂正
条件1、条件2、条件3のいずれも成り立たないときに
$matched_countが1以上になることってあるのか?
switch (条件) {
case (条件1): 処理B; break;
case (条件2): 処理C; break;
case (条件3): 処理D; break;
default: 処理A; break;
} >>949
そうですよね。なんか変。
>>942
>>943
やりたいことは単純なのに、却って複雑にしてるようだ。
ifの入れ子もあまりよくない。
複数の条件に合致するなら、if((式1)&&(式2))のように、「かつ」の&&演算すればいい。
この方があとで読み返しても理解しやすい。 ユーザーが検索したワードを許可なく勝手に検索ワードとして表示するのは違法でしょうか? それがアウトならサジェスト機能もアウトやな
やるんだったら利用規約に使うよと書いておくのが無難かな 検索ワードは、保護すべき個人情報か?
個人情報とは、個人に紐づいた情報じゃないの?
詳しくは、法律上の個人情報の定義を参照 誰がその検索ワードを使ったかが分かる様に表示したらアウトになるかもね file_put _comentsの戻り値を確認したいんですが、$f_pathでファイル保存する場合
どうやってfalse処理を確認するんでしょうか?
仮想環境でテストするんでしょうか? >>955
false時の動作を確認したいのなら、$pathに存在しないパスを与えればfile_put_contents()は失敗する 以前教えてもらったword moveとか調べましたが、結局のところコマンドプロンプトでパッケージインストールするのと同じですよね $keyword_data = array(date(‘Y-m-d-G-i-s’), $_SERVER[“REMOTE_ADDR”], $_GET[‘s’].PHP_EOL);
$keyword_data = implode(‘,’, $keyword_data);
for($i = 0; $i < sizeof($keyword_data ); $i++ ) {
if(strlen($keyword_data[$i]) > 200){
exit;
}
$keyword_data[$i] = htmlentities($keyword_data[$i]);
}
file_put_contents($f_path, $keyword_data, FILE_APPEND);
//ファイルの末尾に追記する
}
これで検索フォームを使ってリファラから検索ワードを表示したいのですが、うまく保存されません。
パーミッションの問題はないと思うんですが何が原因でしょうか? $f_path = “wp-content/themes/monomode/test.csv”;
で検索ワードを格納してます ひょっとして、HTML から、サーバーにあるファイルを更新しようとしてるの?
サーバーにログインもしていないのに? >>958
コードも丸々コピペかよ。お前だいぶ酷いわ。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11248564556
ただ、絵スレでも問題になってるが、回答もらってるんだからまずはそれを試せよ。
一通りも書けないのに回答/助言をガン無視するなら質問する意味ねえだろ。 >>964
すいません…
明日XAMPPで試してみて、エラーがわからなかったら聞きます >>963
違いますよ外部の人が検索してそのワードを保存して表示させようとしてます >>965
そういう問題じゃねえよ。というかお前何がどう問題視されてるか、まるで理解してねえな。
ただそれ以前に、俺はお前がコード書く意味はないと思うんだけどさ。
ライブドアブログでまとめサイトやってる人が居る=そこで提供されている機能で十分出来る、ということなのだから、
まずはその範囲で始めて、どうしても必要なら後で機能を足していけばいいだけだろ。
お前がそのコードで実現しようとしている機能は、本当に必要不可欠な物なのか?
俺にはとてもそうとは思えないんだけどさ。
まとめサイトってのは、そこでおもしろおかしくまとめられている「内容」を読みに来るものであって、
お前が拘っている「機能」を利用しに来る奴が居ると思っているのか?しかもろくに動きもしないのに?
同様に「バナー」も割とどうでもいいと思うが、それでも「サイトの顔」ではあるから大切にはすべきだろうよ。
このままだとどう見てもあと2週間では終わらないだろ。切るとしたらまずはコード(PHP)だと思うけど。
コード書かなくてもまとめサイトは出来るわけだし。 1. ユーザーが、ブラウザに検索ワードを入力して、サーバーへ送信する
2. サーバーで、ユーザーからのRequest を受け取って、
データベース・ファイルなどに、検索ワードを保存する
データ保存は、Ruby on Rails とか、どのウェブサービスでもやっている事。
基本中の基本。
3大データベースとか、S3, Aurora とか
これが出来ないと、かなりヤバイ。
入門書すら読んでいない事になる。
絶対に、入門書に書いてあるはずだから
でも、WordPress の本には、そういうプログラミングの事は書いていないか エロサイトなどでは、自分の検索ワード履歴とか、
他人の検索ワード履歴も表示するサイトもある 半年でウェブアプリを5.6開設したんだけどどうやって個人ではどうやって広めるもんなの?Twitterとか? >>973
そのウェブアプリはニュースにする価値のあるものか?
あるなら、どこかに頼んでコンテンツや記事やウェブ広告にして頂こう。お金はそれなりにかかるかも知れないが、自己責任で頼む。 >>973
PHP全然関係ないがネット広告とかある程度金を投入しないとそもそも厳しいかと
無料で自分でやるなら真っ当な方法はSEOだろうけどこれはこれで別の技術が必要だしなぁ まずはここに張りなよ
サイトの内容がよければなんJにも伝播して自然に広まる >>974 >>945
サンガツまず調べて値段に釣り合うならやってみるわ >>976
そうかその手があった。
あれやこれやの名前を都道府県別に答えるサイト
https://korenanteiu.net
旅が好きだから、海外の情報をマップ上に表示するサイト
https://tabinote.info PHPって何に使うんですか?
PHPでUnity作れますか? PHPは主にマルチプラットフォームでコンソールアプリケーションを作成するための言語です。
ですので、もちろんゲームを作ることもできます。
かの有名はローグライクゲームのNetHackもPHPで作ることができます。 <php
setlocale(LC_ALL, 'ja_JP.UTF-8');
$fp = fopen('test.csv', 'r');
flock($fp,LOCK_SH);
$rows = array();
while ($row = fgetcsv($fp)) array_push($rows, $row);
flock($fp,LOCK_UN);
fclose($fp);
foreach (array_slice($rows, -10) as $row) vprintf("%s %s\n", $row);
var_dump($row);
?>
csvデータを下から数えて10行目から最後までを表示させたいんですが、何回直しても文字だけ出力されません
なぜでしょうか?
var_dump($row);で確認したところ
2021-09-07-4-27-36 126.156.166.227 2021-09-07-4-27-52 126.156.166.227 2021-09-07-4-31-03 126.156.166.227 2021-09-07-4-50-36 126.156.166.227 2021-09-07-4-52-03 126.156.166.227 2021-09-07-4-52-15 126.156.166.227 2021-09-07-4-52-26 126.156.166.227 2021-09-07-5-01-27 126.156.166.227 2021-09-07-5-14-25 126.156.166.227 2021-09-08-4-48-06 126.133.202.39 array(3) { [0]=> string(18) "2021-09-08-4-48-06" [1]=> string(14) "126.133.202.39" [2]=> string(40) "ううううううううううううう " }
と出てます したいのはこう言う事?何も確認しないで書いているがw
$max = count($rows);
$start = $max - 10;
if ($start < 0) $start = 0;
for ($i = $start;$i < $max;$i++) {
var_dump($rows[$i]);
} >>980
ねぇねぇワクチンが足りないとか余って捨ててるとかなんなの?
PHPだったら1億2千万人のデータベースぐらい余裕で作れるんじゃないの? >>982
値は出力できているのに詰まっているのか
vprintf("%s %s\n", $row);で文字が表示できません
メモ帳で
2021-09-03-13-28-52,126.255.28.185,"0
"
2021-09-03-13-28-52,126.255.28.185,"ううう
"
2021-09-03-13-29-46,126.255.28.185,"ううう
"
2021-09-03-13-29-49,126.255.28.185,"ううう
"
2021-09-06-14-43-33,126.204.198.239,"ううううううううううううう
"
2021-09-06-14-45-37,126.204.198.239,"ううううううううううううう
"
2021-09-07-3-09-52,126.156.166.227,"ううううううううううううう
"
2021-09-07-3-10-34,126.156.166.227,"ううううううううううううう
"
"ううう
"
と書き換えると
2021-09-03-13-28-52 126.255.28.185 2021-09-03-13-28-52 126.255.28.185 2021-09-03-13-29-46 126.255.28.185 2021-09-03-13-29-49 126.255.28.185 2021-09-06-14-43-33 126.204.198.239 2021-09-06-14-45-37 126.204.198.239 2021-09-07-3-09-52 126.156.166.227 2021-09-07-3-10-34 126.156.166.227 ううう 2021-09-08-8-39-56 126.133.201.56 2021-09-08-8-40-31 126.133.201.56
と表示されます >>985
>>984がゔゔゔゔ苦しそうだから助けてあげて >>984>>988
CSVファイルの改行の位置がおかしいが、それでも読めるはずなんだよね。
コードがおかしいのか・・・・・・。 vprintf("%s %s %s\n", $row);
だと思うんだけど、
それでも、うちの動作環境では表示されない。 >$keyword_data = array(date('Y-m-d-G-i-s'), $_SERVER["REMOTE_ADDR"],$_GET['s'].PHP_EOL);
日付、IPアドレス、投稿内容の3つのカラムで格納したのを無視して、
$rows = array_slice($rows, -10);
> vprintf("%s %s\n", $row);
としていたので、格納したデータと表示したいデータが結びついていないのが原因でした。
また3カラムで格納したのに、2カラムで表示しようとして空データが返ってきていたようです。 例えば、Ruby のCSV では、
列内に、クォート文字"・列区切り文字,・改行があっても、正常に動く
require 'csv'
input = <<"EOT"
"a""a","b,b",あ
"c
c","d\nd"
EOT
p input_ary = CSV.parse( input ) # 2次元配列
#=> [["a\"a", "b,b", "あ"], ["c\nc", "d\nd"]]
# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str
出力
"a""a","b,b",あ
"c
c","d
d" このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 134日 4時間 32分 38秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。