Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: filujen rivit

Sivun loppuun

SysRq868 [07.09.2004 17:08:04]

#

...elikkä joops, minulla on kaikki rekisteröityneet käyttäjät ( https://www.ohjelmointiputka.net/koodivinkit/23878-php-kirjautuminen-sessioneilla ) tuossa kayttajat.txt -filussa.

Nyt kuitenkin kekkasin, että kun käyttäjästä ja e-mailista ei saa oikein kunnon profileä, niin lisään sinne kaikki puhelinnumerot, sukupuolet, messuosoitteet, iät ym. ym. eli tiedosto olisi muotoa:

Käyttäjänimi|email|md5 -kryptattu passy|ikä|sukupuoli|mese|aol|yahoo|091234567| jne jne

No nämä infot voivat tietysti muuttua ikää ja sukupuolta lukuunottamatta, ja käyttäjä ehkä haluaa vaihtaa oletuksen, että e-mail näytetään.

Joten miten voisi PHP:llä hakea tiedostosta rivin, ja vaihtaa datat sinne formin avulla? Kiitos!

Olga [07.09.2004 17:15:36]

#

<?php

$etsittavaNimi = "Martti69"; // muokattava käyttäjä
$kayttajat = file("kayttajat.txt"); // käyttäjärivit taulukkoon
$tiedot = array(); // taulukko käyttäjän tietoja varten

foreach($kayttajat as $rivi) {

    $kayttajatiedot = explode("|", trim($rivi));

    if($kayttajatiedot[0] == $etsittavaNimi) {

        $tiedot = $kayttajatiedot;
        break;

    } // if

} // foreach

?>

Nyt $tiedot - taulussa on etsityn käyttäjän tiedot tuossa mainitsemassasi järjestyksessä ja nyt voit ne tulostaa vaikkapa muokattavaksi formiin tai mitä vaan. Sit tallennusvaiheessa teet vastaavan haun (ja vertaat ilmeisesti tuota salasanaa myös) ja muokkaat tietoja haluamallasi tavalla ja tallennat tiedot takaisin tiedostoon.

<?php

// tauhkaa formista
$aol = $_POST['aol'];
$mese = $_POST['mese'];

// hae tässä käyttäjän tiedot taulukkoon

$tiedot[xyz] = $aol;
$tiedot[yzx] = $mese;

$tallennettavaRivi = implode("|", $tiedot); // taulukko riviksi

?>

Tallennustapa vapaa :)

Edit: Tapoja on miljardeja, tai jopa tuhansia, mutta tässä siis yksi.

SysRq868 [07.09.2004 18:01:43]

#

Muuten menee hyvin, mutta kirjoita se ei tee.

Blaze [07.09.2004 18:05:17]

#

Minä ainakin käsitin tuon "Tallennustapa vapaa :)" -rivin niin, että tuo kirjoittaminen jäi kotitehtäväksi.

SysRq868 [07.09.2004 18:12:10]

#

:)... tuo tallennus oli varmaankin se, juuri miksi halusin tämän vinkin, jos katsot tarkaan noita http://www.funfonex.tk , huomaat että monilla sivuilla ideana on hakea tiedostosta tiedot arrayhin, katsoa, mikäli joku tieto on sama, jota haetaan -purkkaa. Mitä ilmeisemmin tallentaisin yhden rivin kaikkien muiden rivien päälle, niin että jää ainoastaan tämä päivitetty versio ko. datasta.

SysRq868 [08.09.2004 13:32:30]

#

...eli voisitko Olga tai joku muu antaa vastauskirjasta tiedostoontallennus pätkän? Kiitos!

tsuriga [08.09.2004 14:07:28]

#

Suositaan mieluummin niitä periaatteita, eli:
Etsit rivin, jolla etsitty tieto on ja muokkaat sitä riviä. Jos se on vaikka jaoteltu |-merkeillä, niin explodea kehiin, muokattavat tiedot entisten tietojen paikalle, implodeet sen rivistä x muodostetun taulukon ja pusket takaisin tuohon tiedoston taulukoon. Sitten implodeet sen tiedoston taulukon. ja kirjotat tiedostoon vaikka modella w+.

EDIT: Jos olet itse tehnyt alkuperäisen käyttäjätiedoston luonnin niin sinulla on kaikki tarvittava tieto funktioista kyseisen homman ratkaisemiseksi. Tarvitsee vain hieman päättelykykyä.

SysRq868 [08.09.2004 17:05:55]

#

eli...

lainaus:

implodeet sen rivistä x muodostetun taulukon ja pusket takaisin tuohon tiedoston taulukoon. Sitten implodeet sen tiedoston taulukon.

saisko suomeksi, kiitos?

tsuriga [08.09.2004 17:42:09]

#

Jos nyt yrittäs kääntää kämäselle suomenkielelle noita termejä:

Tuossa epäselvässä kohdassa rivi x tarkoittaa sitä tiedoston riviä, josta haettava tieto löytyi. Siitä muodostettu taulukko on siis muodostettu explode-funktiolla. Sen taulukon tiedoista sinun pitää muuttaa tietoja, joita käyttäjä on muuttanut. Jos ei aukea niin tee joku tekstitiedosto, missä lukee mitä missäkin indeksissä on. Itsellä on tällaisia, tyyliin:

Esimarvostelu.txt kirjoitti:

<nimi>|<päiväys>|<näyttelijät>|<juoni>|<arvosana­>

Jotain seuraavaa, mistä jatkokehittäjätki näkevät helposti tietojen järjestyksen.

SysRq868 [08.09.2004 18:11:07]

#

no nyt tajusin... vaan en saa siitä väännettyä koodia... voisiko joku jelppiä, helpommalla pääsisitte. :D

SysRq868 [10.09.2004 10:10:58]

#

...haloo? Edes joku?

Latska [10.09.2004 10:15:21]

#

SysRq868 kirjoitti:

...haloo? Edes joku?

Et sinä tuolleen saa nopeammin vastausta. Joskus saa vastausta odottaa monta päivää. Koska minäkään en osaa vastata, tämä oli aika turha viesti.

tsuriga [10.09.2004 10:45:29]

#

Keskustelualueen ohjeet kirjoitti:

Älä pyydä valmista koodia. Ohjelmointiputkan tarkoitus on auttaa ohjelmointiongelmissa mutta ei tehdä ohjelmia kysyjän puolesta.

Tuo on varsin yksinkertainen koodi jos on lukenut oppaat läpi.
Latska hyvä näitä on aina välistä muistutella.
EDIT: Z0mg ohjeissa on typo.

SysRq868 [10.09.2004 15:59:38]

#

Keskustelualueen ohjeet kirjoitti:

Älä lähetä turhia viestejä. Jos jollakulla on ongelma, älä lähetä vastaukseksi pelkästään "Kyllä siinä varmaan on joku vialla" tai "Etsi Googlella".

Keskustelualueen ohjeet kirjoitti:

Kunnioita muita keskustelijoita, älä tee kenestäkään pilkkaa.

Että silleen. Ainiin, ja...

SysRq868 kirjoitti:

Joten miten voisi PHP:llä hakea tiedostosta rivin, ja vaihtaa datat sinne formin avulla?

Joten saisko apua?

TETRIS [10.09.2004 16:09:44]

#

Tuosta löytyy jo topikki... minun aloittamani.

Olga [10.09.2004 16:23:24]

#

TETRIS kirjoitti:

Tuosta löytyy jo topikki... minun aloittamani.

https://www.ohjelmointiputka.net/keskustelu/4659-tiedoston-muokkaaminen :)

tsuriga [10.09.2004 17:38:31]

#

Ei ollut tarkoitus loukata, mutta kun et viitsi kertoa, missä vaikeus piilee, mitä osaa et saa tehtyä jne.

Sirch kirjoitti:

what does it say ffs? it doesn't say "Something's wrong" unless you've got some teletubbies compiler

Ja hakua saa käyttää.

SysRq868 [10.09.2004 21:16:38]

#

No vialla on se, että muu luonnistuu, mutta tietyn filun tietyn rivin vaihto toiseen riviin, joka on määritelty vaikka muuttujassa $erkki.

Eli siis käyttäjän muokkaus...

Tai sit jos joku löytää flatfilellä toimivan täydellisen rekkaus- ja loginnisysteemin, jossa olis käyttäjänmuokkaus, ehkä osaisin itse eristää tuon koodin...

Vaikeus piilee siinä, että en osaa käyttää juuri muita toimintoja PHP:ssä kuin echo, fopen, fclose, fwrite, $_GET, $_POST, $_SESSION, ym session-funktit, array ja file.

Ah, jos JavaScript voisi muokata filuja... noei.

Blaze [10.09.2004 21:46:11]

#

Luet sen tiedoston taulukkoon, niin siitä on lapsellisen helppo muuttaa jokin rivi toiseksi.

tsuriga [10.09.2004 22:43:31]

#

Sanosinpa notta RTFM, tämän sivuston oppaat&manuska auttaa, kerroin jo periaatteen.

doze [10.09.2004 22:58:11]

#

Mulla on käytössä saman kaltainen systeemi ja tässä esimerkki kuinka minä tein päivitykset, hieman pelkistetty esimerkki (lisättävä paremmin sitten tarkastuksia ym oman maun mukaan)

kayttajat.dat -tiedosto

jamppa|jamppa1|Jarmo|Myllys|
tomppa|tomppa8|Tommi|Koivunen|
jukkie|jukkie2|Jukka|Tarvanen|

ch1.php -tiedosto (valitaan muokattava tunnus)

<html>
<head>
<title>Valitse muokattava tunnus</title>
</head>
<body>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center">

<table width="446" border="0" height="200" cellspacing="1" cellpadding="0" style="border:1px #000000 solid">
<form action="ch2.php" method="post">
<tr><td colspan="2">&nbsp;</td></tr>

<?php
$tiedosto = "kayttajat.dat"; //tiedosto jossa tunnarit/käyttäjä/w00teva
$data = file($tiedosto);
for ($i=0; $i<count($data); $i++) {
  $entry = explode("|", $data[$i]);
  echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
  echo "<tr height=\"20\"><td align=\"right\" width=\"180\"><input type=\"radio\" name=\"tunnus\" value=\"$entry[0]\">&nbsp;&nbsp;</td></td><td>&nbsp;$entry[0]</td></tr>";
}
?>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2" height="35" align="center"><input type="submit" value="Valitse" size="120">&nbsp;&nbsp;&nbsp;&nbsp;<input name="poistu" type="Button" value="Poistu" onClick="javascript:window.close();"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
</form></table>

<td></tr></table>
</body>
</html>

ch2.php -tiedosto

<html>
<head>
<title>Päivitä tunnusta</title>
</head>
<body>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center">

<?php

if (isset($_POST["paivita"])) {

	//tiedosto missä käyttäjätiedot
	$tiedosto = "kayttajat.dat";

	//otetaan lomakkeelta tulleet tiedot
	$tunnus = $_POST["tunnus"];
	$passu = $_POST["passu"];
	$etunimi = $_POST["etunimi"];
	$sukunimi = $_POST["sukunimi"];

	$data = file($tiedosto);
	$userit = array();

	//kerätään tunnukset
	for ($i=0; $i<count($data); $i++) {
		$solu = explode("|", $data[$i]);
		$userit[$i] = $solu[0];
	}

	//tarkastetaan että käyttäjä on tiedostossa
	if (in_array($tunnus, $userit) == TRUE) {

	//temppi tiedosto joka tehdään uusin tiedoin
	$temp = "".$tiedosto.".temp";
	$temptiedosto = fopen($temp,"w+");

	for ($i=0; $i<count($data); $i++) {
		$solu = explode("|", $data[$i]);
		$nykyrivi = $solu[0]."|".$solu[1]."|".$solu[2]."|".$solu[3]."|\n";
		$uusirivi = $tunnus."|".$passu."|".$etunimi."|".$sukunimi."|\n";

		//jos tulee eiole päivitettävä tunnus kyseessä rivillä niin kirjoitetaan nykyinenrivi
		if($solu[0] != $tunnus) fwrite($temptiedosto,$nykyrivi);
		//muuten on päivitettävä kyseessä ja kirjoitetaan uusi päivitetty rivi
		else fwrite($temptiedosto, $uusirivi);
	}
	fclose($temptiedosto);
	//poistetaan vanha tiedosto
	unlink($tiedosto);
	//nimetään temppitiedosto oikeaksi
	rename($temp,$tiedosto);

print <<<EOT
<table width="446" border="0" height="50" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center" style="BORDER: 1px solid #000000"><b>Tunnuksen tiedot päivitetty!</b></td></tr>
<tr><td height="10"></td></tr>
</table>
EOT;

} else {
print <<<EOT
<table width="446" border="0" height="50" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center" style="BORDER: 1px solid #000000"><b>Ei löydy tunnusta: <u>$tunnus</u>!</b></td></tr>
<tr><td height="10"></td></tr>
</table>
EOT;
}

}
?>
<?php

// otetaan vastaan ch1.php tiedostosta valittu tunnus
$tunnus = $_POST["tunnus"];

// tiedosto jossa käyttäjät
$tiedosto = "kayttajat.dat";
$data = file($tiedosto);

// haetaan tunnuksen muut tiedot
for ($i=0; $i<count($data); $i++) {
  $solu = explode("|", $data[$i]);
  if($solu[0] == $tunnus) {
	  	$tunnus = $solu[0];
		$passu = $solu[1];
		$etunimi = $solu[2];
		$sukunimi = $solu[3];
  }
}

// tehdään lomake ja laitetaan muokattavan tunnuksen tiedot siihen
print <<<EOT
<table width="446" border="0" height="200" cellspacing="0" cellpadding="0" style="border:1px #000000 solid">
<form action="ch2.php" method="post">
<tr><td colspan="3">&nbsp;</td></tr>
<tr><td width="130" height="25" align="right">Tunnus:</td><td width="10"></td><td width="306" align="left"><input type="text" name="tunnus" size="42" value="$tunnus"></td></tr>
<tr><td width="130" height="25" align="right">Passu:</td><td width="10"></td><td align="left"><input type="text" name="passu" size="42" value="$passu"></td></tr>
<tr><td width="130" height="25" align="right">Etunumi:</td><td width="10"></td><td align="left"><input type="text" name="etunimi" size="42" value="$etunimi"></td></tr>
<tr><td width="130" height="25" align="right">Sukunimi:</td><td width="10"></td><td align="left"><input type="text" name="sukunimi" size="42" value="$sukunimi"></td></tr>
<tr><td colspan="3">&nbsp;</td></tr>
<tr><td width="130" height="35" align="right">&nbsp;</td><td width="10"></td><td align="left"><input name="paivita" type="submit" value="Päivitä">&nbsp;&nbsp;&nbsp;&nbsp;<input name="poistu" type="Button" value="Poistu" onClick="javascript:window.close();"></td></tr>
<tr><td colspan="3">&nbsp;</td></tr>
</form></table>

<td></tr></table>
</body>
</html>
EOT;
?>

SysRq868 [11.09.2004 09:32:44]

#

ch2.php

<html>
<head>
<title>Päivitä tunnusta</title>
</head>
<body>
<table border="0" width="100%" height="100%" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center">
<?php
if (isset($_POST["paivita"])) {
    $tiedosto = "kayttajat.txt";
    $tunnus = $_POST["tunnus"];
    $passu = $_POST["passu"];
    $etunimi = $_POST["etunimi"];
    $sukunimi = $_POST["sukunimi"];
    $data = file($tiedosto);
    $userit = array();
    for ($i=0; $i<count($data); $i++) {
        $solu = explode("|", $data[$i]);
        $userit[$i] = $solu[0];
    }
    if (in_array($tunnus, $userit) == TRUE) {
    $temp = "".$tiedosto.".temp";
    $temptiedosto = fopen($temp,"w+");
    for ($i=0; $i<count($data); $i++) {
        $solu = explode("|", $data[$i]);
        $nykyrivi = $solu[0]."|".$solu[1]."|".$solu[2]."|".$solu[3]."|\n";
        $uusirivi = $tunnus."|".$passu."|".$etunimi."|".$sukunimi."|\n";
        if($solu[0] != $tunnus) fwrite($temptiedosto,$nykyrivi);
        else fwrite($temptiedosto, $uusirivi);
    }
    fclose($temptiedosto);
    unlink($tiedosto);
    rename($temp,$tiedosto);
print <<<EOT
<table width="446" border="0" height="50" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center" style="BORDER: 1px solid #000000"><b>Tunnuksen tiedot päivitetty!</b></td></tr>
<tr><td height="10"></td></tr>
</table>
EOT;
} else {
print <<<EOT
<table width="446" border="0" height="50" cellspacing="0" cellpadding="0">
<tr><td align="center" valign="center" style="BORDER: 1px solid #000000"><b>Ei löydy tunnusta: <u>$tunnus</u>!</b></td></tr>
<tr><td height="10"></td></tr>
</table>
EOT;}
}
?>
<?php
$tunnus = "Martti2";
$tiedosto = "kayttajat.txt";
$data = file($tiedosto);
for ($i=0; $i<count($data); $i++) {
  $solu = explode("|", $data[$i]);
  if($solu[0] == $tunnus) {
    $tunnus = $solu[0];
    $passu = $solu[1];
    $etunimi = $solu[2];
    $sukunimi = $solu[3];
  }
}
echo '<table width="446" border="0" height="200" cellspacing="0" cellpadding="0" style="border:1px #000000 solid">
<form action="ch2.php" method="post">
<tr><td colspan="3">&nbsp;</td></tr>
<tr><td width="130" height="25" align="right">Tunnus:</td><td width="10"></td><td width="306" align="left"><input type="text" name="tunnus" size="42" value="$tunnus"></td></tr>
<tr><td width="130" height="25" align="right">Passu:</td><td width="10"></td><td align="left"><input type="text" name="passu" size="42" value="$passu"></td></tr>
<tr><td width="130" height="25" align="right">Etunumi:</td><td width="10"></td><td align="left"><input type="text" name="etunimi" size="42" value="$etunimi"></td></tr>
<tr><td width="130" height="25" align="right">Sukunimi:</td><td width="10"></td><td align="left"><input type="text" name="sukunimi" size="42" value="$sukunimi"></td></tr>
<tr><td colspan="3">&nbsp;</td></tr>
<tr><td width="130" height="35" align="right">&nbsp;</td><td width="10"></td><td align="left"><input name="paivita" type="submit" value="Päivitä">&nbsp;&nbsp;&nbsp;&nbsp;<input name="poistu" type="Button" value="Poistu" onClick="javascript:window.close();"></td></tr>
<tr><td colspan="3">&nbsp;</td></tr>
</form></table>
<td></tr></table>
</body>
</html>';
?>

Ja unexpected dollari rivillä 76.

tsuriga [11.09.2004 11:25:26]

#

Muuttujat ja teksti samassa, vois erotella ni ois selkeempää ja toimis kaikilla palvelimilla. Nyt jos palvelimella on joku asetus kohdallaan niin formiin tulostuu vain "$sukunimi" jne. Hyvin toimii kun ottaa EOT:t pois ja korvaa tageilla.

SysRq868 [11.09.2004 12:57:41]

#

öhh... kun nyt leikin tuolla toimivalla versiolla... doze, mitä järkeä antaa ihmisen vaihtaa tunnusta? Onko sulla kotisivuillas tunnuksenvaihto? Ja sitä paitsi, jos Martti2 vaihtaa nimensä Martti3 :ksi, niin, skripti toteaa, että Martti3 :ea ei ole listalla, ja ei tee mitään.

Mutta nyt toimii! Kiitos kaikille!


...tai sitten ei...

Warning: unlink(kayttajat.txt): Permission denied in /mbnet/f/funfonex/omataset.php on line 57

Warning: rename(temp/kayttajat.txt.temp,kayttajat.txt): Permission denied in /mbnet/f/funfonex/omataset.php on line 58

<?php
if (isset($_POST["paivita"])) {
    $tiedosto = "kayttajat.txt";
    $tunnus = $_POST["tunnus"];
    $mail = $_POST["mail"];
    $pass = $_POST["pass"];
    $data = file($tiedosto);
    $userit = array();
    for ($i=0; $i<count($data); $i++) {
        $solu = explode("|", $data[$i]);
        $userit[$i] = $solu[0];
    }
    if (in_array($tunnus, $userit) == TRUE) {
    $temp = "temp/".$tiedosto.".temp";
    $temptiedosto = fopen($temp,"w+");
    for ($i=0; $i<count($data); $i++) {
        $solu = explode("|", $data[$i]);
        $nykyrivi = $solu[0]."|".$solu[1]."|".$solu[2]."|\n";
        $uusirivi = $tunnus."|".$mail."|".$pass."|\n";
        if($solu[0] != $tunnus) fwrite($temptiedosto,$nykyrivi);
        else fwrite($temptiedosto, $uusirivi);
    }
    fclose($temptiedosto);
    unlink($tiedosto);
    rename($temp,$tiedosto);
    echo '<b>Tunnuksen tiedot päivitetty!</b>';
} else {
   echo '<b>Ei löydy tunnusta: <u>'.$tunnus.'</u>!</b>';
}
}
?>
<?php
$tunnus = $_SESSION["sess_tunnus"];
$tiedosto = "kayttajat.txt";
$data = file($tiedosto);
for ($i=0; $i<count($data); $i++) {
  $solu = explode("|", $data[$i]);
  if($solu[0] == $tunnus) {
    $tunnus = $solu[0];
    $mail = $solu[1];
    $pass = $solu[2];
  }
}
echo '<table border="0" cellspacing="0" cellpadding="0" class=normal>
<form action="omataset.php" method="post">
<input name="pass" type="hidden" value="'.$pass.'">
<input name="tunnus" type="hidden" value="'.$_SESSION["sess_tunnus"].'">
<tr><td width=200>Tunnus:</td><td width="306" align="left">'.$_SESSION["sess_tunnus"].'</td></tr>
<tr><td width=200>E-mail:</td><td align="left"><input type="text" name="mail" size="42" value="'.$mail.'"></td></tr>
<tr><td width=200>&nbsp;</td><td><input name="paivita" type="submit" value="Päivitä"></td></tr>
</form></table>
</body>
</html>';
?>

Mikä on pielessä?

Blaze [11.09.2004 13:29:56]

#

SysRq868 kirjoitti:

Mikä on pielessä?

No johan se lukee noissa virheilmotuksissa: PHP:lla ei oo oikeuksia sörkkiä noita tiedostoja. Avainsana: chmod

tsuriga [11.09.2004 14:00:26]

#

Nah, otat vain renamen ja unlinkin pois, katso dozen topikki https://www.ohjelmointiputka.net/keskustelu/6339-tiedostossa-rivien-kääntely ja sieltä minun neljäs viesti. Siitä voit eristellä tiedon siitä, kuinka voit tehdä tuon ilman renamea ja unlinkkiä.

SysRq868 [11.09.2004 19:11:27]

#

öhh... rename mitä ilmeisemmin on uudelleennimetys. Mutta mikä halvattu on unlink? Ja koodissa

<?php
/* Tiedoston rivin siirto alas- tai ylöspäin */

$tiedosto = "joku.txt";
$data = file($tiedosto);
$tiedot = array();

// käydään tiedot läpi ja haetaan indeksit
foreach($data as $rivi) $tiedot[] = substr($rivi,0,strpos($rivi,"|"));

$solu = $_GET['solu'];    // järjestettävän rivin tunnistesolu
$suunta = $_GET['suunta'];        // rivin siirtosuunta

// jos järjestettävä rivi löytyy tiedostosta
if (in_array($solu, $tiedot) == TRUE) {
  $i = array_search($solu, $tiedot);    // etsityn tunnisteen indeksi taulukossa
// siirretään tunnisteen sisältävä rivi haluttuun suuntaan
  $suunta ? list($data[$i], $data[$i-1]) = array($data[$i-1], $data[$i]) : list($data[$i+1], $data[$i]) = array($data[$i], $data[$i+1]);
// kirjoitetaan tulos tiedostoon
  $tt = fopen($tiedosto,"w+");
  fwrite($tt,implode("",$data));
  fclose($tt);
  }

?>

En löytänyt mitään korvaavaa, toisaalta hyvä ettiä, kun ei tiiä mitä ettii...

chmodilla on laitettu kaikki kaikille, niinkuin FunFonexin tunnuskin käy täällä Ohjelmointiputkassa... "kaikkea-kaikille-peeloportaali, käykää kaikki"... :(

Tai sitten katoin viidettä viestiä... Tai jotain. Päivittäinen Amerikan Pastilli -annos jäi väliin, mistä taas johtuu tänpäiväinen tyhmyyteni. Tarmon tukkutyyppien syytä, uudet pastillit 20. päivä.

Blaze [11.09.2004 19:27:50]

#

SysRq868 kirjoitti:

Mutta mikä halvattu on unlink?

RTFM: https://www.php.net/manual/fi/function.unlink.php

tsuriga [11.09.2004 21:20:33]

#

Noh, ajatellaan yhdessä:
tarkoitin lähinnä tätä:

fwrite($tt,implode("",$data));

Tuossa siis tiedostoon kirjoitetaan vain kerran eikä käytetä väliaikaistiedostoa (joilloin unlinkkiä ja renamea ei tarvita).

SysRq868 [12.09.2004 12:42:02]

#

En kyllä ymmärtänyt, mutta miten tuo viritys toimii kahden kansion päässä: http://koti.mbnet.fi/funfonex/scriptemp/chngrows/ch2.php unlinkkiensä kanssa...


...muttei päähakemistossa http://koti.mbnet.fi/funfonex ?

Elikkä

<?php
if (isset($_POST["paivita"])) {
    $tiedosto = "kayttajat.txt";
    $tunnus = $_POST["tunnus"];
    $mail = $_POST["mail"];
    $pass = $_POST["pass"];
    $data = file($tiedosto);
    $userit = array();
    for ($i=0; $i<count($data); $i++) {
        $solu = explode("|", $data[$i]);
        $userit[$i] = $solu[0];
    }
    if (in_array($tunnus, $userit) == TRUE) {
    $temp = "temp/".$tiedosto.".temp";
    $temptiedosto = fopen($temp,"w+");
    for ($i=0; $i<count($data); $i++) {
        $solu = explode("|", $data[$i]);
        $nykyrivi = $solu[0]."|".$solu[1]."|".$solu[2]."|\n";
        $uusirivi = $tunnus."|".$mail."|".$pass."|\n";
        if($solu[0] != $tunnus) fwrite($temptiedosto,$nykyrivi);
        else fwrite($temptiedosto, $uusirivi);
    }
    fclose($temptiedosto);
    unlink($tiedosto);
    rename($temp,$tiedosto);
    echo '<b>Tunnuksen tiedot päivitetty!</b>';
} else {
   echo '<b>Ei löydy tunnusta: <u>'.$tunnus.'</u>!</b>';
}
}
?>
<?php
$tunnus = $_SESSION["sess_tunnus"];
$tiedosto = "kayttajat.txt";
$data = file($tiedosto);
for ($i=0; $i<count($data); $i++) {
  $solu = explode("|", $data[$i]);
  if($solu[0] == $tunnus) {
    $tunnus = $solu[0];
    $mail = $solu[1];
    $pass = $solu[2];
  }
}
echo '<table border="0" cellspacing="0" cellpadding="0" class=normal>
<form action="omataset.php" method="post">
<input name="pass" type="hidden" value="'.$pass.'">
<input name="tunnus" type="hidden" value="'.$_SESSION["sess_tunnus"].'">
<tr><td width=200>Tunnus:</td><td width="306" align="left">'.$_SESSION["sess_tunnus"].'</td></tr>
<tr><td width=200>E-mail:</td><td align="left"><input type="text" name="mail" size="42" value="'.$mail.'"></td></tr>
<tr><td width=200>&nbsp;</td><td><input name="paivita" type="submit" value="Päivitä"></td></tr>
</form></table>
</body>
</html>';
?>

Mitkä rivit pitäis niinkuin muokata/poistaa/siirtää?

http://www.rtfm.com :)

Blaze [12.09.2004 13:03:27]

#

SysRq868 kirjoitti:

En kyllä ymmärtänyt, mutta miten tuo viritys toimii kahden kansion päässä: http://koti.mbnet.fi/funfonex/scriptemp/chngrows/ch2.php unlinkkiensä kanssa...
...muttei päähakemistossa http://koti.mbnet.fi/funfonex ?

No koska siellä alihakemistossa PHP:llä on oikeus poistella noita tiedostoja, mutta päähakemistossa ei.

Ja minä tarkoitin lähinnä tätä RTFM:ää :)

tsuriga [12.09.2004 13:38:51]

#

Oletko paljonkin katsellut tuota koodia?

?>
<?php

Näyttää varsin tehokkaalta. Ota ne renamet ja unlinkit pois, et tarvitse temp-tiedostoa, ellet välttämättä sitten halua. Käsittelet vain sitä yhtä taulukkoa, joka on muodostettu kayttajat.txt:stä ja kirjoitat lopputuloksen siihen samaan tiedostoon. Eikös tuolla voi vaihtaa tietoja vain jos vaihtaa tunnusta? Ajatuksen kanssa kun säädät tota sellaset 4h vaikka ni eiköhä se siitä.

SysRq868 [12.09.2004 15:32:42]

#

RTFM = Right This Freaking Minute (polite form)

EDIT: Ja samat oikeudet on molemmissa. Mutta päähakemisto ei ole chmodattu, kun kotisivumuokkain ei sitä salli.

EDIT 2: No, kirjautuminen ei anna luoda sess_tunnus -sessionia, jossei salasana ole oikein. Pitäisi vaihtaa sess_tunnus -nimeä joksikin 8dfhg6sf6gh9szyh0r6hed9ay tai jotain. Vai mitä tarkoitit?

EDIT 3: heh, heh, onnistuihan se... nyt kaikille tunnukset FunFonexiin, ja heti leikkimään uudella käyttäjän muokkauksella! ;)

doze [13.09.2004 01:14:37]

#

Heipä hei.. en ollut paikalla vastailemassa kommentteihin, mutta siis tuo mitä tein avuksi niin ei todellakaan ollu tarkoitettu ottaa käyttöön sellaisenaan, se oli vain ESIMERKKI mitä kuuluu itse soveltaa omaan tarkoitukseensa! Tottakai käyttäjän tietoja muokatessa itse tunnus laitetaan tulemaan vain vaikka echo tekstinä eikä missään muokattavassa editboxissa jne jne.. pah!


Sivun alkuun

Vastaus

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

Tietoa sivustosta