Unity oyunu web sayfası skor kaydetme sorunu

pthon flask server kurdum. index ssayfasında unityden yaptığım sonsuz döngü oyun var ve http istekleri ile masaüstü yada webgl sürümünden websayfasındaki get ile ulaşılamayan ulaşılsa bile kullanması mümkün olmayan bir sayfaya atıyor. burada skorumuz hesabımız ile kaydediyoruz. ve bizi bütün skorların tutulduğu tablo sekmesine yolluyor. bu sekmeye eğer ana saya üzerinden ulaşırsak sorun yok ancak şimdi anlattığım şekilde geldiğimiz zaman tarayıcının back tuşu ile tekrar az önce kaydettiğimiz skor formunu açıyor. bu drum beni çok rahatsız etti ayrıca bu aynı skorun tekrar tekrar kaydedilmesinden dolayı gereksiz veri kirliğine sebep olur.

skorların db tablosu

class Score(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20), nullable=False)
    point = db.Column(db.Integer, nullable=False)
    continent = db.Column(db.String(20), nullable=True)  
    date = db.Column(db.DateTime, default=datetime.utcnow)

bunlar skoru unityden aldığımız , kaydettiğimiz ve skorların hepsini bulundurduğumuz sayfalar.

# add score with unity
@app.route("/submit-score", methods=["GET", "POST"])
def submit_score():
    # Eğer daha önce skor gönderildiyse GET ile tekrar açmaya izin verme
    if request.method == "GET":
        if session.get('score_submitted'):
            return redirect("/")  # İstersen özel uyarı sayfası da gösterebilirsin
        return render_template("submit_score.html", point=None)

    # POST isteğiyle geldiğinde işlem yapılır
    point = request.form.get("point")
    if not point:
        return "❌ Skor verisi eksik.", 400

    try:
        point = int(point)
    except ValueError:
        return "❌ Skor geçerli değil.", 400

    # Başarılı işlemden sonra sayfa gösterilecek
    session['score_submitted'] = True
    return render_template("submit_score.html", point=point)



@app.route("/finalize-score", methods=["POST"])
def finalize_score():
    email = request.form.get("email")
    password = request.form.get("password")
    point = request.form.get("point")
    continent = request.form.get("continent") or "Dünya"

    if not email or not password or not point:
        return render_template("submit_score.html", point=point, message="❌ Eksik bilgi.")

    user = Users.query.filter_by(email=email).first()
    if not user:
        return render_template("submit_score.html", point=point, message="❌ Bu e-posta sistemde kayıtlı değil.")

    if not check_password_hash(user.password, password):
        return render_template("submit_score.html", point=point, message="❌ Şifre yanlış.")

    try:
        point = int(point)
    except ValueError:
        return render_template("submit_score.html", point=point, message="❌ Skor geçerli değil.")

    new_score = Score(name=user.name, point=point, continent=continent)
    db.session.add(new_score)
    db.session.commit()

    session.pop('score_submitted', None)  # işlem bitince sıfırla
    return redirect(url_for("scoreboard"))






# scoreboard
@app.route("/scoreboard")
def scoreboard():
    scores = Score.query.order_by(Score.point.desc()).all()
    return render_template("scoreboard.html", scores=scores)

scoreoard sayfası

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Skor Tablosu</title>
    <script>
      history.pushState(null, null , null, location.href); // sahte geçmiş oluştur
      window.addEventListener("popstate", function () {
        location.href = "/"; // geri tuşuna basıldığında ana sayfaya git
      });
    </script>

    <style>
      body {
        font-family: Arial, sans-serif;
        background-color: #f4f4f4;
        margin: 0;
        padding: 0;
      }

      h2 {
        text-align: center;
        color: #333;
        margin-top: 20px;
      }

      .score-box {
        background: #fff;
        max-width: 700px;
        margin: 20px auto;
        padding: 20px;
        border-radius: 10px;
        box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
      }

      table {
        width: 100%;
        border-collapse: collapse;
        margin-top: 10px;
      }

      th,
      td {
        padding: 12px;
        text-align: center;
        border-bottom: 1px solid #ddd;
      }

      th {
        background-color: #e0f0ff;
        color: #333;
      }

      tr:hover {
        background-color: #f1f9ff;
      }
      .home-link {
        display: block;
        text-align: center;
        margin-top: 10px;
        font-size: 16px;
        color: #0066cc;
        text-decoration: none;
      }
      .home-link:hover {
        color: #004999;
      }
    </style>
  </head>
  <body>
    <h2>Skorlar</h2>
    <a class="home-link" href="/">← Ana Sayfa</a>

    <div class="score-box">
      <table>
        <tr>
          <th>İsim</th>
          <th>Skor</th>
          <th>Kıta</th>
          <th>Tarih</th>
        </tr>
        {% for s in scores %}
        <tr>
          <td>{{ s.name }}</td>
          <td>{{ s.point }}</td>
          <td>{{ s.continent }}</td>
          <td>{{ s.date.strftime('%d-%m-%Y') }}</td>
        </tr>
        {% endfor %}
      </table>
    </div>
  </body>
</html>

submit-score formu

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="Cache-Control" content="no-store" />
    <title>Skorunu Gönder</title>
    <style>
      body {
        font-family: "Segoe UI", sans-serif;
        background-color: #f2f2f2;
        margin: 0;
        padding: 0;
      }

      h2 {
        text-align: center;
        color: #333;
        margin-top: 30px;
      }

      form {
        background-color: #fff;
        max-width: 400px;
        margin: 30px auto;
        padding: 30px;
        border-radius: 12px;
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
      }

      label {
        display: block;
        margin-bottom: 8px;
        font-weight: bold;
        color: #444;
      }

      input,
      select {
        width: 100%;
        padding: 10px;
        margin-bottom: 20px;
        border: 1px solid #ccc;
        border-radius: 8px;
        box-sizing: border-box;
        font-size: 14px;
      }

      input[readonly] {
        background-color: #eee;
      }

      button {
        width: 100%;
        padding: 12px;
        background-color: #2196f3;
        color: white;
        border: none;
        border-radius: 8px;
        font-size: 16px;
        cursor: pointer;
        transition: background-color 0.3s ease;
      }

      button:hover {
        background-color: #1976d2;
      }

      p {
        text-align: center;
        color: green;
        font-weight: bold;
      }
    </style>
<script>
    history.pushState(null, null,null, location.href); // sahte geçmiş oluştur
    window.addEventListener("popstate", function () {
        location.href = "/"; // geri tuşuna basıldığında ana sayfaya git
    });
</script>


  </head>
  <body>
    <h2>Skorunu Paylaş</h2>

    {% if message %}
    <p>{{ message }}</p>
    {% endif %}

    <form action="/finalize-score" method="post">
      <label>Skor:</label>
      <input type="number" name="point" value="{{ point }}" readonly required />

      <label>E-posta:</label>
      <input type="email" name="email" required />

      <label>Şifre:</label>
      <input type="password" name="password" required />

      <label for="continent">Kıta:</label>
      <select name="continent">
        <option value="Dünya" selected>Dünya</option>
        <option value="Afrika">Afrika</option>
        <option value="Asya">Asya</option>
        <option value="Avrupa">Avrupa</option>
        <option value="Kuzey Amerika">Kuzey Amerika</option>
        <option value="Güney Amerika">Güney Amerika</option>
        <option value="Avustralya">Avustralya</option>
        <option value="Antarktika">Antarktika</option>
      </select>

      <button type="submit">Gönder</button>
    </form>
  </body>
</html>

unity ile veri gönderimi(çalışıyor)

    public void SendScoreToWeb(int score)
    {
        string html = $@"
<html>
  <body onload='document.forms[0].submit()'>
    <form action='http://127.0.0.1:5000/submit-score' method='post'>
        <input type='hidden' name='point' value='{score}' />
    </form>
  </body>
</html>";

        string filePath = Path.Combine(Application.persistentDataPath, "submit_score.html");
        File.WriteAllText(filePath, html);

        Application.OpenURL("file://" + filePath);
    }

ben sorunun js ile çözülebileceğini düşünüyorum ancak yeterli blgiye sahip değilim. yardımcı olabilirseniz çok iyi olur

history API’sini kullanarak sayfayi gecmisten (ve Back butonundan) silmeyi deneyebilirsiniz. script kisminda yonlendirme esnasinda bir seyler denendigini goruyorum. Demek ki calismiyor? JS’den anlayan biri buraya bakabilir.

Baska yontemler de olabilir. Mesela, sayfa skoru kaydettikten sonra 301/302 cevabi verse, veya baska bir sekilde redirect etse?

Bunun disinda, aslinda en iyi cozum olarak: form submit etmek yerine dogrudan bir POST istegi gonderebilirsiniz. Browser’la filan hic ugrasmadan, dogrudan Unity uzerinden HTTP istegi. Veya belki form yerine fetch/XMLHttpRequest kullanan bir sayfa.