Проблем със сесия

Dizasterr

Registered
Здравейте! Сега написах този код, но не ми увеличава сесията, ако отговара е правилен. Увеличава ми я само първия път и след това спира да ми я показва.
Код:
<?php
		require_once("../connection.php");
		mysql_query("SET NAMES cp1251");
		
		$question=$_GET['question'];
		if($question == 0) {
		if(isset($_POST['submit'])) {
		header("Location: test.php?question=1");
		$_SESSION['test'] = 0;
		}
		}
		$p=$question + '1';
		if($question > 0) {
		$sel=mysql_query("SELECT * FROM `questions` WHERE `number`='$question'") or die(mysql_error());
		$r=mysql_fetch_assoc($sel); 
		$questions=$r['question'];
		echo "<b style='color: #FFF;'>".$questions."</b>";
		echo "<br/><br/>";
		$select=mysql_query("SELECT * FROM `questions` as u LEFT JOIN `answers` as r ON r.question_number = u.number WHERE `number`='$question'") or die(mysql_error());
		echo "<form method='post' action=''>";
		while($row=mysql_fetch_array($select)) {
		echo "<input type='radio' name='answer' value='".$row['firstanswer']."'>".$row['firstanswer']."";
		echo "<input type='radio' name='answer' value='".$row['secondanswer']."'>".$row['secondanswer']."";
		echo "<input type='radio' name='answer' value='".$row['thirdanswer']."'>".$row['thirdanswer']."";
		echo "<br/><br/>";
		echo $row['rightanswer'];
		}
		echo "<input type='submit' name='yanswer' value='Отговори'>";
		echo "</form>";
		if(isset($_POST['yanswer'])) {
		$answer=$_POST['answer'];
		$a=mysql_fetch_assoc($select);
		$rightanswer=$a['rightanswer'];
		$_SESSION['test'] = $ses;
		if($rightanswer == $answer) {
		header("Location: test.php?question=".$p."");
		$_SESSION['test'] = $ses + '1';
		}else{
		header("Location: test.php?question=".$p."");
		$_SESSION['test'] = $ses;
		}
		}
		echo $_SESSION['test'];
		echo "<br/><br/>";
		echo $p;
		}
		

?>
<?php
if($question == 0) {
echo '<form method="post" action="">';
echo '<b style="color: #FFF;">Име:</b><input type="text" name="name" maxlength="20"><br/><br/>';
echo '<input type="submit" name="submit" value="Започни теста"> '; 
echo '</form>';
}
?>
 
А би ли споделил каква е тая променлива $ses ,която присъства в скрипта ти :idea:
 
Извинявам се. Имам session_start();, а променливата ses е сесията test. Така ми е по - удобно вместо да пиша всеки път $_SESSION['test'];.
 
Това е тест. Знам, че е прост, но нямам време да правя по - сложен. Сесията е колко са верните отговори. Не съм го довършил напълно, но забелязах, че сесията не се увеличава при верен отговор.
 
Еми аз ги записвам и след всеки отговорен проверявам дали съвпада с верния и ако съвпада увеличавам сесията, ако не си оставям сесията така и и се продължава с теста.
 
Код:
<?php
      require_once("../connection.php");
      mysql_query("SET NAMES cp1251");
      
      $question=$_GET['question'];
      if($question == 0) {
      if(isset($_POST['submit'])) {
      header("Location: test.php?question=1");
      $_SESSION['test'] = 0;
      }
      }
      $p=$question + '1';
      if($question > 0) {
      $sel=mysql_query("SELECT * FROM `questions` WHERE `number`='$question'") or die(mysql_error());
      $r=mysql_fetch_assoc($sel);
      $questions=$r['question'];
      echo "<b style='color: #FFF;'>".$questions."</b>";
      echo "<br/><br/>";
      $select=mysql_query("SELECT * FROM `questions` as u LEFT JOIN `answers` as r ON r.question_number = u.number WHERE `number`='$question'") or die(mysql_error());
      echo "<form method='post' action=''>";
      while($row=mysql_fetch_array($select)) {
      echo "<input type='radio' name='answer' value='".$row['firstanswer']."'>".$row['firstanswer']."";
      echo "<input type='radio' name='answer' value='".$row['secondanswer']."'>".$row['secondanswer']."";
      echo "<input type='radio' name='answer' value='".$row['thirdanswer']."'>".$row['thirdanswer']."";
      echo "<br/><br/>";
      echo $row['rightanswer'];
      }
      echo "<input type='submit' name='yanswer' value='Отговори'>";
      echo "</form>";
      if(isset($_POST['yanswer'])) {
      $answer=$_POST['answer'];
      $a=mysql_fetch_assoc($select);
      $rightanswer=$a['rightanswer'];
      $_SESSION['test'] = $ses;
      if($rightanswer == $answer) {
      header("Location: test.php?question=".$p."");
      $_SESSION['test'] += 1;
      }else{
      header("Location: test.php?question=".$p."");
      $_SESSION['test'] = $ses;
      }
      }
      echo $_SESSION['test'];
      echo "<br/><br/>";
      echo $p;
      }
      

?>
<?php
if($question == 0) {
echo '<form method="post" action="">';
echo '<b style="color: #FFF;">Име:</b><input type="text" name="name" maxlength="20"><br/><br/>';
echo '<input type="submit" name="submit" value="Започни теста"> ';
echo '</form>';
}
?>
Така :?
 
Ludjov каза:
Код:
<?php
      require_once("../connection.php");
      mysql_query("SET NAMES cp1251");
      
      $question=$_GET['question'];
      if($question == 0) {
      if(isset($_POST['submit'])) {
      header("Location: test.php?question=1");
      $_SESSION['test'] = 0;
      }
      }
      $p=$question + '1';
      if($question > 0) {
      $sel=mysql_query("SELECT * FROM `questions` WHERE `number`='$question'") or die(mysql_error());
      $r=mysql_fetch_assoc($sel);
      $questions=$r['question'];
      echo "<b style='color: #FFF;'>".$questions."</b>";
      echo "<br/><br/>";
      $select=mysql_query("SELECT * FROM `questions` as u LEFT JOIN `answers` as r ON r.question_number = u.number WHERE `number`='$question'") or die(mysql_error());
      echo "<form method='post' action=''>";
      while($row=mysql_fetch_array($select)) {
      echo "<input type='radio' name='answer' value='".$row['firstanswer']."'>".$row['firstanswer']."";
      echo "<input type='radio' name='answer' value='".$row['secondanswer']."'>".$row['secondanswer']."";
      echo "<input type='radio' name='answer' value='".$row['thirdanswer']."'>".$row['thirdanswer']."";
      echo "<br/><br/>";
      echo $row['rightanswer'];
      }
      echo "<input type='submit' name='yanswer' value='Отговори'>";
      echo "</form>";
      if(isset($_POST['yanswer'])) {
      $answer=$_POST['answer'];
      $a=mysql_fetch_assoc($select);
      $rightanswer=$a['rightanswer'];
      $_SESSION['test'] = $ses;
      if($rightanswer == $answer) {
      header("Location: test.php?question=".$p."");
      $_SESSION['test'] += 1;
      }else{
      header("Location: test.php?question=".$p."");
      $_SESSION['test'] = $ses;
      }
      }
      echo $_SESSION['test'];
      echo "<br/><br/>";
      echo $p;
      }
      

?>
<?php
if($question == 0) {
echo '<form method="post" action="">';
echo '<b style="color: #FFF;">Име:</b><input type="text" name="name" maxlength="20"><br/><br/>';
echo '<input type="submit" name="submit" value="Започни теста"> ';
echo '</form>';
}
?>
Така :?
Пак не става. Като мина на следващия въпрос и сесията не се показва.
 
Приятел изобщо стига ли дайствието до там я напиши едно

echo 'Ок'; И ми кажи дали е стигнало до там
 
Код:
<?php
		require_once("../connection.php");
		mysql_query("SET NAMES cp1251");
		
		$question=$_GET['question'];
		if($question == 0) {
		if(isset($_POST['submit'])) {
		$name=$_POST['name'];
		$_SESSION['name']=$name;
		header("Location: test.php?question=1");
		$_SESSION['test'] = 0;
		}
		}
		$p=$question + '1';
		if($question > 0 && $question <= 10) {
		$sel=mysql_query("SELECT * FROM `questions` WHERE `number`='$question'") or die(mysql_error());
		$r=mysql_fetch_assoc($sel); 
		$questions=$r['question'];
		echo "<b style='color: #FFF;'>".$questions."</b>";
		echo "<br/><br/>";
		$select=mysql_query("SELECT * FROM `questions` as u LEFT JOIN `answers` as r ON r.question_number = u.number WHERE `number`='$question'") or die(mysql_error());
		echo "<form method='post' action=''>";
		while($row=mysql_fetch_array($select)) {
		echo "<input type='radio' name='answer' value='".$row['firstanswer']."'>".$row['firstanswer']."";
		echo "<input type='radio' name='answer' value='".$row['secondanswer']."'>".$row['secondanswer']."";
		echo "<input type='radio' name='answer' value='".$row['thirdanswer']."'>".$row['thirdanswer']."";
		echo "<br/><br/>";
		echo $row['rightanswer'];
		}
		echo "<input type='submit' name='yanswer' value='Отговори'>";
		echo "</form>";
		if(isset($_POST['yanswer'])) {
		$answer=$_POST['answer'];
		$a=mysql_fetch_assoc($select);
		$rightanswer=$a['rightanswer'];
		$_SESSION['test'] = $ses;
		if($rightanswer == $answer) {
				echo "OK";
		header("Location: test.php?question=".$p."");
		$_SESSION['test'] += 1;	
		}else{
				echo "MHM";
		header("Location: test.php?question=".$p."");
		$_SESSION['test'];	
		}
		}
		echo "OK";
		echo $_SESSION['test'];
		echo "<br/><br/>";
		echo $p;
		}
?>
 
Код:
    if($rightanswer == $answer) {
      $_SESSION['test'] = $_SESSION['test'] + 1;
      header("Location: test.php?question=".$p."");
      }else{
      header("Location: test.php?question=".$p."");
      }
      }
      echo $_SESSION['test'];
      echo "<br/><br/>";
      echo $p;
      }
А някъде по-надолу в кода да не унищожаваш сесиите?
 
1-во определено ако това е кода никъде няма session_start();
2-ро никъде не виждам някъде да увеличаваш тука $ses т.е. тя винаги си е 0 и винаги при правилен отговор нулираш самата $_SESSION['test'] ;
Код:
  $_SESSION['test'] = $ses; 
      if($rightanswer == $answer) { 
            echo "OK"; 
      header("Location: test.php?question=".$p.""); 
      $_SESSION['test'] += 1;

3-то не виждал логика да правиш Header location и след това да увеличаваш сесията с 1, макар, че дори и да я увеличе то като и дадеш после пак да е равна на $ses тя пак ще си остане нула...

с две думи, сложи
sestion_start();
Махни реда $_SESSION['test'] = $ses;
и смени местата на

Код:
 $_SESSION['test'] += 1;  
header("Location: test.php?question=".$p."");
 
ifkooo каза:
1-во определено ако това е кода никъде няма session_start();
2-ро никъде не виждам някъде да увеличаваш тука $ses т.е. тя винаги си е 0 и винаги при правилен отговор нулираш самата $_SESSION['test'] ;
Код:
  $_SESSION['test'] = $ses; 
      if($rightanswer == $answer) { 
            echo "OK"; 
      header("Location: test.php?question=".$p.""); 
      $_SESSION['test'] += 1;

3-то не виждал логика да правиш Header location и след това да увеличаваш сесията с 1, макар, че дори и да я увеличе то като и дадеш после пак да е равна на $ses тя пак ще си остане нула...

с две думи, сложи
sestion_start();
Махни реда $_SESSION['test'] = $ses;
и смени местата на

Код:
 $_SESSION['test'] += 1;  
header("Location: test.php?question=".$p."");
Имам session_start() просто не съм го дал направи го така, но пак не става.
 
А относно този ред
Код:
 $_SESSION['test'] = $ses;
от къде тази променлива $ses получава стойност. Защо не постнеш целия код най добре, че така само излишно време се губи ;]
 

Back
Горе