Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Oikeudet yhden sivun muokkaamiseen?

Sivun loppuun

Numis97 [09.12.2010 17:41:19]

#

Hei!

Jos jollakin olisi valmis koodi seuraavaan, otan mielelläni vastaan.

Haluaisin saada kerhomme kotisivuille sivun, jota pystyisi muokkaamaan myös toisilla tunnuksilla. Tarkoituksena on, että sponsorimme pystyisi päivittämään tarjouslistaansa ilman, että voi käpälöidä muita tiedostoja. Tällä hetkellä lista on vielä pdf-muodossa, mutta vaihdan html:ään, mikäli alla mainittu siis onnistuu.

Sivusto on Louhen palvelimilla, ja selvitin asian - järjestelmään ei ole mahdollista luoda toisia tunnuksia. Tästä syystä haenkin erillistä koodia, jolla pystyy antamaan muokkausmahdollisuuden - tavalla tai toisella, mutta jotenkin. FTP, suora avaus ja tallentaminen tms. Itse olen php:stä vielä melko pihalla, tosin luulen ettei muillekaan ole kovin helppo toteutettava?

Metabolix [09.12.2010 17:52:01]

#

Siis yhtä tiedostoa pitäisi pystyä muokkaamaan?

<?php
$tiedosto = "muokattava.html";
$salasana = "kissa2";

if (isset($_POST["data"])) {
  $data = $_POST["data"];
  if (isset($_POST["salasana"]) && $_POST["salasana"] == $salasana) {
    file_put_contents($tiedosto, $data);
    $tallennettu = true;
  } else {
    $tallennettu = false;
  }
} else {
  $tallennettu = null;
  $data = @file_get_contents($tiedosto);
}
?>
<!DOCTYPE html>
<html lang="fi">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Tiedoston <?php echo htmlspecialchars($tiedosto); ?> muokkaus</title>
</head>
<body>
  <h1>Tiedoston <?php echo htmlspecialchars($tiedosto); ?> muokkaus</h1>
  <p>Tällä sivulla voit muokata tiedostoa. Tiedoston kuuluu olla HTML-muodossa.</p>
  <form id="lomake" action="#lomake" method="post">
    <?php
      if ($tallennettu === true) {
        echo "<p>Tallennus onnistui!</p>";
      }
      elseif ($tallennettu === false) {
        echo "<p>Salasana meni väärin, yritä uudestaan!</p>";
      }
    ?>
    <p><textarea name="data" rows="20" cols="80"><?php echo htmlspecialchars($data); ?></textarea></p>
    <p>
      <label>Salasana: <input type="password" name="salasana" /></label>
      <button type="submit">Lähetä</button>
    </p>
  </form>
</body>
</html>

Numis97 kirjoitti:

tosin luulen ettei muillekaan ole kovin helppo toteutettava?

Katso viestien kellonaikoja ja korjaa käsitystäsi. Tuossa ajassa luin viestisi, kirjoitin koodin tuohon ja varmuuden vuoksi vielä testasinkin sen perusteellisesti.

Numis97 [11.12.2010 18:41:08]

#

Eipä voi tosiaan väittää, että php:n saloja olisin omaksunut, mutta eiköhän tämä tästä, kun oppii ymmärtämään mitä funktio tarkoittaa (niitä suluissa olevia juttuja?) ja miten niitä voisi järkevästi käyttää.

Kiitos kuitenkin paljon selvästä ohjeesta, Metabolix! Sain toimimaan ensimmäisellä kerralla, joka on harvinaista :)

Numis97 [11.12.2010 19:10:08]

#

Miksiköhän alkoi yhtäkkiä lisäämään kauttaviivoja? Esim. fonttia ei saa säädeltyä, kun heti tallennuksen jälkeen lisää fonttikoon ympärille /-merkit. Homman nimi näkyy lähdekoodissa..

http://www.ep-numismaatikot.fi/tarjouslista.html

ankzilla [11.12.2010 19:19:51]

#

Aja tuloste stripslashes() funkkarin läpi. (En jaksanut tarkistaa oikeinkirjoitusta)

Metabolix [11.12.2010 19:27:31]

#

Palvelimella on ilmeisesti käytössä magic_quotes_gpc. Tätä ei kannata korjailla purkkaviritelmillä (kuten ankzilla ehdotti), vaan koko homma kannattaa hoitaa kerralla pois.

Jos pääset muokkaamaan PHP:n asetuksia (tiedostoa php.ini), ota asetus magic_quotes_gpc pois käytöstä. Muuten lisää jokaisen sivun alkuun (fiksusti tietenkin includella) täällä esiintyvä undoMagicQuotes-koodi.

Metabolix [11.12.2010 19:53:15]

#

Muuten: kommenttimerkinnässä on kummassakin päässä kaksi viivaa: <!-- kommentti -->.

Numis97 [12.12.2010 12:07:45]

#

stripslashes() -koodipätkän lisääminen php-osuuteen ei auttanut, lisää viivoja yhä. Ei myöskään löytynyt php.ini:ä, joku muu .ini kyllä oli.

Metabolix: Mitä tarkoitit joka sivun alkuun lisättävällä koodilla? Muokattavien sivujen alkuun tai muokkaussivun alkuun lisättävää? Mikä pätkä kyseinen tarkalleen on, esiintyy koodeissa paljon?

Pahoittelen kyselytulvaa, funktioiden sun muiden toimintaa / perusteita en siis ole vielä omannut.. :(

Metabolix [12.12.2010 12:54:47]

#

Siis lisää seuraava koodi jokaisen PHP-tiedoston alkuun:

<?php
if (!function_exists("undoMagicQuotes") && get_magic_quotes_gpc()) {
	function undoMagicQuotes($array, $topLevel = true) {
		$newArray = array();
		foreach($array as $key => $value) {
			if (!$topLevel) {
				$key = stripslashes($key);
			}
			if (is_array($value)) {
				$newArray[$key] = undoMagicQuotes($value, false);
			}
			else {
				$newArray[$key] = stripslashes($value);
			}
		}
		return $newArray;
	}
	$_GET = undoMagicQuotes($_GET);
	$_POST = undoMagicQuotes($_POST);
	$_COOKIE = undoMagicQuotes($_COOKIE);
	$_REQUEST = undoMagicQuotes($_REQUEST);
}
if (get_magic_quotes_runtime()) {
	set_magic_quotes_runtime(0);
}

Voit tallentaa koodin vaikka tiedostoon undomagicquotes.php ja hakea sen includella jokaisessa PHP-tiedostossa.

Numis97 [12.12.2010 13:18:40]

#

Mutta, nyt on kyse yhdestä ainoasta html-tiedostosta. Pitääkö koodi siis laittaa sen muokkaustiedoston alkuun, vai?

Muutkin sivut ovat kyllä php-muodossa includen käytön takia, mutta ongelmia ei ole. En siis näe syytä alkaa jokaisen tiedoston alkuun koodia laittamaan, includella tai muuten.

Metabolix [12.12.2010 13:34:05]

#

Kyllä, nimenomaan muokkaustiedostoon. Siellähän sitä dataa käsitellään. Ongelma on kaikissa GET-, POST- ja COOKIE-kohdissa, ja tuo koodi korjaa ne kaikki kerralla.

Numis97 [12.12.2010 14:01:43]

#

Hmm, nyt ei sitä muokattavaa sivua muuttele lähetyksen jälkeen. Mutta, kyllä mokoma vieläkin laatikkoon lisäilee ylimääräistä, jotka joutuu ottamaan pois aina kun alkaa muokkaamaan :(

Edit: ei kun ei.. Pieni hetki :)'

Toinen edit: Ohjelma lisää viivoja laatikkoon, kun käy toisella sivulla. Eivät tosiaan häiritse lopputuloksen kannalta, mutta muokkaajalle harmillisia :(

Kolmas: Öö.. Eihän tuo muokkaudu ollenkaan, vaikka salasana olisi oikein!

Metabolix [12.12.2010 15:15:09]

#

Nyt säädät kyllä jotain ihan omiasi. Mitäpä jos aloittaisit koko homman alusta? Laita tiedoston alkuun tuo jälkimmäinen koodi (undoMagicQuotes-jutut) ja sen perään muokkaussivun koodi. Sitten vaihda koodin alusta muokattavan tiedoston nimi ja salasana sopiviksi.

Numis97 [12.12.2010 15:58:23]

#

Nyt toimii. Mutta ainakin yritti vielä äsken lisäillä ylimääräistä.

Kiitos joka tapauksessa, auttaa paljon!


Sivun alkuun

Vastaus

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

Tietoa sivustosta