Jump to content

Emergency!


Caitlin-havener

Recommended Posts

Damn... the changelog in 5.3.3 and 5.3.4 don't give any hints. There are barely any "core" fixes (a huge deal of extension fixes instead), and your code is affected by none of them.But then again, running your latest full code on my computer didn't really worked... could you copy&paste the exact code the school server is running? Without the debugging statements and everything (I'll uncomment them if I need them).

Link to comment
Share on other sites

While your at it maybe you can tell me why bad guesses is printing "array" and not the letters. Latest version:

<?php // woffer02.php	error_reporting(0);	session_start();	if (empty($_SESSION)) {    //Initialize session variables    $_SESSION['bad_guess_index'] = 0;	$_SESSION['all_guess_index'] = 0;    $_SESSION['guess_array'] = array();	$_SESSION['index']=0;	$_SESSION['turn']="GOLD"; //GOOD}?>		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">		<html xmlns="http://www.w3.org/1999/xhtml">		<head>		<link rel="stylesheet" type="text/css" href="style_project_two.css" />		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />		<title></title>			<style type="text/css">			.mtable td 			{				width:50px;			}		</style>			</head>				<body>		<div id="wrap">		<div id="header"><h1>Caitlin's Jeopardy</h1></div>        <div id="right">		<form method="post">	<?php		#textloader:		function textloader($whatfile)		{				if (!file_exists($whatfile))		{			print "Sorry, can't find $whatfile.";			exit;		}		else		{			$textarray=file($whatfile);			return $textarray;			}		}# textloader	#display: Draws the Jeopardy table	function display($visible, $letters)	{		$letterlength=count($letters);		print "<table class='mtable' border=1><tr>";		for ($i=1; $i<$letterlength; $i++)		{						//print "i=$i,visible=".$visible[$i]."<br />";			if ($letters[$i]==' ')				print "</tr></table><br/>				<table class='mtable'><tr>";			else if ($visible[$i])			 {				print "<td><center>".$letters[$i]."</center></td>";			 }			else				print "<td> </td>";		}		print "</tr></table>";	}		#drawinputscreen: Asks for input.	function drawinputscreen($guesses)	{		print "<input type='text' name='guessletter'>";		print "Guess a letter. You have $guesses guesses left.";		print "<input type='submit' name='action' value='GUESS'>";		print "<input type='submit' name='action' value='REVEAL'>";		print "<input type='submit' name='action' value='NEXT PHRASE'>";		//print "<input type='submit' name='action' value='END SESSION'> (then refresh)";	}		######## MAIN PROGRAM ##########	print"<img src='images/vanna.jpg' alt=''/>";		//initialize variables	$array= textloader("clichefile.txt");	$index=$_SESSION['index'];	//$letters = array();	$act=isset($_POST['action']) ? $_POST['action'] : '';		$text = array_key_exists($index, $array) ? $array[$index] : "There are no more phrases left.";	$txtarr=($text);			//Print whos turn	$turn_print=$_SESSION['turn'];	print"<div id='team'>It is $turn_print team's turn.</div>";	//print "$text";			//Assign each letter to letters array and uppercase it		for ($i=0; $i<strlen($text);$i++)		{			$_SESSION['letters'][$i+1]=strtoupper($text[$i]);			}				$_SESSION['letterlength']=count($_SESSION['letters']);				;				switch ($act)	{			case '':									//If there are no more phrases left		if ($text=="There are no more phrases left."){			for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=1;		}					else{			for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=0;		}		$_SESSION['guesses']=16;		break;							case "GUESS":	  		$_SESSION['guessletter'][]=strtoupper($_POST['guessletter']); // a-> A, etc. uppercase					for ($i=1; $i<=$_SESSION['letterlength']; $i++)			{				for($j=0;$j<=count($_SESSION['guessletter']);$j++){					$guessletter= $_SESSION['guessletter'][$j];					if ($_SESSION['guessletter'][$j]==$_SESSION['letters'][$i])					{						$_SESSION['visible'][$i]=1;					}											else if (!(preg_match("/$guessletter/i",$text))){					$_SESSION['guess_array'][] = $_SESSION['guessletter'];				}				}			}																	//WHOS TURN??			$turn=$_SESSION['turn'];			if ($turn=="GOLD"){				$_SESSION['turn']="BLACK";			}			else if($turn=="BLACK"){				$_SESSION['turn']="GOLD";			} #End whos turn												$_SESSION['guesses']-= 1;	break;		case "NEXT PHRASE":		unset($_SESSION['bad_guess_index']);		unset($_SESSION['all_guess_index']);		unset($_SESSION['guessletter']);		unset($_SESSION['guess_array']);		unset($_SESSION['visible']);		unset($_SESSION['letters']);		unset($_SESSION['guesses']);		$_SESSION['index']+= 1;		$_SESSION['guesses']=16;		for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=0;		break;					case "REVEAL":			for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=1;			break;				case "END SESSION":			session_destroy();		break;			}						//RUN OUT OF GUESSES			if ($_SESSION['guesses']==0){			print"<div id='lose'>You lose! Click NEXT PHRASE.</div>";		}		else if ($_SESSION['guesses']==1){			print"<div id='last'>This is your last guess!!!</div>";		}			print"</div>";	print"<div id='left'>";		$letters=$_SESSION['letters'];	$visible=$_SESSION['visible'];	$guesses=$_SESSION['guesses'];	//var_dump($_SESSION);	display($visible,$letters);		drawinputscreen($guesses);	print"</div>";			//print out the bad guesses	$bad_guess_print=$_SESSION['guess_array'];				print"<div id='bad_guesses'><p>Bad Guesses</p> <br />";					for ($k=0; $k<=count($_SESSION['guess_array']); $k++){				print"<p class='right_side' style='color:red'>$bad_guess_print[$k], </p>";			}		print"</div>";		$_SESSION['visible']=$visible;	$_SESSION['guesses']=$guesses;	$_SESSION['letters']=$letters;		?></div></form></body></html>

I'm also going to try to load on godaddy acct see if that works

Link to comment
Share on other sites

Well, it works, but let's deal with the notifications... they are messengers of issues to come is what I always say, and in your case, it seems they've come already....

			for ($k=0; $k<=count($_SESSION['guess_array']); $k++){				print"<p class='right_side' style='color:red'>$bad_guess_print[$k], </p>";			}

should be

					for ($k = 0; $k < count($_SESSION['guess_array']); $k++) {						print"<p class='right_side' style='color:red'>$bad_guess_print[$k], </p>";					}

(note the missing "=")and similarly

				for($j=0;$j<=count($_SESSION['guessletter']);$j++){

should be

				for($j=0;$j<count($_SESSION['guessletter']);$j++){

Also, it seems your session data isn't really cleared properly, which could be causing problems for some of your tests. Remove

	case "END SESSION":			session_destroy();		break;

and instead move it to the top along with an actual refresh, like:

session_start();if (isset($_POST['action']) && $_POST['action'] === 'END SESSION') {	$_SESSION = array();	if (ini_get('session.use_cookies')) {		$params = session_get_cookie_params();		setcookie(session_name(), '', time() - 42000,				$params['path'], $params['domain'],				$params['secure'], $params['httponly']		);	}	session_destroy();	header('Location: ' . $_SERVER['REQUEST_URI']);	exit;}

(majority of extra code taken from the PHP manual)As for the Array thing...

var_dump($_SESSION['guess_array']);

right before the printing shows that this is an array of arrays with one member each. Even on one bad letter, you get members from 0 to 36 with 0 as a submember. The cause is this portion:

		$_SESSION['guessletter'][]=strtoupper($_POST['guessletter']); // a-> A, etc. uppercase					for ($i=1; $i<=$_SESSION['letterlength']; $i++)			{				for($j=0;$j<=count($_SESSION['guessletter']);$j++){					$guessletter= $_SESSION['guessletter'][$j];					if ($_SESSION['guessletter'][$j]==$_SESSION['letters'][$i])					{						$_SESSION['visible'][$i]=1;					}											else if (!(preg_match("/$guessletter/i",$text))){					$_SESSION['guess_array'][] = $_SESSION['guessletter'];				}				}			}

but I'm not entirely certain what your intended logic is... [researching...]

Link to comment
Share on other sites

Help! Whos going to be my hero!?
Well it was the version because it is working on godaddy!
:) so at last godaddy becomes hero :)
Link to comment
Share on other sites

For the bad letters array issue, you should swap the loops and only merge the guess array in the first. Here's what I got it to with some trial&error (and what you should replace the problematic section above with):

							$_SESSION['guessletter'][] = strtoupper($_POST['guessletter']); // a-> A, etc. uppercase							for ($j = 0; $j < count($_SESSION['guessletter']); $j++) {								$guessletter = $_SESSION['guessletter'][$j];								for ($i = 1; $i <= $_SESSION['letterlength']; $i++) {									if ($_SESSION['guessletter'][$j] == $_SESSION['letters'][$i]) {										$_SESSION['visible'][$i] = 1;									}								}								if (!(preg_match("/$guessletter/i", $text))) {									$_SESSION['guess_array'] = array_merge($_SESSION['guess_array'], array_diff(array($guessletter), $_SESSION['guess_array']));								}							}

Link to comment
Share on other sites

I've implemented your suggestions and the bad print is not printing??Whole thing:

<?php // woffer02.php	error_reporting(0);	session_start();	if (isset($_POST['action']) && $_POST['action'] === 'END SESSION') {    $_SESSION = array();    if (ini_get('session.use_cookies')) {        $params = session_get_cookie_params();        setcookie(session_name(), '', time() - 42000,                $params['path'], $params['domain'],                $params['secure'], $params['httponly']        );    }    session_destroy();    header('Location: ' . $_SERVER['REQUEST_URI']);    exit;}	if (empty($_SESSION)) {    //Initialize session variables    $_SESSION['bad_guess_index'] = 0;	$_SESSION['all_guess_index'] = 0;    $_SESSION['guess_array'] = array();	$_SESSION['index']=0;	$_SESSION['turn']="GOLD"; //GOOD}?>		<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">		<html xmlns="http://www.w3.org/1999/xhtml">		<head>		<link rel="stylesheet" type="text/css" href="style_project_two.css" />		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />		<title></title>			<style type="text/css">			.mtable td 			{				width:50px;			}		</style>			</head>				<body>		<div id="wrap">		<div id="header"><h1>Caitlin's Jeopardy</h1></div>        <div id="right">		<form method="post">	<?php		#textloader:		function textloader($whatfile)		{				if (!file_exists($whatfile))		{			print "Sorry, can't find $whatfile.";			exit;		}		else		{			$textarray=file($whatfile);			return $textarray;			}		}# textloader	#display: Draws the Jeopardy table	function display($visible, $letters)	{		$letterlength=count($letters);		print "<table class='mtable' border=1><tr>";		for ($i=1; $i<$letterlength; $i++)		{						//print "i=$i,visible=".$visible[$i]."<br />";			if ($letters[$i]==' ')				print "</tr></table><br/>				<table class='mtable'><tr>";			else if ($visible[$i])			 {				print "<td><center>".$letters[$i]."</center></td>";			 }			else				print "<td> </td>";		}		print "</tr></table>";	}		#drawinputscreen: Asks for input.	function drawinputscreen($guesses)	{		print "<input type='text' name='guessletter'>";		print "Guess a letter. You have $guesses guesses left.";		print "<input type='submit' name='action' value='GUESS'>";		print "<input type='submit' name='action' value='REVEAL'>";		print "<input type='submit' name='action' value='NEXT PHRASE'>";		//print "<input type='submit' name='action' value='END SESSION'> (then refresh)";	}		######## MAIN PROGRAM ##########	print"<img src='images/vanna.jpg' alt=''/>";		//initialize variables	$array= textloader("clichefile.txt");	$index=$_SESSION['index'];	//$letters = array();	$act=isset($_POST['action']) ? $_POST['action'] : '';		$text = array_key_exists($index, $array) ? $array[$index] : "There are no more phrases left.";	$txtarr=($text);			//Print whos turn	$turn_print=$_SESSION['turn'];	print"<div id='team'>It is $turn_print team's turn.</div>";	//print "$text";			//Assign each letter to letters array and uppercase it		for ($i=0; $i<strlen($text);$i++)		{			$_SESSION['letters'][$i+1]=strtoupper($text[$i]);			}				$_SESSION['letterlength']=count($_SESSION['letters']);				;				switch ($act)	{			case '':									//If there are no more phrases left		if ($text=="There are no more phrases left."){			for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=1;		}					else{			for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=0;		}		$_SESSION['guesses']=16;		break;							case "GUESS":	  		$_SESSION['guessletter'][]=strtoupper($_POST['guessletter']); // a-> A, etc. uppercase					for ($i=1; $i<=$_SESSION['letterlength']; $i++)			{				 for($j=0;$j<count($_SESSION['guessletter']);$j++){					$guessletter= $_SESSION['guessletter'][$j];					if ($_SESSION['guessletter'][$j]==$_SESSION['letters'][$i])					{						$_SESSION['visible'][$i]=1;					}					}					if (!(preg_match("/$guessletter/i",$text))){					 $_SESSION['guess_array'] = array_merge($_SESSION['guess_array'], array_diff(array($guessletter), $_SESSION['guess_array']));								}			}																	//WHOS TURN??			$turn=$_SESSION['turn'];			if ($turn=="GOLD"){				$_SESSION['turn']="BLACK";			}			else if($turn=="BLACK"){				$_SESSION['turn']="GOLD";			} #End whos turn												$_SESSION['guesses']-= 1;	break;		case "NEXT PHRASE":		unset($_SESSION['bad_guess_index']);		unset($_SESSION['all_guess_index']);		unset($_SESSION['guessletter']);		unset($_SESSION['guess_array']);		unset($_SESSION['visible']);		unset($_SESSION['letters']);		unset($_SESSION['guesses']);		$_SESSION['index']+= 1;		$_SESSION['guesses']=16;		for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=0;		break;					case "REVEAL":			for ($i=1; $i<=$_SESSION['letterlength']; $i++)				$_SESSION['visible'][$i]=1;			break;				case "END SESSION":			session_destroy();		break;			}						//RUN OUT OF GUESSES			if ($_SESSION['guesses']==0){			print"<div id='lose'>You lose! Click NEXT PHRASE.</div>";		}		else if ($_SESSION['guesses']==1){			print"<div id='last'>This is your last guess!!!</div>";		}			print"</div>";	print"<div id='left'>";		$letters=$_SESSION['letters'];	$visible=$_SESSION['visible'];	$guesses=$_SESSION['guesses'];	//var_dump($_SESSION);	display($visible,$letters);		drawinputscreen($guesses);	print"</div>";			//print out the bad guesses	$bad_guess_print=$_SESSION['guess_array'];				print"<div id='bad_guesses'><p>Bad Guesses</p> <br />";					for ($k = 0; $k < count($_SESSION['guess_array']); $k++) {                        print"<p class='right_side' style='color:red'>$bad_guess_print[$k], </p>";                    }		print"</div>";		$_SESSION['visible']=$visible;	$_SESSION['guesses']=$guesses;	$_SESSION['letters']=$letters;		?></div></form></body></html>

Link to comment
Share on other sites

You haven't exactly implemented my suggestions, but anyway... on my compuer at least, the bad guesses are printing even despite that. And as for the "Next Phrase" issue... $text is already assigned at that point, which is why things become confused. It would probably be best if that too moves at the top (before the $text assignment), along with proper reinitialization of session variables.Here's the full code that appears to work flawlessly on my computer at least:

<?php// woffer02.php//error_reporting(0);session_start();if (isset($_POST['action'])) {	switch ($_POST['action']) {		case 'END SESSION':			$_SESSION = array();			if (ini_get('session.use_cookies')) {				$params = session_get_cookie_params();				setcookie(session_name(), '', time() - 42000,						$params['path'], $params['domain'],						$params['secure'], $params['httponly']				);			}			session_destroy();			header('Location: ' . $_SERVER['REQUEST_URI']);			exit;		case 'NEXT PHRASE':			if (!empty($_SESSION)) {				unset($_SESSION['guessletter']);				unset($_SESSION['visible']);				unset($_SESSION['letters']);				unset($_SESSION['guesses']);				$_SESSION['bad_guess_index'] = 0;				$_SESSION['all_guess_index'] = 0;				$_SESSION['guess_array'] = array();				$_SESSION['index']+= 1;				$_SESSION['guesses'] = 16;				for ($i = 1; $i <= $_SESSION['letterlength']; $i++)					$_SESSION['visible'][$i] = 0;				header('Location: ' . $_SERVER['REQUEST_URI']);				exit;			}	}}if (empty($_SESSION)) {	//Initialize session variables	$_SESSION['bad_guess_index'] = 0;	$_SESSION['all_guess_index'] = 0;	$_SESSION['guess_array'] = array();	$_SESSION['index'] = 0;	$_SESSION['turn'] = "GOLD"; //GOOD}?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">	<head>		<link rel="stylesheet" type="text/css" href="style_project_two.css" />		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />		<title>Caitlin's Jeopardy</title>		<style type="text/css">			.mtable td			{				width:50px;				border:1px solid black;			}		</style>	</head>	<body>		<div id="wrap">			<div id="header"><h1>Caitlin's Jeopardy</h1></div>			<div id="right">				<form action="" method="post">					<?php					#textloader:					function textloader($whatfile) {						if (!file_exists($whatfile)) {							print "Sorry, can't find $whatfile.";							exit;						}else {							$textarray = file($whatfile);							return $textarray;						}					}# textloader					#display: Draws the Jeopardy table					function display($visible, $letters) {						$letterlength = count($letters);						print "<table class='mtable'><tr>";						for ($i = 1; $i < $letterlength; $i++) {							//print "i=$i,visible=".$visible[$i]."<br />";							if ($letters[$i] == ' ')								print "</tr></table><br/>				<table class='mtable'><tr>";							else if ($visible[$i]) {								print "<td><center>" . $letters[$i] . "</center></td>";							}							else								print "<td> </td>";						}						print "</tr></table>";					}					#drawinputscreen: Asks for input.					function drawinputscreen($guesses) {						print "<input type='text' name='guessletter'>";						print "Guess a letter. You have $guesses guesses left.";						print "<input type='submit' name='action' value='GUESS'>";						print "<input type='submit' name='action' value='REVEAL'>";						print "<input type='submit' name='action' value='NEXT PHRASE'>";						print "<input type='submit' name='action' value='END SESSION'> (then refresh)";					}					######## MAIN PROGRAM ##########					print"<img src='images/vanna.jpg' alt=''/>";					//initialize variables					$array = textloader("clichefile.txt");					$index = $_SESSION['index'];					//$letters = array();					$act = isset($_POST['action']) ? $_POST['action'] : '';					$text = array_key_exists($index, $array) ? $array[$index] : "There are no more phrases left.";					$txtarr = ($text);					//Print whos turn					$turn_print = $_SESSION['turn'];					print"<div id='team'>It is $turn_print team's turn.</div>";					//print "$text";					//Assign each letter to letters array and uppercase it					for ($i = 0; $i < strlen($text); $i++) {						$_SESSION['letters'][$i + 1] = strtoupper($text[$i]);					}					$_SESSION['letterlength'] = count($_SESSION['letters']);				  ;					switch ($act) {						case '':							//If there are no more phrases left							if ($text == "There are no more phrases left.") {								for ($i = 1; $i <= $_SESSION['letterlength']; $i++)									$_SESSION['visible'][$i] = 1;							}else {								for ($i = 1; $i <= $_SESSION['letterlength']; $i++)									$_SESSION['visible'][$i] = 0;							}							$_SESSION['guesses'] = 16;							break;						case "GUESS":							$_SESSION['guessletter'][] = strtoupper($_POST['guessletter']); // a-> A, etc. uppercase							for ($i = 0; $i < count($_SESSION['guessletter']); $i++) {								$guessletter = $_SESSION['guessletter'][$i];								for ($j = 1; $j <= $_SESSION['letterlength']; $j++) {									if ($_SESSION['guessletter'][$i] == $_SESSION['letters'][$j]) {										$_SESSION['visible'][$j] = 1;									}								}								if (!(preg_match("/$guessletter/i", $text))) {									$_SESSION['guess_array'] = array_merge($_SESSION['guess_array'], array_diff(array($guessletter), $_SESSION['guess_array']));								}							}							//WHOS TURN??							$turn = $_SESSION['turn'];							if ($turn == "GOLD") {								$_SESSION['turn'] = "BLACK";							}else if ($turn == "BLACK") {								$_SESSION['turn'] = "GOLD";							} #End whos turn							$_SESSION['guesses']-= 1;							break;						case "REVEAL":							for ($i = 1; $i <= $_SESSION['letterlength']; $i++)								$_SESSION['visible'][$i] = 1;							break;					}					//RUN OUT OF GUESSES					if ($_SESSION['guesses'] == 0) {						print "<div id='lose'>You lose! Click NEXT PHRASE.</div>";					}else if ($_SESSION['guesses'] == 1) {						print "<div id='last'>This is your last guess!!!</div>";					}					print "</div>";					print "<div id='left'>";					$letters = $_SESSION['letters'];					$visible = $_SESSION['visible'];					$guesses = $_SESSION['guesses'];					//var_dump($_SESSION);					display($visible, $letters);					drawinputscreen($guesses);					print "</div>";					//print out the bad guesses					$bad_guess_print = $_SESSION['guess_array'];					print "<div id='bad_guesses'><p>Bad Guesses</p> <br />";					for ($k = 0; $k < count($_SESSION['guess_array']); $k++) {						print "<p class='right_side' style='color:red'>$bad_guess_print[$k], </p>";					}					print"</div>";					$_SESSION['visible'] = $visible;					$_SESSION['guesses'] = $guesses;					$_SESSION['letters'] = $letters;					?>				</form></div></div></body></html>

(I've also fixed some minor HTML errors)

Link to comment
Share on other sites

<?php$guessme='itshouldworknow';session_start();if(!isset($_SESSION['hangman']))$_SESSION['hangman']=array();echo "<a href='{$_SERVER['PHP_SELF']}?act=reset'>Reset</a><br/><br/><form action='{$_SERVER['PHP_SELF']}' method='post'><input type='text' name='guess' value='' /><input type='submit' name='act' value='guess' /></form>";if(isset($_REQUEST['act'])){	switch($_REQUEST['act'])	{		case 'guess':			if(preg_match("/[{$_POST['guess']}]/i",$guessme)&&!in_array($_POST['guess'],$_SESSION['hangman']))			$_SESSION['hangman'][]=$_POST['guess'];					$whitelist=implode('',$_SESSION['hangman']);			echo preg_replace("/[^$whitelist]/i",'*',$guessme,-1,$count);				if($count==0) 					   {			echo "<br/><b>You won</b><br/>";			//reset the all						unset($_SESSION['hangman']);						 }			//uncmment the var dump if you want see the process			//var_dump($_SESSION['hangman']);		break;		case 'reset':		//reset the $guessme 		//destroy the session		unset($_SESSION['hangman']);		break;	}}?>

i actulally did not understand the flow of your code. (i was getting confused). as i wrote in previous post it is same implement (its just a demo)..i just tested it ..s working on my pc...modifying it in some place may fit your situation appropiately.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...