Oisin mä varmaan Googlettamalla löytäny, jos olisin osannu hakea oikealla hakusanalla. ;D
Mut millä koodilla PHP:llä saa semmosen, että kun textareaan kiroittaa tekstiä, submit-nappulan jälkeen se tallentaa sen siihen?
Ja sitten sitä samaa tekstiä voi tietysti myöhemmin muokkailla.
Että se siis tallentuisi vaan siihen.
Koittakaa ymmärtää mitä ajan takaa. :P
Tässä on yksi esimerkki (viesti.php), jossa viesti tallennetaan tiedostoon (viesti.txt).
<?php if (isset($_POST["viesti"])) { $tied = fopen("viesti.txt", "w"); fwrite($tied, $_POST["viesti"]); fclose($tied); } $viesti = @file_get_contents("viesti.txt"); ?> <form action="viesti.php" method="post"> <textarea name="viesti" rows="10" cols="50"> <?php echo htmlspecialchars($viesti); ?> </textarea> <br><input type="submit" value="Tallenna"> </form>
Mutta onko sellainen mahdollista, että viestiä ei tallennettaisi erilliseen tiedostoon, vaan että se pysyisi yhdessä textareassa?
Kato ku tarkotus ois sitte et se textarea includetettais erilliselle sivulle. ^^
Edit: Kiitos kuitenkin.
Voisitko kertoa tarkemmin, mitä olet tekemässä?
Pitääkö tekstin pysyä tallessa, jos selaimen sulkee ja avaa uudestaan? Pitääkö saman tekstin näkyä monelle käyttäjälle? Molemmissa tapauksissa teksti täytyy tallentaa jotenkin (tiedostoon, tietokantaan).
Antti Laaksonen kirjoitti:
Voisitko kertoa tarkemmin, mitä olet tekemässä?
Pitääkö tekstin pysyä tallessa, jos selaimen sulkee ja avaa uudestaan? Pitääkö saman tekstin näkyä monelle käyttäjälle? Molemmissa tapauksissa teksti täytyy tallentaa jotenkin (tiedostoon, tietokantaan).
Tekstin pitää näkyä monelle käyttäjälle,
eli pitää myös näkyä selaimen sulkemisen jälkeen.
Olen tekemässä uutisjärjestelmää, että vanhoja uutisia olisi myös helppo poistaa.
Eli se tiedostoontallennus on välttämätön?
Uutiset täytyy tallentaa tiedostoon tai tietokantaan.
Katsopa tätäkin tiedostoa:
https://www.ohjelmointiputka.net/uutiset.dat
Antti Laaksonen kirjoitti:
Uutiset täytyy tallentaa tiedostoon tai tietokantaan.
Katsopa tätäkin tiedostoa:
https://www.ohjelmointiputka.net/uutiset.dat
Kato ku aattelin että yhtä textarean sisältöä vois muuttaa aina submit-nappulaa painamalla. Oon muistaakseni nähny sellasen jossai.
ankzilla kirjoitti:
Antti Laaksonen kirjoitti:
Uutiset täytyy tallentaa tiedostoon tai tietokantaan.
Katsopa tätäkin tiedostoa:
https://www.ohjelmointiputka.net/uutiset.datKato ku aattelin että yhtä textarean sisältöä vois muuttaa aina submit-nappulaa painamalla. Oon muistaakseni nähny sellasen jossai.
Tallennat sen textarean sisällön tekstitiedostoon, kun painaa submit-nappulaa, ja sivun latauduttua lataat siitä tekstitiedostosta sisällön textareaan.
Newb kirjoitti:
ankzilla kirjoitti:
Antti Laaksonen kirjoitti:
Uutiset täytyy tallentaa tiedostoon tai tietokantaan.
Katsopa tätäkin tiedostoa:
https://www.ohjelmointiputka.net/uutiset.datKato ku aattelin että yhtä textarean sisältöä vois muuttaa aina submit-nappulaa painamalla. Oon muistaakseni nähny sellasen jossai.
Tallennat sen textarean sisällön tekstitiedostoon, kun painaa submit-nappulaa, ja sivun latauduttua lataat siitä tekstitiedostosta sisällön textareaan.
Rakastan sua <33
Miten mä en tota ite hokannu... :P
Edit: Oih, kattokaas: http://ankzilla.com/php/uutiset/index.php
Salasana on grzn
ankzilla kirjoitti:
Edit: Oih, kattokaas: http://ankzilla.com/php/uutiset/index.php
Salasana on grzn
Eipä mee muuten sisälle? Oot vissii si vaihtanu passun?
Marbo kirjoitti:
ankzilla kirjoitti:
Edit: Oih, kattokaas: http://ankzilla.com/php/uutiset/index.php
Salasana on grznEipä mee muuten sisälle? Oot vissii si vaihtanu passun?
Niin joo oon. :D Toi mahollisuus oli teille avoinna parin minuutin ajan :D
Osoite olisi varmaan kannattanut sitten muokata aikarajan jälkeen pois...
Lebe80 kirjoitti:
Osoite olisi varmaan kannattanut sitten muokata aikarajan jälkeen pois...
No jos noin hiostaa, niin salasana on tällä hetkellä: hehe
Tuskin ketään hiostaa, mutta onhan se kohteliasta muita käyttäjiä kohtaan olla jättämättä kuolleita linkkejä.
Grez kirjoitti:
Tuskin ketään hiostaa, mutta onhan se kohteliasta muita käyttäjiä kohtaan olla jättämättä kuolleita linkkejä.
Ku en arvannu et mun amatööriskriptit kiinnostais muita ku Marboa. :)
Edit: Kerokaas mitä erikoista on .dat -päätteessä?
ankzilla kirjoitti:
Grez kirjoitti:
Tuskin ketään hiostaa, mutta onhan se kohteliasta muita käyttäjiä kohtaan olla jättämättä kuolleita linkkejä.
Ku en arvannu et mun amatööriskriptit kiinnostais muita ku Marboa. :)
Edit: Kerokaas mitä erikoista on .dat -päätteessä?
No oha se nyt mukava kattoo mitä sait aikaa ku ekaks et ees tienny miten tekisit yms..
Eipä toimi taaskaa tuo salasana. Eli linkin voi poistaa.
ankzilla kirjoitti:
Edit: Kerokaas mitä erikoista on .dat -päätteessä?
Toi .dat-pääte merkitsee eri yhteydessä eri asiaa, esim. videopuolella se on joku aputiedosto, äänipuolella taas kysymyksessä on digital audio tape eli tallennusmedia... Mutta tietääkseni sitä käytetään myös ihan datan tallentamiseen (kuten tekstin). En sitten tiedä, että käytetäänkö sitä txt-tiedostojen sijasta ihan vain sen nimen
kuvaavuuden takia...
Jos olen väärässä, niin oikaiskaa...:)
ankzilla kirjoitti:
Edit: Kerokaas mitä erikoista on .dat -päätteessä?
Ei mitään.
Sitä kai käytetään usein kun halutaan tallentaa jotain epämäärästä dataa.
Mites näitä triidejä poistetaan?
ankzilla kirjoitti:
Mites näitä triidejä poistetaan?
Eli jos sulla yksi uutinen per rivi, niin poistat vaan sen rivin...Tein joskus tälläsen funktion, jolla voi muokata riviä, niin tätä voi varmaan soveltaa sun ongelmaas:
<?php //$file_path = tiedoston_osoite, $row = rivin_numero ja //$replace_text = korvattava_teksti function file_row_replace($file_path,$row,$replace_text) { $file = file($file_path); //Otetaan tiedoston rivit talteen korvattavaan riviin asti for ($i = -1; $i < $row-1; $i++) { $tmp[$i+1] = trim($file[$i+1]); } //Tallennetaan korvattava rivi $tmp[$row] = $replace_text; //Otetaan tiedoston rivit talteen, jotka tulevat korvattavan rivin jälkeen for ($i = $row+1; $i < count($file); $i++) { $tmp[$i] = trim($file[$i]); } //Päivitetään tiedoston rivit $file = fopen($file_path,"w"); for ($i = 0; $i < count($tmp); $i++) { fwrite($file,"$tmp[$i]\n"); } fclose($file); } ?>
Varmasti on järkevämpiäkin tapoja...
Naurahdin hieman väärinkäsityksellesi. ;D
Tarkoitin Ohjelmointiputkan triidiä. Triid = thread = aihe
Hehe ;D
Aaa...mä en taas kunnolla edes keskittyny...sorry :D
edit. mut ehkä tosta on jollekkin silti hyötyä ;D
ankzilla kirjoitti:
Mites näitä triidejä poistetaan?
Kertomalla moderaattorille, että tahtoo sen pois. Normikäyttäjät ei voi poistaa ketjuja.
ankzilla kirjoitti:
Mites näitä triidejä poistetaan?
Ei poisteta.
Triton kirjoitti:
Varmasti on järkevämpiäkin tapoja...
Joo. Tällainen tiivistelmä tuli hatusta:
<?php function muuta_rivi($tiedosto, $rivinumero, $korvaus) { $f = file($tiedosto); $f[$rivinumero] = "$korvaus\n"; file_put_contents($tiedosto, $f); } ?>
Metabolix kirjoitti:
Triton kirjoitti:
Varmasti on järkevämpiäkin tapoja...
Joo. Tällainen tiivistelmä tuli hatusta:
<?php function muuta_rivi($tiedosto, $rivinumero, $korvaus) { $f = file($tiedosto); $f[$rivinumero] = "$korvaus\n"; file_put_contents($tiedosto, $f); } ?>
Olipahan tuo mun systeemi aika purkkaviritelmä, mut sulla taitanee olla php:stä enemmän kokemusta :D
Implodee vielä tohon ähvään ni avot.
tsuriga kirjoitti:
Implodee vielä tohon ähvään ni avot.
Ei tarvitse sitäkään. :)
https://www.php.net/file_put_contents:
You can also specify the data parameter as a single dimension array. This is equivalent to file_put_contents($filename, implode('', $array))
Mä en taas ymmärrä yhtään mistä puhutte.. :(
Ainoa ongelma enään on, miten saan salasanatiedoston piiloon, jos pistän koodin levitykseen?
Md5-hashista tuskin on hyötyä, jos joku, joka on ladannut skriptin tietää, minkä nimisessä tiedostossa salasana sijaitsee.
Hashaa se salasana joka on siinä tiedostossa
ankzilla kirjoitti:
Md5-hashista tuskin on hyötyä, jos joku, joka on ladannut skriptin tietää, minkä nimisessä tiedostossa salasana sijaitsee.
Siitä juuri on hyötyä. MD5 hashin kanssa kun menee sillä tavalla ettei siitä enää saa avattua hashattya riviä auki. Joten ei ole mitään hätää kunhan salasana on järkevästi kirjoitettu, eli ei pelkästään pieniä kirjaimia ja lisäksi numeroitakin kannattaa olla. Erilaisilla rainbow-taulukoilla saa nimittäin helpommat md5 hashit selville.
Ja se salasanan tarkistus meneekin näin sitten:
tarkistus.php
<?php $password = trim(file_get_contents("sala.sana")); $user_password = md5($_POST['password']); if($password == $user_password){ echo "Olet kirjautunut sisään"; } ?>
sala.sana (joka on md5-hashatty "salasana")
e7e941b1f09f266540c6780db51d5f58
EDIT: Juu, hups. Korjasin sen nyt :)
Hashaatko sie hashatun salasanan ja vertaat sitä selkokieliseen salasanaan?
Vai olenko mie aivan pihalla?
ankzilla kirjoitti:
Ainoa ongelma enään on, miten saan salasanatiedoston piiloon, jos pistän koodin levitykseen?
Md5-hashista tuskin on hyötyä, jos joku, joka on ladannut skriptin tietää, minkä nimisessä tiedostossa salasana sijaitsee.
Voithan aina muuttaa tämän salasanatiedoston nimeä omassa versiossasi, sitä paitsi kyllä se salasanatiedosto tulisi salata .htaccessilla...
MD5:n purkamisessa ei ole merkitystä salasanan sisällöllä. Purkaminen on mahdotonta ja arvaaminen mahdollista, ja eiköhän taulukoista löydy jo aika paljon näitä aS43hiJn-salasanojakin. Toki perinteinen salasana kissa2 on helpompi arvata kuin satunnainen merkkijono.
Oikea tapa tehdä MD5:stä turvallisempi on käyttää salasanan lisäksi "suolaa" eli lisätä salasanan perään jokin muille tuntematon merkkijono ennen MD5-summan laskemista. Jos siis salasana on "kissa2", lisätään tähän ensin ylläpitäjän salainen teksti "12345", jolloin tulee "kissa212345". Kun tästä lasketaan MD5-summa, saadaan tietenkin eri tulos kuin pelkästä "kissa2":sta. Jos sitten MD5-summa päätyy julkisuuteen ja joku onnistuu selvittämään siitä sanan "kissa212345", hän ei pääsekään kirjautumaan tällä vaan pitäisi vielä arvata, millä tavalla tämä teksti liittyy alkuperäiseen salasanaan "kissa2".
MD5-summa tallennetaan rekisteröinnin yhteydessä, ja samalla tavalla lasketaan uusi summa kirjautumisen yhteydessä. Summaa sitten verrataan tallennettuun summaan.
<?php $hash = md5($_POST["salasana"]."12345"); if ($hash != hae_hash_tietokannasta($_POST["kayttajanimi"])) { die("Virheellinen salasana!"); } ?>
Jos palvelimen PHP-tuki tuntuu luotettavalta, salasanat voi piilottaa PHP-tiedostoon, jonka alussa estetään tiedoston suorittaminen. Tällaista tiedostoa voi kuitenkin lukea ja kirjoittaa aivan normaaleilla tiedostonmuokkauskomennoilla, kunhan huolehtii, että estorivi tiedoston alussa pysyy kohdallaan.
<?php die("Tiedostoa ei voi hakea selaimella."); ?> Akseli|1234567890ABCDEF1234567890ABCDEF Bertta|1234567890ABCDEF1234567890ABCDEF
Kiitos! Toi viimenen skriptinpätkä tuli tarpeeseen todellakin!
Metabolix kirjoitti:
Jos sitten MD5-summa päätyy julkisuuteen ja joku onnistuu selvittämään siitä sanan "kissa212345", hän ei pääsekään kirjautumaan tällä vaan pitäisi vielä arvata, millä tavalla tämä teksti liittyy alkuperäiseen salasanaan "kissa2".
Mikä on kyllä sitten tuon tiivistesumman lähteen julkistamisen jälkeen melko triviaalia / laskenta-ajassa mitattuna hetken huvi. Suola on tarkoitettu vähentämään tiivistesumman julkisuuden todennäköisyyttä.
tsuriga kirjoitti:
Mikä on kyllä sitten tuon tiivistesumman lähteen julkistamisen jälkeen melko triviaalia / laskenta-ajassa mitattuna hetken huvi.
Joo, olin hieman epäselvä. On tietysti hyvin mahdollista, ettei summasta aukeakaan "kissa212345" vaan jokin muu sana, josta tulee sama summa. Lisäksi salasanalle voi tehdä paljon muutakin kuin esittämäni perinteisen suolauksen, jolloin tuo jälkimmäinenkin laskenta-aika pitkittyy.
Tuon MD5-hashinkin kanssa varmaan pätee "jos ihminen jotain teki, ihminen sen myös murtaa" ?
No MD5-hashia ei teoriassa voi purkaa auki, ainut keino saada selville se mitä siinä lukee on brute force, johon monet rainbow-taulukot auttavat nopeuttamalla hakua sisältämällä jo useita tuhansia valmiiksi laskettuja MD5-hasheja. Mutta kuten joku joskus sanoi, sitten kun saadaa tarpeeksi nopeat tietokoneet siihen brute forceen niin MD5 on paras pakkausmetodi, usean gigan tiedostot saadaan mahtumaan 32 tavuun!
Ja jos tuntee itsensä epävarmaksi sen suhteen riittääkö pelkkä MD5, on paras keino käyttää useita eri hashays algoritmeja, suolausta ja sun muuta sellaista. Esimerkiksi seuraavasta koodinpätkästä saatavista hasheista on jo todella vaikeaa saada selville alkuperäistä viestiä:
<?php $viesti = "kissakävelee"; $hash = md5(sha1(base64_encode(gz_inflate($viesti."suolataan_niin_maistuu_paremmalta", 1)))); ?>
No nykyään kaikki murtuu brute forcella, mutta jos on pitkä salasana, sekä suola niin tuon murtaminen saattaa kestää vuosia.
temu92 kirjoitti:
Mutta kuten joku joskus sanoi, sitten kun saadaa tarpeeksi nopeat tietokoneet siihen brute forceen niin MD5 on paras pakkausmetodi, usean gigan tiedostot saadaan mahtumaan 32 tavuun!
Tässä olisi tosin vakavana ongelmana, kuinka löytää oikea alkuperäinen tiedosto lukuisista tiedostoista, jotka tuottavat saman tiivisteen. Esimerkiksi merkkijonon "OHJELMOINTIPUTKA" voi periaatteessa "pakata" muotoon "O", mutta joku saattaa "purkaa" pakkauksen niin, että tulos onkin "OMELETTI". Tässä pakkaustapa olisi sellainen, että merkkijonosta poistetaan kaikki merkit ensimmäistä lukuun ottamatta.
vehkis91 kirjoitti:
No nykyään kaikki murtuu brute forcella, - -
Ennenkin murtui, ainoastaan ennen kesti vielä kauemmin. :)
vehkis91 kirjoitti:
No nykyään kaikki murtuu brute forcella, mutta jos on pitkä salasana, sekä suola niin tuon murtaminen saattaa kestää vuosia.
Lisäksi (epä)säännöllisesti salasanan vaihtoa vaan, niin saadaan hieman lisäaikaa.
Lebe80 kirjoitti:
Lisäksi (epä)säännöllisesti salasanan vaihtoa vaan, niin saadaan hieman lisäaikaa.
Paitsi jos uusi salasana sattuu olemaan juuri se joka on seuraavana rainbow-tablessa..
-Grey-
no tietenkin, mutta on todennäköisempää, että pitkällä aikavälillä törmätään ennemmin salasanaan, jota ei ole koskaan muutettu, kuin salasanaan, jota vaihdetaan silloin tällöin.
Toi Brute Forcehan on aika näppärä, mutta eikös se ole laiton?
Omasta mielestäni ainakin olisi, mutta enpä vaivautunut enempää Googlettamaan...
Download -linkkii? -Google didn't answer me.
ankzilla kirjoitti:
Toi Brute Forcehan on aika näppärä, mutta eikös se ole laiton?
Omasta mielestäni ainakin olisi, mutta enpä vaivautunut enempää Googlettamaan...Download -linkkii? -Google didn't answer me.
Miksi se olisi laiton? Sama juttu, että eihän P2P-ohjelmatkaan ole laittomia, vaan niiden sisältö (mikä siis on tekijänoikeusilla suojattu)... Voihan brute force -ohjelmia käyttää muuhunkin kuin hakkerointiin. Eihän esim. oman tietokoneen salasanan selvittäminen ole laitonta...vai ;)
Tuo brute forcehan on vaan nimitys tietynlaiselle ongelmanratkaisumetodille. Toki sitä voi laittomiin tarkoituksiinkin käyttää.
Päärynämies kirjoitti:
Tuo brute forcehan on vaan nimitys tietynlaiselle ongelmanratkaisumetodille. Toki sitä voi laittomiin tarkoituksiinkin käyttää.
Mä ainaki veikkaisin että harva sitä lailliseenkaan tarkoitukseen käyttää. :P
Mistäs tuon brute forcen saa? onko se turvallinen ees? en tarttekkaa =)
No esim john the ripper käyttää brute forcea arvatessaan salasanoja. Jos joku on julkaisut funktion joka käyttää brute force, eli testaa kaikki mahdolliset vaihtoehdot mitä on.
long nelio = 94745483026554831l; for (long i = 0; ; ++i) { if (i*i == nelio) { // luvun nelio neliöjuuri on i break; } else if (i*i > nelio) { // luvun nelio neliöjuuri on väliltä (i-1)..i break; } }
Siinä sulle bruteforce. :)
ankzilla kirjoitti:
Mä ainaki veikkaisin että harva sitä lailliseenkaan tarkoitukseen käyttää. :P
Itse olen ratkaissut brute force -menetelmällä mm. monta Putkapostia. Aivan yhtä hyvin voisit väittää, ettei kukaan käytä fyysistä "raakaa voimaa" laillisiin tarkoituksiin, mikä on selvästi täysin järjetön väite.
Aihe on jo aika vanha, joten et voi enää vastata siihen.