Произволен текст от файл

nikitybe

Registered
Здравейте хора, проблема е следния: Трябваше ми скрипт, който да генерира random text от файл и после да го записва в DB. Написах си го и всичко точно, обаче се оказа, че като дам на бутона "Запази" и в базата данни се записва следващия резултат, който би трябвало да се покаже след Refresh, а не този който е наличен в момента.
Ето го и кода.

Код:
$textfile ="random.txt";
$items = file("$textfile");
$item = rand(0, sizeof($items)-1);
echo "<p class='text4'> Резултата е:</p>";
echo "<tt>" .$items[$item]. "</tt><br/><br/>";
echo "<form action='' method='post' name='lucky'>
<input type='image' src='images/lucky.png' width='89px' height='24px' name='lucky' value='Запази'/>
</form>";

echo "</div>";
	
include('config.php');
$id = $_SESSION['id'];
if(isset($_POST['lucky'])){
$query = mysql_query("INSERT INTO `fun`(id, lucky) VALUES('$id', '$items[$item]')");
}
 
Код:
session_start();
$textfile ="random.txt"; 
$items = file("$textfile"); 
$item = rand(0, sizeof($items)-1); 
echo "<p class='text4'> Резултата е:</p>"; 
echo "<tt>" .$items[$item]. "</tt><br/><br/>"; 
$_SESSION["items"] = $items[$item];
echo "<form action='' method='post' name='lucky'> 
<input type='image' src='images/lucky.png' width='89px' height='24px' name='lucky' value='Запази'/> 
</form>"; 

echo "</div>"; 
    
include('config.php'); 
$id = $_SESSION['id']; 
if(isset($_POST['lucky'])){ 
$query = mysql_query("INSERT INTO `fun`(id, lucky) VALUES('$id', '.".$_SESSION['items']."')"); 
}
 
Код:
session_start(); 

$textfile ="random.txt"; 
$items = file("$textfile"); 
$item = rand(0, sizeof($items)-1); 
echo "<p class='text4'> Резултата е:</p>"; 
echo "<tt>" .$items[$item]. "</tt><br/><br/>"; 
if(!isset($_SESSION["items"]) ){
$_SESSION["items"] = $items[$item]; 
}
echo "<form action='' method='post' name='lucky'> 
<input type='image' src='images/lucky.png' width='89px' height='24px' name='lucky' value='Запази'/> 
</form>"; 

echo "</div>"; 
    
include('config.php'); 
$id = $_SESSION['id']; 
if(isset($_POST['lucky'])){ 
$query = mysql_query("INSERT INTO `fun`(id, lucky) VALUES('$id', '.".$_SESSION['items']."')"); 
$_SESSION['items'] = null;
}
 
Успях да го оправя. Е вярно малко ламерски ама то ми писна вече и накрая се сетих така:
Код:
echo "<form action='' method='post' name='lucky'>
	<input  type='hidden' name='luck' value='". $items[$item]  ."' readonly>
	<input type='image' src='images/lucky.png' width='89px' height='24px' name='lucky' value='Запази късметчето'/>
	</form>";
 
Да, този начин доста често се използва и в много от случаите е полезен.
В твоя случай обаче това може да се окаже проблем, защото малко по-опитен потребител лесно може да манипулира стойността на $_POST['luck'], а пък и изграждането на защита за въпросния код ще ти е по-трудна от колкото със сесии.
Но ако пък скрипта не е от изключителна важност можеш и така да го оставиш. :)
 
HunteR, Ясно ми е, че така е много лесно да бъде манипулиран скрипта, но със сесии как ли не го пробвах и все не става. Ако можеш да го направиш помогай. Не че е важен скрипта ама все пак трябва да се развиваме :)
Поздрави на всички и наздраве. Най- вече НАЗДРАВЕ
 
Проблема с кода на gamena007, е че след натискането на бутона сесийната променлива приема нова стойност преди да е вкарала в базата старата.
В случая можеш да направиш нещо такова:

Код:
session_start(); 
if (!isset($_POST['lucky']))
{
$textfile ="random.txt"; 
$items = file($textfile); 
$item = $items[array_rand($items)];
echo "<p class='text4'> Резултата е:</p>"; 
echo "<tt>" .$item. "</tt><br/><br/>"; 
$_SESSION['items'] = $item; 
echo "<form action='' method='post' name='lucky'> 
<input type='image' src='images/lucky.png' width='89px' height='24px' name='lucky' value='Запази'/> 
</form>"; 

echo "</div>"; 
}
include('config.php'); 
$id = $_SESSION['id']; 
if(isset($_POST['lucky'])){ 
$query = mysql_query("INSERT INTO `fun`(id, lucky) VALUES('$id', '.".$_SESSION['items']."')"); 
}

Някой от нещата ги по промених. Не съм сигурен, че кода работи, но можеш да пробваш. :)
 

Back
Горе