Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Ongelmia muuttujien lähetyksissä + muissa (PHP)

Clacier [19.01.2010 21:55:43]

#

Muutama ongelma koskien php kieltä.


käyttäjä näyttää tältä $_SESSION['tun'], ja sivulta jee.php pitäisi saada lähetettyä joo.php:hen lähettäjän nimimerkki, sekä viesti.

jee.php:ssä koodi on siis tällainen:

<?php
<from method="post" action="joo.php">
nimimerkki <input type="text" name="nimimerkki"><br>
viesti <input type="text" name="viesti"><br>
<input type="submit" value="lähetä">
?>

joo.php joka kirjoittaa tiedoston juu.txt jee.php:ssä lähetetyt tiedot, näyttää tältä tiivistettynä:

<?php
  $nimimerkki = $_POST['nimimerkki'];
  $viesti = $_POST['viesti'];
  $logit = "nimimerkki $nimimerkki lähetti viestin $viesti";
  $logit = str_replace("\\\"","\"",$logit);
  $logit = str_replace("\\'","'",$logit);
  $fp = fopen("juu.txt", "a+");
  fwrite($fp, $logit);
  fclose($fp);
  header("location: jee.php");
?>

eli, ongelmana on se että nimimerkkiä ($_SESSION['tun']) saa vaihdettua.
yritin laittaa joo.php:seen seuraavanlaisen muokkauksen (huonolla menestyksellä:)

<?php
  $nimimerkki = $_SESSION['tun'];
  $viesti = $_POST['viesti'];
?>

että semmosta. ja sitten toinen ongelma, liittyen muuttujien arvon lähetykseen...
eli, sivulla peli.php on rahapeli jossa rahat on muuttujana $rahat.
tavoitteena olisi saada toimiva ennätyslista rakennettua, ja ennätykset tallennetaan tiedostoon ennatys.txt tiedostosta ennatys.php.
miten $rahat muuttujan saisi lähetettyä sivulta peli.php sivulle ennatys.php sillä tavalla ettei sitä olisi mahdollista vaihtaa?


tällä hetkellä sivulla peli.php on seuraavanlainen koodi:

<?php
<from method="post" action="ennatys.php">
ennätyksesi <input type="text" value="<?php echo''.$rahat'].'';?>"name="ennatys"><br>
<input type="submit" value="lähetä">
?>

eli tuota inputin namea saa vaihdettua.


suurin osa koodista on kirjoitettu päästä tähän eli virheitä on varmasti, älkää niistä kovin välittäkö..

Clacier [20.01.2010 20:40:12]

#

Eikö kukaan osaa auttaa? :(

Macro [20.01.2010 20:46:29]

#

1. HTML-koodia ei kirjoiteta <?php ?>-tagien sisään.
2. Haluatko muuttaa sessionia? Ensinnäkin, tuota sessionia ei aseteta, koska session_start() funktio ei ole kutsuttu. Lisäksi sessionit eivät säily kun suljet selaimen.
3. <?php echo''.$rahat'].'';?>? Mikäs tuo on olevinaan? Muutes, mikä idea on antaa käyttäjän laittaa oma ennätyksensä?
4. $logit muuttujissa olevat str_replace funktiot voi unohtaa, koska PHP osaa käsitellä ne itse stripslashes() funktiolla.
5. Syntaxi on kyllä aivan päin puuta. 3. kohdan koodi on esimerkiksi niin virheellinen, että sivun lataus jää jumiin tuohon kohtaan.

Esimerkit:

<?php
// Aloitetaan istunto
session_start();

// Otetaan tiedot muuttujiin
$nimimerkki = $_POST["nimimerkki"];
$viesti = $_POST["viesti"];

// Jos ne eivät ole tyhjiä
if(!empty($nimimerkki) && !empty($viesti)) {
	// Kirjoitetaan tiedostoon
	file_put_contents("tiedosto.txt", "$nimimerkki kirjoitti viestin $viesti");
	// Jos sessioni on jo, tuhotaan se
	if(isset($_SESSION["tun"])) {
		unset($_SESSION["tun"]);
		session_destroy();
	}

	// Asetetaan uusi sessioni
	$_SESSION["tun"] = $nimimerkki;
	// Ohjataan käyttäjä kiitos-sivulle.
	header("Location: kiitos.php");
}
?>
<form action="kasittely.php" method="POST">
	Nimimerkki:
	<input type="text" name="nimimerkki"><br>

	Viesti:
	<input type="text" name="viesti"><br>
	<input type="submit" value="Lähetä">
</form>

Lue ainakin tämä, tämä, tämä, tämä, tämä, tämä, tämä, tämä ja tämä.

Teuro [20.01.2010 20:53:30]

#

Voitko laittaa esille oikeat koodit ja tarkan selvityksen mikä ei mielestäsi toimi tai toimii virheellisesti? Tuosta on kamalan hankala setviä, kun ei tiedä edes perusongelmia. Esimerkiksi tämä on aivan varmasti väärin

Clacier kirjoitti:

<?php
ennätyksesi <input type="text" value="<?php echo''.$rahat'].'';?>"name="ennatys"><br>
?>

Eli onko ongelmana syntaksi vai joku muu?

Clacier [20.01.2010 21:09:47]

#

Noh...pelissäni on muuttujana $rahat. miten muuttujan rahat arvon saisi lähetettyä php:llä toiseen .php tiedostoon?

niin ja vielä se että taisin selittää avausviestissäni ongelmani turhan huonosti.

Teuro [20.01.2010 21:13:27]

#

No siis vaikka näin:

<?php
$rahat = 135.26;

echo"<a href=\"osoite.php?rahat={$rahat}\">toiselle</a> sivulle";
?>
<?php
if(isset($_GET['rahat'])){
    $rahat = siivoa_syote($_GET['rahat']);
}

echo "<p>Rahaa on {$rahat} €</p>";
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta