Discuss Scratch

Doctor_Fe
Scratcher
100+ posts

Scratch以外のプログラミング言語やってる人交流場

ふと思い立ってこんなものを作ってみました。大したものではありません。
他の言語でもやってみたいです。

世界のプログラミング言語で階乗
Bellomaker
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

CSSを書いてサーバーに置こうとしたら動かなかったので確認したら拡張子が「.cs」だった模様…

Last edited by Bellomaker (Oct. 28, 2021 10:24:35)

Windows1000000_2
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

Bellomaker wrote:

CSSを書いてサーバーに置こうとしたら動かなかったので確認したら拡張子が「.cs」だった模様…
よくある間違いですね()
C#とCSSって・・・()
fumi_fumi_0916
Scratcher
5 posts

Scratch以外のプログラミング言語やってる人交流場

pythonとc(ほんとに基礎だけ)やってます
camittel
Scratcher
29 posts

Scratch以外のプログラミング言語やってる人交流場

初めまして。
CとC#とC++とjavaを使用してます
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

こんにちは。
今Glitch(アカウント名変えています)でチャット(名称は言えません)を作ってるのですが、
チャットを作るに当たって、IPBANをできるようにするという
安全面から閲覧者のipアドレスをログに保存するようにしようと思いました。
ただ、
$_SERVER["REMOTE_ADDR"];
とすると必ず127.0.0.1となり、
getHostByName(php_uname('n')); 
としても、必ず172.17.0.12となります。
Glitchではip取得制限でもあるのでしょうか…
それを回避するglitch.jsonがあれば教えていただきたいです。
Bellomaker
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

少し論点がずれますが、IPをログに保存するのは危ないのでハッシュ化することを推奨します。(すでにそうならすいません)
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

ハッシュ化したら私も開示できないのでハッシュ化はしていません。
ipアドレスから特定するには警察を通す必要があるため、
普通に保存しても問題ないと思いますが。。。
あと、実質ほぼ非公開なDB(暗号化)使うつもりなので
大丈夫です。
Es-2
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

glitchで作った作品を消すにはどうすればいいですか?
Bellomaker
Scratcher
500+ posts

Scratch以外のプログラミング言語やってる人交流場

ダッシュボードで作品にカーソルを当てて、でアーカイブすることができますが、消去はできないみたいです。
Es-2
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

#1805
ありがとうございます、アーカイブ機能を使ってみます。
Windows1000000_2
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

tsumuri3 wrote:

getHostByName(php_uname('n')); 
としても、必ず172.17.0.12となります。
Glitchではip取得制限でもあるのでしょうか…
それを回避するglitch.jsonがあれば教えていただきたいです。
試しにNode.jsでやってみました。
app.get("/", (request, response) => {
  console.log(request.connection.remoteAddress);
});
しかし、この場合も、結果が
::ffff:127.0.0.1
となり、本当のIPが表示されません。
よって回避はおそらく無理です。
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

他にサイトに入ったタイムスタンプとipログを記録するサービスがあったりしますか…?
(安全のためiploggerを除く)
Poteto143
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

まさにtsumuri3さんと全く同じ内容で困っている人がglitchのフォーラムにいました。
掲示板でリンクは載せられないので引用します。
$_SERVER['REMOTE_ADDR'] does not get the expected value.
Instead you need to get it from $_SERVER['HTTP_X_FORWARDED_FOR']
This can be checked with phpinfo(). Please confirm your global IP address in advance.

when you look at $_SERVER['HTTP_X_FORWARDED_FOR'], you get the following value.
54.230.173.96,::ffff:10.10.10.246,::ffff:10.10.86.4
So you need to split it with , to get 54.230.173.96.
<?php
  $ip = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
  echo "{$ip[0]}\n";
This will output the IP address.
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

成功しました!!
ありがとうございます!
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

と、今度は、それを保存させたら
Arrayとしか記録されなくなりました…
表示はできるのにtxt記録ができません…

多分コード見せても何のサイトか分からないと思うので一部切り抜いて貼ります。
<?php
$time= gmdate("Y/m/d H:i:s ", time() + 9*3600);
$temp= $ip = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
file_put_contents("log.txt", $time . "(" . $temp . ")\n", FILE_APPEND);
$temp2= file_get_contents('log.txt');
$print= explode("(", $temp2);
echo ("総閲覧者数: " . count($print));

echo ("<br>");
$ip = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']);
echo ("あなたのIPアドレス: " . "{$ip[0]}\n");
?>
log.txtに保存される値がArrayとなります。

Last edited by tsumuri3 (Oct. 30, 2021 07:01:14)

Poteto143
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

explode(“,”, $_SERVER['HTTP_X_FORWARDED_FOR']); が返す値はArray型(Scratchで言うリスト)なので、そこからipアドレスを抜き出すにはArrayの0番目を抜き出すといいみたいです。
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

0 192.16*.***.***
1 null
2 null
みたいな行列でしょうか。
何故行列になってるのか気になります…
pandakun7
Scratcher
100+ posts

Scratch以外のプログラミング言語やってる人交流場

explode関数は配列を返す仕様のようです。ドキュメントは以下です。var_dumpで変数をチェックしてみるとわかりやすいかもです。
https://www.php.net/manual/ja/function.explode.php
tsumuri3
Scratcher
1000+ posts

Scratch以外のプログラミング言語やってる人交流場

ありがとうございます。読んでみます。

皆さんありがとうございました。おかげで完成しました!

Last edited by tsumuri3 (Oct. 30, 2021 09:39:15)

Powered by DjangoBB