İlk kez PHP $ _SESSION kullanıyor ve ben yanlış şeyler yapıyorum düşünüyorum.

4 Cevap php

İşte benim kod registerFormOne.php:

<html>
<head>
    <title>Registration Form - 1 of 2</title>
</head>

<body>
    <h1>Registration - Part 1 of 2</h1>
    <p>Please fill in all the required information before submitting the information.</p>
    <form action="registerFormTwo.php" method="post">
        First Name:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>
        Last Name:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>
        Age:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>
        Date of Birth:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>

        <input type="submit" />
    </form>
</body>

İşte ben alıyorum hata var:

Uyarı: session_start () [function.session-start]: oturum çerezi gönderilemiyor - zaten tarafından gönderilen başlıkları (C'de başladı çıktı: XAMPP \ \ xampp \ htdocs registerFormOne.php \: 10) C: XAMPP \ \ xampp \ htdocs \ 10 hattı üzerine registerFormOne.php

Ne hatası olabilir? Ayrıca, ben bir OTURUMU bir değer kaydetmek gerekiyor nerede emin değilim. ASP, ben btn_Click yönteminde vereceğini; ama burada PHP bir bütün diğer dünya.

Bir demet teşekkür çocuklar. :)

4 Cevap

Her şeyden önce session_start arasında () tarayıcıya gönderilen üzere bir çerez olur - bu BAŞKA çıktı yolladım önce çağrılması gerekir. Eğer arama yapmadan önce HTML çıktısı olduğundan, hatayı alıyoruz.

İkincisi, sadece bir kez aramak gerekir.

Sadece bir kez session_start() aramak gerekir. Ayrıca, sunucu üzerinde neler olup bittiğini karşı istemci üzerinde neler kafa karıştırıcı gibi görünüyor. Eğer form öğeleri varsa, ve sonra oturumuna bunları atamak (ya $_GET veya $_POST, form türüne bağlı olarak) sunucuda bunları işlemek gerekir.

Eğer session_start () aramadan önce tarayıcıya metin çıktı gönderiyor, çünkü bu hata neden olur; , Session_start () herhangi bir tex tis outputted önce çağrılması gerekir.

Ayrıca yalnızca oturumları kullanmak için bir kez session_start () aramak gerekir

Ben oturumları nasıl çalıştığını ile iyi bir göz, burada iyi temellerini açıklayan bir web sitesi olması gerektiğini düşünüyorum - http://www.tizag.com/phpT/phpsessions.php

Ayrıca bunun için seans kullanmak gerekmez form kullanarak veri gönderme - Sen cezası çalışacaktır sonrası verileri kullanabilirsiniz.

Insanlar session_start belirttiğim gibi herhangi bir HTML çıktısı önce () aranmalıdır.

<?php session_start() ?>
<html>

etc...

Büyük sorun aradığınız bu da aynı zamanda

<?php $_SESSION['something'] ?>

hiçbir şey yapacak ki.

Doğru kullanımı uygulama böyle bir şey yapmak olduğunu php dosyasında sonra form oluşturmak için

<?php
    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
         // Tell the server to start capturing session data.
         session_start();

         // set the hash key for first_name
         $_SESSION['first_name'] = $_POST['first_name'];

         // retrieves the first_name hash key for the session array.
         print $_SESSION['first_name'];
    }

Eğer $ _SESSION ayarlamak veya erişebilirsiniz önce oturumu autostart sunucu üzerinde kurulum yukarı sürece, bunu başlatmak zorunda.