Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Apua VJGO Tuben suunnitteluun

Sivun loppuun

Paratiisin poika [07.08.2010 22:57:12]

#

Moips. Olen tehnyt VJGO Tubea, uutta videopalvelua. Löytyy toistaiseksi osoitteesta http://vjgo.arkku.net/mediaplayer/. Tahtoisin teiltä joitain ideoita tyyleihin ja suunnitteluun. Toistaiseksi pelkästään videopalvelua ei vissiinkään ole mahdollista haxia, joten seitä voitte yrittää. Voisitteko kertoa ideanne sivuston tyyleihin?

Videoita voitte laittaa sähköpostiini ville.juhani.sinisalo@gmail.com. Eikä sitten laiteta mitään pornoa eikä šhokeeraavaa materiaalia!

Teknkik [07.08.2010 23:04:30]

#

Kannattais ainaki upload väkertää ettei s-postiin tarttis videoita eriksee lähetellä ;D

derp [07.08.2010 23:10:20]

#

Palvelu jota pyörität käsin sähköpostin yli? Jotain rajaa hei...

Paratiisin poika [07.08.2010 23:12:33]

#

Tuo ytoim ii myslillä
uploadia en tee ku hakkeroisitte sen

Teknkik [07.08.2010 23:16:42]

#

Paratiisin poika jos teet tarpeeksi HYVÄN uploadin ei sitä olekkaan niin ihan helppo hakkeroida. Kukaan ei ala käyttämään tuollaista palvelua ilman rekkaamista ja uppia.

derp [07.08.2010 23:19:46]

#

ilmeeni kun OP ei osaa interwebs

Paratiisin poika [07.08.2010 23:20:19]

#

Tosin arkku.net ja servut.us palvelu on siltä osin hankala että kaikenlainen tiedostojen uppaus ja kansioiden selaus php:llä on vaikeata. Tuon palvelun siirrän omalle koneelleni kun on uoloadin vuoro.

Osaako joku muuten tehdä wmv päätteisistä videoista mp4 videoita? VJGO:n mainos video ei oikein toimi...

Marbo [07.08.2010 23:20:43]

#

kukaan ei käytä tota palvelua teki sen miten vaan

Teknkik [07.08.2010 23:22:32]

#

Marbo totta, juutuubbi o paljon parempi, eikä sitä ihan helposti kaada..

Paratiisin poika [07.08.2010 23:26:33]

#

Minä vain yritän tehdä edes 1 projektin niin, että saatan sen päätökseen. Evät kaikkien teidänkään sivut mitään maailmankuuluja ole, mutta silti olette ne tehneet.

Teknkik [07.08.2010 23:35:12]

#

Ahaa.. 50mb riittää hyvin videopalvelullesi. :)
Kannattais ny vaa se uppi tehä, oli oma palvelin tai ei

Paratiisin poika [07.08.2010 23:43:07]

#

Huoh.

Teen minkälaisen upin vaan, jonka osaan tehdä, te kuitenkin jotenkin haxaatte sen. on sitä ennenki mun kuvaupeilla sählätty tiedostonimillä esim.php.txt

Teknkik [07.08.2010 23:49:28]

#

Paratiisin poika: sovellas vaika tuota: https://www.ohjelmointiputka.net/koodivinkit/24870-php-filupaste-uploadaus , sooda on pro ihminen, hän kyllä osaa tehdä pasten. Siitä vaan sovellat sitten omaan käyttöös, mutta olisihan iha ystävällistä lisätä soodan nimi kreditteihin tms..
edit: Kannattaa ostaa nyt Stocmannilta sellane lehti ku Linux Format, siinä tuli hyvä php-opas mukana (englanniksi ofc)

Paratiisin poika [08.08.2010 17:28:36]

#

Hmm... Jos haluatte että teen uplaodin, niin kyllä voin sen tehdä. Tosin... En ole varma toimiiko arkku.net:in palvelimilla uploadin mitenkä. Ja omalta koneelta onnistuin tuhoamaan ftp yhteyden ja tietokaanan käytön. Jotakin sain uploadiini tehtyä. Voisitte kertoa mitä puuttuu, onko turvallisuus riskejä ja kertoa miten taan kunnolla tiedostojen tallennuksen.

<?php
$video_paate = array(".mp4", ".flv", ".avi", ".mpeg", ".ogg");

if(!isset($_GET['action'])) {
$action=intval($_GET['action']);

if($action = 'upload') {

$tarkastus = $_GET['tarkastus'];
if(empty($tarkastus)) {
$video = $_GET['video'];
$name = $_GET['name'];
$description = $_GET['description'];
}else {
echo "Olet todennäköisesti botti! P&auml;&auml;sy estetty!";
    }
  }
}else {
echo "<form action='upload.php' method='post' enctype='multipart/form-data'>";
echo "Video: <input type='file' name='file' /> ";
echo "<input type='text' name='tarkistus' style='display:hidden;'>";
echo "<input type='submit' name='submit' value='Submit' />";
echo "</form>";
}

Paratiisin poika [08.08.2010 19:56:30]

#

Niin voisiko joku auttaa tuon uploadin tekemisessä? Kun kerran uploadia vaaditaan, niin voin sen tehdä. Mutta voitteko auttaa hieman?

Teknkik [08.08.2010 20:32:35]

#

Paratiisin poika: iekös nyt kannattais vaan soveltaa..?

Paratiisin poika [09.08.2010 17:47:45]

#

Pyydän apua, koska en itse osaa tehdä tietoturvaa uploadiin.

raakaliha [09.08.2010 18:16:21]

#

Teknkik kirjoitti:

Ahaa.. 50mb riittää hyvin videopalvelullesi. :)
Kannattais ny vaa se uppi tehä, oli oma palvelin tai ei

Mitä merkitystä tällä on, kun tuo sivu on lähinnä testiversio k.o. softaan?

Paratiisin poika kirjoitti:

Pyydän apua, koska en itse osaa tehdä tietoturvaa uploadiin.

Jos haluat että myös video.php.mp4 tms estetään, niin pistä

<?php
$tiedosto = 'video.mp4';

$sallitut = array('mp4','flv','avi','mpeg','ogg');
$jako = explode('.',$tiedosto,2);
if(in_array($jako[1],$sallitut)) {
	echo "tiedosto kelpaa";
	# tähän mielellään mime-tyypin tarkistus ymsyms
}
else
{
	echo "tiedosto ei kelpaa";
}

Tuo siis jakaa tiedostonimen ensimmäisen pisteen kohdalta ja tarkistaa kuuluuko loppuosa, joka on muotoa "video.mp4" => "mp4", "video.php.mp4" => "php.mp4", sallittuihin päätteisiin. Esimerkki: http://jjp.servut.us/videotarkistus.php?tiedosto­=video.avi

Paratiisin poika [09.08.2010 18:22:56]

#

Näyttäisi toimivan. Estää myös asp tiedostot ja .htaccess tiedostot. :) Kiitos.

Deffi [09.08.2010 19:34:49]

#

Puoli vuotta sitten laitoin merkille, että Archin Apache (oletusasetuksilla) syötti esimerkiksi .php.txt päätteiset tiedostot php-tulkin läpi. Paha

raakaliha [09.08.2010 20:10:56]

#

Jouluserverillä sama; panin merkille väsätessäni ylläpitäjien tahoilta suoritettua haksausta estävää systeemiä uploadiin.

Paratiisin poika [11.08.2010 19:35:04]

#

http://vjgo.arkku.net/mediaplayer/upload.php

Kesken mutta voisiko joku testata tuota? itsellä ei ole yhtään videoita koneella.

Blaze [11.08.2010 19:41:24]

#

"Request Entity Too Large
The requested resource
/mediaplayer/upload.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit."

Yritin uppia tuota kymmenminuuttista 720p-Fukkiretaa, 161M näköjään.

Miks toi muuten näyttää "tiedosto ei kelpaa" heti ku meen sivulle?

Paratiisin poika [11.08.2010 19:54:33]

#

En jaksa poistaa sitä. Yritä uppia joku vähän lyhyempi video. Heti kun vain saan tuon XP:n toimimaan, laitan tuon Tube palvelun sinne. Siellä voin sitten sallai isommatkin videot. Mutta testaa nyt jollain pienemmällä videolla. Tämä kone lagaa niin paljon, etten jaksa edes ftp:n sivuille mennä korjaamaan tuota.

Macro [11.08.2010 19:58:31]

#

Vähän niinkuin

"emmäää ny jaks tee sää se mul nii saan sen heti"

Sanoisin vaikka asenneviaksi.

Blaze [11.08.2010 20:34:25]

#

Noh, koitin tuota lyhyempää versiosta samasta, selain lähetti tiedoston perille ja sivus vastas informatiivisesti "tiedosto ei kelpaa".

Teuro [11.08.2010 22:31:33]

#

Ja tiedoston nimessähän ei saa olla kuin yksi '.' merkki, jotta tuo toimisi. Tämä siis jos tuo on yksi yhteen yllä olevan raakalihan antaman ohjeen mukainen. 'tiedosto ei kelpaa' messu tulee saman koodin takia, jos $tiedosto muuttujaa ei ole olemassa tai se ei kuulu tuohon sallittuihin päätteisiin.

Blaze [11.08.2010 22:45:51]

#

Tiedoston nimi oli tosiaan fukkireta1x.mp4
Miksikäs muuten Matroskaa ei sallita? Se on oikein hyvä kontaineri.

Lebe80 [11.08.2010 23:12:38]

#

"Olet todennäköisesti botti! Pääsy estetty!"

mitä hittoa?!

Miksei tossa voi vaan lukea, että se tarkistuskenttä pitää täyttää. Tuskin botteja kiinnostaa lukea tommosta tekstiä. Eli eiköhän useimmissa tapauksissa tekstin lukenut ole ihan oikea henkilö.

ankzilla [11.08.2010 23:34:28]

#

Lebe80 kirjoitti:

"Olet todennäköisesti botti! Pääsy estetty!"

mitä hittoa?!

Miksei tossa voi vaan lukea, että se tarkistuskenttä pitää täyttää. Tuskin botteja kiinnostaa lukea tommosta tekstiä. Eli eiköhän useimmissa tapauksissa tekstin lukenut ole ihan oikea henkilö.

Ei vi**u repesin xD

Paratiisin poika [12.08.2010 10:13:23]

#

Öööh tota. Se on vain öö... hmm... Tuon tekstin ei pitöisi olla sivulla. En tajua yhtään. Poistin sen. Odottakaas hetkonen. Tarkistan asian.

EDIT: Ei siellä sellaista teksitä ole.

<?php

$video = $_GET['video'];
$name = $_GET['name'];
$description = $_GET['description'];

$sallitut = array('mp4','flv','avi','mpeg','ogg');
$jako = explode('.',$video,2);
if(in_array($jako[1],$sallitut)) {
    echo "tiedosto kelpaa";
}
else
{
    echo "tiedosto ei kelpaa";
}
?>
<form action='upload.php' method='post' enctype='multipart/form-data'>
Video: <input type='file' name='file' /> <br>
Nimi: <input type="text" name="name"><br>
Selite: <textarea name='description'></textarea><br>
<input type='submit' name='submit' value='Lataa' />
</form>

Mika9 [12.08.2010 12:05:48]

#

Mitäpä jos lukisit koodisi läpi. Et esimerkiksi missään vaiheessa tarkista onko Lataa-nappia edes painettu, vaan suoritat koodin kokonaisuudessaan jokaisella sivunlatauksella jolloin sivu tulostaa aina "tiedosto ei kelpaa".

Ja lisäksi tuollaisenaan koodisi ei edes vastaanota tiedostoja. Lähetät lomakkeelta kentät post-muodossa ja vastaanotat get-muodossa. File-tyyppisen kentän sisältö löytyy muuttujista $_FILES['file']['name'] ja $_FILES['file']['tmp_name'].

ankzilla [12.08.2010 15:46:23]

#

Kannattais ensin opetella vähän enemmän PHP:tä ennen kuin alkaa tämmöstä väkertämään. :d

Paratiisin poika [12.08.2010 16:03:04]

#

Hmm... Tiedän ettei se tarkista onko nappia painettu. on niin huono kone, etten ole jaksanut tehdä tällä. Sen lisäksi tiedän myös, ettei tuo vastaanota tiedostoja. Syy tähän on sama kuin edelliseen. Nyt tämä kuitenkin taitaa vähän toimia, joten teen tuonne sen muutoksen.

Macro [12.08.2010 16:15:09]

#

Vai olisikohan syynä laiska ihminen, joka syyttää konetta kun jokin ei onnistu?

trilog [12.08.2010 16:25:42]

#

Paratiisin poika kirjoitti:

Sen lisäksi tiedän myös, ettei tuo vastaanota tiedostoja.

Miksi ihmeessä sitten pyysit muiden lähettää tiedostoja testinä? Käytännössä edelliset lähettelyt olivat aivan turhia ja veivät vain hetkellisesti kaistaa. Jos sinulla ei ole videotiedostoja koneellasi niin poista tuo tarkistus tuosta (tai nimeä jokin muu tiedosto siten, että sen pääte on sallituissa päätteissä), niiden lähetys hoituu täsmälleen samalla tavalla kuin videotiedostojen. Siten voit testata tuota ihan itsenäisesti ja antaa muiden testata vasta sitten, kun se edes käsittelee lähetetyt tiedostot.

Paratiisin poika [12.08.2010 16:52:05]

#

<?php
if (isset($_POST['submit'])) {

$video = $_GET['video'];
$name = $_GET['name'];
$description = $_GET['description'];

$sallitut = array('mp4','flv','avi','mpeg','ogg','au');
$jako = explode('.',$video,2);
if(in_array($jako[1],$sallitut)) {
    echo "tiedosto kelpaa";
}
else
{
    echo "tiedosto ei kelpaa";
  }
}else {
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
Video: <input type="file" name="video" /> <br>
<!--Nimi: <input type="text" name="name"><br>-->
<!--Selite: <textarea name='description'></textarea><br>-->
<input type="submit" name="submit" value="Lataa" />
</form>
<?php
}
?>

Ei toimi... Sanoo aina ettei tiedosto keltaa. jopa tuolle au filulle. Mikä vikana?

trilog [12.08.2010 17:00:23]

#

Vika löytyy skriptin viideltä ensimmäiseltä riviltä, ja syykin on mainittu jo edellä. Miksi olet kommentoinut HTML-lomakkeesta kentät nimi ja selite pois? Tosin tiedoston nimen saat $_FILES-taulukon kautta myös.

Olisikohan aika tututusta PHP-oppaaseen?

Paratiisin poika [12.08.2010 18:12:39]

#

Voiko joku auttaa? En saa tuota toimimaan millään. Sitäpaitsi onnistuin jo testaamaan toista koodia. Menee ihan perseelleen.

Mika9 [12.08.2010 18:21:07]

#

Paratiisin poika kirjoitti:

Ei toimi... Sanoo aina ettei tiedosto keltaa. jopa tuolle au filulle. Mikä vikana?

Mika9 kirjoitti:

File-tyyppisen kentän sisältö löytyy muuttujista $_FILES['file']['name']

Aloita vaikkapa korjaamalla jo edellä pariin otteeseen neuvottu:

$video = $_FILES['video']['name'];

Lisäksi mieti mitä eroa on muutujilla $_POST, $_GET ja miten niihin liittyy form-tagin atribuutti method="post".

Paratiisin poika [12.08.2010 18:28:28]

#

Hmm... Sain sen toimimaan. Jibbijaijee!

voitte testata sitä nyt...

http://vjgo.arkku.net/mediaplayer/upload.php

Toimiikos se?

kaviaari [12.08.2010 19:07:32]

#

Paratiisin poika kirjoitti:

Toimiikos se?

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/upload.php:27 Stack trace: #0 /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/upload.php(27): PDOStatement->execute(Array) #1 {main} thrown in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/upload.php on line 27

Yllättävää kyllä, ei toimi, itsekin voisit ehkä testata? Virhe tuli siitä, että annoin liian ison ID:n. Miksi käyttäjän pitää edes ylipäätään syöttää ID? Oletan ettet ole tehnyt ID:n päällekkäisyystarkistusta? ID:n voi laittaa lisättyjen entryjen mukaan automaattisesti kasvavaksi.

Paratiisin poika [12.08.2010 19:08:39]

#

Testasin joo. huomasin että unohdin id:n. Nyt toimii. ID pitää määritellä itse. Auttaisiko joku minua tekeen jonku random funktion jolla sit noi id:t ei menisi päällekkäin...


Miten teen sen id:n automaattisesti entyyttesisties nousevaksi?

Macro [12.08.2010 19:16:09]

#

Laita kenttä AUTO_INCREMENTiksi.

kaviaari [12.08.2010 19:16:49]

#

Putkan myslioppaasta löytyy maaginen AUTO_INCREMENT https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=mysqlphp06

Paratiisin poika [12.08.2010 19:26:18]

#

Hmm... Noin. Tehty. Voisiko joku nyt lähettää jonkun lyhytnimisen ja lyhyen videon?

Mukava olisi myös, jos videot oikeasti näkyisivät...

Paratiisin poika [12.08.2010 19:42:55]

#

Joo joo. Ymmärsin. Lopettakaa! olen korjaamassa tuota aukkoa!

Macro [12.08.2010 19:45:22]

#

Tossahan on toi Muokkaa-linkki, mikset käyttäisi sitä?

Paratiisin poika [12.08.2010 19:49:33]

#

Koska oma koneeni lagaa (teidän takianne), joudun käyttämään isäni konetta. En ajatellut kirjautua sisään.

Teuro [12.08.2010 19:54:22]

#

Miten koneesi muka lagaa meidän toimesta? Nojoo onko tuo upload vielä samanlainen kuin yllä oleva? Kannattaa tarkastaa todellakin viimeisen pisteen jälkeinen tiedostopääte, koska video.avi.php menee tuon seulan läpi aivan puhtaasti, koska jaat tuon merkkijono kahteen osaan ensimmäisen pisteen kohdalta. PHP ja varsinkaan sen kehittyneemmät ominaisuudet eivät ole vielä sinulle sopivia, mutta alkeiden ja oppaiden parissa vietetty aika ei mene varmaankaan hukkaan.

Paratiisin poika [12.08.2010 20:05:14]

#

Ei tuolla mitään php filuja näy. Sitäpaitsi, miten minä nyt poistan nuo teidän typerät videonne tuolta? Ei anna poistaa niitä.

Blaze [12.08.2010 20:22:54]

#

Paratiisin poika kirjoitti:

Ei tuolla mitään php filuja näy.

Niin, kun me ollaan oltu niin kilttejä, että ollaan uppailtu vaan oikeita videoita--tähän mennessä.

Paratiisin poika kirjoitti:

Sitäpaitsi, miten minä nyt poistan nuo teidän typerät videonne tuolta? Ei anna poistaa niitä.

Ai, sinnekö meni jotain? Etusivulla ei kyllä näy kuin Otto-koira. No, kristallipallo sanoo: koska se oli PHP, joka loi ne tiedostot, niitten omistajaks tuli se käyttäjä, joka ajaa Apachea tuolla serverillä ja tämä käyttäjä ei oo sama ku mitä käytät FTP-selailuun. Joudut siis luomaan PHP-skriptin, jonka suoritat veppiserveriä ajavana käyttäjänä, joka joko antaa tiedostoille paremmat oikeudet, tai suoraan poistaa ne.

tsuriga [12.08.2010 22:01:27]

#

Siitä toisesta osastahan muodostuu avi.php, jota ei kyllä hyväksyttyjen päätteiden taulukosta löydy. Anyhoo, pathinfo on kaveri.

Paratiisin poika [13.08.2010 10:12:22]

#

Auttaisitteko siinä tapauksessa minua estämään html tiedostot? Huomaan kyllä että ette enään ole yhtä ilkeitä. ennen oli goattse, nykyään piparkakku goatse. :) Kiitos tästä.

raakaliha [13.08.2010 23:44:24]

#

Tarkennuksena, tuo tiedostonimen tarkistus jakaa nimen kahteen osaan ensimmäisen pisteen kohdalta ja tarkistaa kuuluuko jälkimmäinen osa taulukkoon, mistä saadaan tulokseksi:
video.avi => avi => hyväksytään
video.avi.php => avi.php => ei hyväksytä
avi.php => php => ei hyväksytä
video.php.avi => php.avi = ei hyväksytä (syystä että joillakin palvelimilla on tapana ajeluttaa *.php.* PHP-tulkin lävitse ja miten tämän voisi tsekata PHP:llä en tiedä)

tuutti [13.08.2010 23:51:32]

#

raakaliha kirjoitti:

Tarkennuksena, tuo tiedostonimen tarkistus jakaa nimen kahteen osaan ensimmäisen pisteen kohdalta ja tarkistaa kuuluuko jälkimmäinen osa taulukkoon, mistä saadaan tulokseksi:
video.avi => avi => hyväksytään
video.avi.php => avi.php => ei hyväksytä
avi.php => php => ei hyväksytä
video.php.avi => php.avi = ei hyväksytä (syystä että joillakin palvelimilla on tapana ajeluttaa *.php.* PHP-tulkin lävitse ja miten tämän voisi tsekata PHP:llä en tiedä)

Helpointa ois varmaa tarkistaa viiminen pääte vaikka pathinfo:lla ja laittaa nimeks md5 hashi alkuperäisestä tiedostonimestä esimerkiksi.

Lebe80 [14.08.2010 01:30:32]

#

Tuutti: Eiköhän helpointa ole tarkistaa kaikki "päätteet". Jos joukossa on yksikin esim. php, niin tiedostoa ei tueta.

raakaliha [14.08.2010 01:43:55]

#

Millä tavalla sellanen järjestely (plus erikseen videotarkistus) olisi sitten parempi kuin kaikkien ensimmäisen pisteen jälkeen tarkistus kerralla? Meinaatko että esim "video.abc.avi" menisi läpi sit?

Metabolix [14.08.2010 09:59:08]

#

raakaliha kirjoitti:

joillakin palvelimilla on tapana ajeluttaa *.php.*

Kuulostaa kyllä aika oudolta ja virheelliseltä. Pystytkö osoittamaan jonkin tällaisen palvelimen?

raakaliha kirjoitti:

Meinaatko että esim "video.abc.avi" menisi läpi sit?

Tietenkin sen pitää mennä läpi. Esimerkki: Pertsa haluaa lähettää videon siitä, miten koodataan PHP:llä vieraskirja. Pertsa kuvaa itsensä naputtelemassa tiedostoa vieraskirja.php ja tallentaa videon nimellä vieraskirja.php.avi. Nimi on looginen ja tiedosto kelvollinen, joten onko oikein hylätä se vain siksi, ettei osaa koodata kunnollista tarkistusta?

Tiedoston viimeisen päätteen tarkistamisen pitäisi riittää aivan hyvin. Toisaalta kaikkein järkevintä olisi unohtaa koko tiedostonimi ja tarkistaa vain sisällön perusteella, että tiedosto on haluttua muotoa, ja tallentaa tiedosto täysin uudella nimellä (1.avi, 2.avi jne.). Käyttäjän kertomat tiedot voi sitten tallentaa vaikka tietokantaan, ja rivin id-numerosta saadaan tiedostolle nimi. Tällä tavalla vältytään myös törmäyksiltä tiedostonimissä.

-tossu- [14.08.2010 10:59:33]

#

Minä en tarkistaisi tiedoston päätettä ollenkaan, vaan varmistaisin, että se todella on video. Lisäksi PHP kannattaa varmuuden vuoksi ottaa pois käytöstä upload-hakemistossa.

Meinaatko muuten pitäää videot sellaisinaan, vai transkoodata kaikki videot samaan muotoon? Jos transkoodaat videot ei mitään tarkistuksia sisällön suhteen välttämättä tarvita; dekooderi kyllä valitttaa mikäli sille koittaa antaa jotakin muuta kuin videota.

Paratiisin poika [14.08.2010 18:21:13]

#

Jouluserver ainakin ajellutti tiedosto.php.txt tiedostot läpi. Tätä keinoa on käytetty mm. minun palvelimeni tiedostojen ja tietokannan tuhoamiseen. Itse olen testannut ja todennut että php tulkin läpi menee myös esimerkiksi tiedosto.php.png... Ainakin jouluserverillä.

Hmm... Mikä olisi järkevin tapa uploadiin nyt. Kun video on uploadettu, ja pitäisi saada sinne linkki siihen videoon... Nyt näyttää tältä:

<?php
include('toppart.php');
$pagename = "Upload";
include('head.php');
$tila = "suljettu";
if($tila=="avoinna") {
if (isset($_POST['submit'])) {

$video = $_FILES['video']['name'];

$sallitut = array('mp4','flv','avi','mpeg','ogg','au');
$jako = explode('.',$video,2);
if(in_array($jako[1],$sallitut)) {



    if (file_exists("videos/" . $_FILES["video"]["name"]))
      {
      echo $_FILES["video"]["name"] . " on jo olemassa. ";
      }
    else
      {

$kysely = $yhteys->prepare("INSERT INTO videos (video, image, name, description, adder) VALUES (?, ?, ?, ?, ?)");
$kysely->execute(array($video, $_POST["image"], $_POST["name"], $_POST["description"], $_POST["adder"]));
      move_uploaded_file($_FILES["video"]["tmp_name"],
      "videos/" . $_FILES["video"]["name"]);
      echo "Linkki: Vittu minä mitään linkkiä tähän saa!"; #Tähän pitäisi saada linkki niin että se on tyyliä index.php?id=$id
      }

}
else
{
    echo "Tiedosto ei kelpaa!";
  }
}else {
?>
Sallitut tiedostomuodot: <tt><b>mp4, flv, avi, mpeg, ogg, au</b></tt>
<form action="upload.php" method="post" enctype="multipart/form-data">
<table border=0>
<tr>
<td>Video: </td><td> <input type="file" name="video" /></td>
</tr>
<tr>
<td>Laita Koira.PNG: </td><td> <input type="text" name="image" /></td>
</tr>
<tr>
<td>Videon nimi: </td><td> <input type="text" name="name" /></td>
</tr>
<tr>
<td>Selite: </td><td> <input type="text" name="description" /></td>
</tr>
<tr>
<td>Nimesi: </td><td> <input type="text" name="adder" /></td>
</tr>
</table>
<input type="submit" name="submit" value="Lataa" />
</form>
<?php
include('bottompart.php');
  }
}else {
echo "Upload suljettu tilap&auml;isesti! Aukeaa joskus!";
include('bottompart.php');
}
?>

En jaksa värkätä sitä millään miljoonarivisellä koodilla tietokannasta. mikä olisi viisain ratkaisu tähän?

Ps. Tuo ei päästä läpi ainakaan seuraavia tiedostoja:
tiedosto.avi.php
tiedosto.php.avi

Mutta en tajua että miksei tuo näytä minun koneellani kuin tuon mp4 videon... Tuon Otto koira.

Mika9 [14.08.2010 19:10:18]

#

Paratiisin poika kirjoitti:

pitäisi saada sinne linkki siihen videoon... En jaksa värkätä sitä millään miljoonarivisellä koodilla tietokannasta. mikä olisi viisain ratkaisu tähän?

Avainfunktio ongelmaasi on mysql_insert_id(), joka palauttaa auto incrementillä luodun ID:n.

Ja vinkkinä: koodista tulee selkeämpää kun yhdistelet ehtolausekkeita, etkä pesi niitä sisäkkäin.

//rivit
if($tila=="avoinna") {
if (isset($_POST['submit'])) {

//voidaan aivan hyvin sisällyttää samaan iffiin

if ($tila == 'avoinna' && isset($_POST['submit'])) {

Paratiisin poika [14.08.2010 19:20:37]

#

Kiitos. Osaatko muuten kertoa että minkä takia tuo minun koodini ei lataa noita videoita tuonne videos kansioon?

Edit: Tuo että nuo jutut olisivat samalla rivillä ei oikein ole hyvä juttu. En edes enään löydä että mikä "}" merkki pitäisi tuolta poistaa jos nuin tekisin.

Huomaa myös, että kun kerran on tiedosto lähetetty, ei formin kuulu näkyä. Jos taas on suljettuna, pitää näkyä vain toppart.php, head.php, teksti "suljettu jne..." ja bottompart.php. Vissiin myös muuttuja $pagename...

Ei tuo id juttu toimi. Listaan tähän nyt foorumini tiedostot:

Kansiot

videos (tänne tallenutt videot)
images (tänne tallentuu kuvat)

Videosoitin

Longtail Video (Tiedostot softan mukaan)

Tiedostot

upload.php

<?php
include('toppart.php');
$pagename = "Upload";
include('head.php');
$tila = "avoinna";
if($tila=="avoinna") {
if (isset($_POST['submit'])) {

$video = $_FILES['video']['name'];

$sallitut = array('mp4','flv','avi','mpeg','ogg','au');
$jako = explode('.',$video,2);
if(in_array($jako[1],$sallitut)) {



    if (file_exists("videos/" . $_FILES["video"]["name"]))
      {
      echo $_FILES["video"]["name"] . " on jo olemassa. ";
      }
    else
      {

$kysely = $yhteys->prepare("INSERT INTO videos (video, image, name, description, adder) VALUES (?, ?, ?, ?, ?)");
$kysely->execute(array($video, $_POST["image"], $_POST["name"], $_POST["description"], $_POST["adder"]));
$id = mysql_insert_id();

      move_uploaded_file($_FILES["file"]["tmp_name"],
      "videos/" . $_FILES["file"]["name"]);
      echo "Video: <a href='index.php?id=$id'>" . $_POST["name"] . "</a>";
      }

}
else {
    echo "Tiedosto ei kelpaa!";
  }
}else {
?>
Sallitut tiedostomuodot: <tt><b>mp4, flv, avi, mpeg, ogg, au</b></tt>
<form action="upload.php" method="post" enctype="multipart/form-data">
<table border=0>
<tr>
<td>Video: </td><td> <input type="file" name="video" /></td>
</tr>
<tr>
<td>Laita Koira.PNG: </td><td> <input type="text" name="image" /></td>
</tr>
<tr>
<td>Videon nimi: </td><td> <input type="text" name="name" /></td>
</tr>
<tr>
<td>Selite: </td><td> <input type="text" name="description" /></td>
</tr>
<tr>
<td>Nimesi: </td><td> <input type="text" name="adder" /></td>
</tr>
</table>
<input type="submit" name="submit" value="Lataa" />
</form>
<?php
include('bottompart.php');
  }
}else {
echo "Upload suljettu tilap&auml;isesti! Aukeaa joskus!";
include('bottompart.php');
}
?>

toppart.php

<?php
include('settings.php');

try {
    $yhteys = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpassword");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

head.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
<?php
echo "    <title>$pagename</title>";
?>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
<?php
echo "<table border=0 width='100%'>\n";
echo "<tr>\n<td id='logo'><acronym title='Etusivulle'><a href='index.php'><img src='Logo.png'></a></acronym>\n";
echo "</td>\n";
echo "<td id='search'><form method='get' action='search.php'>\n";
echo "<input id='search' type='text' name='query'><input id='search_button' type='submit' value='Hae'>\n";
echo "</form>\n";
echo "<a href='upload.php'>Lataa video!</a></td>\n";
echo "</tr>\n";
echo "<tr id='hr'>\n";
echo "<td colspan='3' id='hr'>&nbsp;</td>\n";
echo "</tr>\n</table>";
?>

index.php

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.jwplayer.js"></script>

<body style="background-color:white;">

<?php

if(!isset($_GET['id'])) {
include('toppart.php');
$pagename = "Etusivu - VJGO Tube";
include('head.php');
$kysely = $yhteys->prepare("SELECT * FROM videos");
$kysely->execute();
echo "<h3>Lista " . $sitename . "ssa t&auml;ll&auml; hetkell&auml; olevista videoista</h3>";
echo "<ul>";
while ($rivi = $kysely->fetch()) {
    $name = $rivi['name'];
    $id = $rivi['id'];

$name = str_replace("<", "&lt;", $name);
$name = str_replace(">", "&gt;", $name);

echo "<li><a href='index.php?id=$id'>$name</a></li>\n";
  }
echo "</ul>";
include('bottompart.php');
}else {
$id=intval($_GET['id']);
include('toppart.php');

$kysely = $yhteys->prepare("SELECT * FROM videos WHERE id = $id");
$kysely->execute();
while ($rivi = $kysely->fetch()) {
    $video = $rivi['video'];
    $image = $rivi['image'];
    $name = $rivi['name'];
    $info = $rivi['description'];
    $adder = $rivi['adder'];
    $time = $rivi['time'];

$name = str_replace("<", "&lt;", $name);
$name = str_replace(">", "&gt;", $name);
$info = str_replace("<", "&lt;", $info);
$info = str_replace(">", "&gt;", $info);
$adder = str_replace("<", "&lt;", $adder);
$adder = str_replace(">", "&gt;", $adder);

$pagename = "Video: $name - VJGO Tube";
include('head.php');

echo "<table border=0><tr>\n<td>\n<h1>" . $name . "</h1>\n</td>\n</tr>\n<tr>\n<td id='video'>\n<video height='400' id='player' poster='images/" . $image . "' src='videos/" . $video . "' width='400'>\n</td>\n<td id='empty'>\n<img src='empty.PNG' />\n</td>\n<td id='information'>\n<table>\n<tr>\n<td id='info'>\n<h3>" . $name . "</h3>\n</td>\n</tr>\n<tr>\n<td id='info'>\nLis&auml;&auml;j&auml;: <b>" . $adder . "</b>\n</td>\n</tr>\n<tr>\n<td id='info'>\nAika: " . $time . "\n</td>\n</tr>\n<tr>\n<td>\n<hr>\n</td>\n</tr>\n<tr>\n<td id='info'>\n" . $info . "\n</td>\n</tr>\n</table>\n</td>\n</tr>\n</table>";
include('bottompart.php');
  }
}
?>


<script type="text/javascript">
    $('#player').jwplayer({
      flashplayer:'player.swf',
      skin:'five/five.xml'
    });
</script>
</body>

settings.php (kaikki ettimään salasanaa. Sen te kuitenkin haluatte...)

<?php
$dbhost = "localhost";
$dbname = "2989_vjgo";
$dbuser = "2989_vjgo";
$dbpassword = "Arkkunetpalvelinrulettaa18462";
$sitename = "VJGO Tube";
$copyrighttext = "Copyright &copy; <a href='vjgo.arkku.net/'>Ville-Juhani sinisalo</a> 2010";
?>

bottompart.php

<br><br><br>
<div id="bottom">
<?php echo "<small>" . $copyrighttext . "</small>"; ?>
</div>
  </body>
</html>

css tiedoston voitte katsoa ihan palvelimelta. se on style.css

Jos teillä on parannusideoita koodiin, kertokaa. Otan mielelläni apua vastaan.

-tossu- [14.08.2010 20:06:06]

#

Paratiisin poika kirjoitti:

Ei tuo id juttu toimi.

Onhan id sarake määritelty AUTO_INCREMENT:ksi sekä PRIMARY KEY:ksi.

Paratiisin poika kirjoitti:

Jos teillä on parannusideoita koodiin, kertokaa. Otan mielelläni apua vastaan.

Koodia voisit sisentää paremmin, että sitä olisi helpompi lukea.
Eihän tuo "SELECT * FROM videos WHERE id = $id" palauta ikinä kuin yhden rivin, joten miksi käsittelet sen silmukassa?
Nuo n+1 str_replace:a voit korvata htmlentities-funktiolla.
Bottompart.php -tiedostossa on jo </html> -tagi, älä laita sitä uudelleen index.php -tiedostoon.

Paratiisin poika [14.08.2010 20:08:12]

#

Okei. kiitos. Mutta teen tässä tuota search.php tiedostoa. En saa sitä kuitenkaan toimimaan.

<?php
include("toppart.php");
$pagename = "Haku";
include("head.php");
echo "<h2>Haku</h2>\n";

echo "<form method='post' action='search.php'><input type='text' name='query'><input type='submit' value='Hae'><br></form>\n";
if(isset($_GET['query'])) {
$query = '$_GET["query"]';
if($query == '') {
	include("bottompart.php");
	exit();
}
echo "<h3>Videot</h3>\n";
	echo "<ul>\n";
	$kysely = $yhteys->prepare("SELECT * FROM videos WHERE name = '$query' LIMIT 25");
        $kysely->execute();
while ($rivi = $kysely->fetch()) {
		$id = mysql_result($kysely,'id');
		$name = clean(mysql_result($kysely,'name'));
		echo "<li><a href='index.php?id=" . $rivi["id"] . "'>" . $rivi["name"] . "</a></li>\n";
}
	echo "</ul>\n";
        include('bottompart.php');
}else {
	echo "<p>Ei hakutuloksia</p>";
include('bottompart.php');
}
?>

Uskon että tässä on vaan joku tyhmä virhe jota en huomannut...

Metabolix [14.08.2010 20:14:32]

#

$query = '$_GET["query"]';

Mietipä uudelleen. Jälleen kerran virhe olisi löytynyt yksinkertaisesti tulostamalla sivulle tai tiedostoon muuttujien arvoja eri vaiheissa.

Toinen virhe on tuossa kyselyn muodostamisessa ja käytössä. PDO:n ideana nimenomaan on, että muuttujaa $query ei sijoiteta suoraan kyselyn sekaan vaan se annetaan parametrina execute-metodille. Myös tietojen haku tulosriviltä on aivan pielessä, yrität jotenkin oudosti sekoittaa PDO:ta ja vanhoja MySQL-funktioita. Katso oppaasta mallia näissäkin asioissa.

Edit: Ja laita koodin alkuun ne pari ini_set-riviä (display_errors ja error_reporting, haulla löytyy), jotta saat PHP:ltä lisää virheilmoituksia!

Paratiisin poika [14.08.2010 20:17:17]

#

En tajunnu. Koitan ymmärtää ja korjata kaiken...

Edit: Miksei tuo upload toimi? Se ei tallenna noita videoita...

-tossu- [14.08.2010 20:39:11]

#

<?php
$query = '$_GET["query"]';

Katso väritystä, mitä muuttujan $query arvoksi nyt tulee? Vihje: rivistä pitää poistaa jotakin. Lisäksi formissa on väärä method. Metabolix ehtikin jo sanoa, että käytät PDO:ta väärin, uploadissa parametrien välitys on tehty niin kuin kuuluu, ota siitä mallia.

tuutti [14.08.2010 22:16:56]

#

Paratiisin poika kirjoitti:

$kysely = $yhteys->prepare("INSERT INTO videos (video, image, name, description, adder) VALUES (?, ?, ?, ?, ?)");
$kysely->execute(array($video, $_POST["image"], $_POST["name"], $_POST["description"], $_POST["adder"]));
$id = mysql_insert_id();

      move_uploaded_file($_FILES["file"]["tmp_name"],
      "videos/" . $_FILES["file"]["name"]);
      echo "Video: <a href='index.php?id=$id'>" . $_POST["name"] . "</a>";

Kannattaa tarkastaa, että tiedosto menee perille enneku kirjottaa kantaan mitään.

raakaliha [15.08.2010 03:52:58]

#

Metabolix kirjoitti:

raakaliha kirjoitti:

joillakin palvelimilla on tapana ajeluttaa *.php.*

Kuulostaa kyllä aika oudolta ja virheelliseltä. Pystytkö osoittamaan jonkin tällaisen palvelimen?

Jouluserverille koitin kerran ladata varmaankin putkasta kopioidulla upload-formilla tiedoston juttu15.php.jpg, jonka sisältö oli paintilla tekemäni jpeg-kuva, johon olin Notepad++:lla liittänyt jonnekin päin "sotkua" pätkän <?php ... ?>. Tiedosto ajettiin PHP:nä. Tuon voi toivottavasti jättää useimmilla palvelimilla huomiotta ja käyttää täällä aiemmin mainittuja tarkistuksia.

Jälkimmäistä ehdotustasi (1.avi, 2.avi) sen sijaan suosittelisin käytettäväksi Paratiisipojalle.

Tarvittaessa kaikki päätteet voi tarkistaa tällä koodilla:

<?php
$kielletyt = array('php','cgi'); //yms.
$tiedosto = "tiedosto.php.avi";

$jako = explode('.',$tiedosto);
$kelpaa = true;
for($i=0; $i < count($jako); $i++) {
	if(in_array($jako[$i],$kielletyt)) $kelpaa = false;
}
if($kelpaa) {
	echo "tiedosto kelpaa";
}
else
{
	echo "tiedosto ei kelpaa";
}
?>

Mika9 [15.08.2010 10:08:42]

#

Suosittelen lisäämään tiedostojen nimiin MySQL:n generoiman ID-numeron. Tällöin ei tarvitse tarkistaa onko saman niminen tiedosto jo olemassa, kun kaikilla tiedostoilla on varmasti uniikki nimi tyyliin 3_mun-video.mkv

...
      move_uploaded_file($_FILES['file']['tmp_name'], 'videos/' . $id . '_' . $_FILES['file']['name']);
...

Hakuun täsmällisen WHERE A = A, haun tilalle sopii paremmin MySQL:n LIKE

Paratiisin poika [15.08.2010 11:45:33]

#

Niin. Olen määrittänyt tietokantaan nyt id:n sellaiseksi kuin sanoitte. Tästä huolimatta ei tuo "$id = mysql_insert_id();" juttu toimi.

trilog [15.08.2010 11:47:52]

#

Jos käytät PDO:ta niin käytä PDO:n vastinetta.

Paratiisin poika [15.08.2010 12:04:06]

#

En saa tuota toimimaan. Laittaisitko tuon rivin mulle?

derp [15.08.2010 12:54:07]

#

...nyt hei kaverit oikeesti...

Paratiisin poika [15.08.2010 14:59:35]

#

Mitä? En saanut sitä toimimaan. Laittaa vain erroria. Sitäpaitsi tuo uploadikaan ei oikein toimi.

Metabolix [15.08.2010 15:07:02]

#

Et saanut sitä toimimaan, eli et osaa vielä ohjelmoida tarpeeksi tuollaiseen hommaan, eli sinun pitäisi ensin opetella perusasiat (funktioiden kutsuminen, olioiden käyttö ym.) kunnolla jostain oppaasta ja käyttää vähän omaakin järkeä. Ei todellakaan pitäisi olla vaikeaa kirjoittaa yhtä vaivaista metodikutsua, joka ei edes vaadi parametreja.

Paratiisin poika [15.08.2010 15:42:21]

#

hmm... Siis... Mikä hitto tuossa uploadissa ensinnäkin kusee? Se ei laita noita tiedostoja videos kansioon, vaikka koodi on kop... lainattu w3scools.com php upload esimerkistä.

Lisäilen sinne muuten videoita...

Metabolix [15.08.2010 16:20:49]

#

Mitä jos laittaisit ne virheilmoitukset päälle (kuten jo aiemmin sanoin), niin koodi ehkä itse kertoo, mikä mättää.

Paratiisin poika [15.08.2010 16:26:42]

#

Tuolla sivun alaosassa näkyy etusivul mul ainaki numero 11. se tuli ku laitoin ne päälle.

Tossa on nyt toppart.php yläosan koodi

<?php
error_reporting(1);

echo ini_get('display_errors');

if (!ini_get('display_errors')) {
    ini_set('display_errors', 1);
}

echo ini_get('display_errors');

include('settings.php');
...

Metabolix [15.08.2010 16:53:03]

#

Miten voit olla noin toivoton kaheli? Onko tosiaan liian vaikeaa kirjoittaa pari valmiiksi kerrottua sanaa hakuun ja kaivaa sieltä jokin niistä lukuisista viesteistä, joissa kerrotaan suoraan, miten ne virheet saa esiin? Kerrotaan nyt vielä kerran:

<?php
ini_set("display_errors", 1);
ini_set("error_reporting", E_ALL | E_STRICT);

Kerrankin on lupa kopioida koodia suoraan – nauti tilaisuudestasi!

Paratiisin poika [15.08.2010 17:25:29]

#

Hmm... Kokeilin sitä ekaa hakua vaan. Se vei php.net:in sivuille... Sori et oon tällainen tohelo ja erittäin huonomuistinen. ainakin lähimuistin kannalta...

Nyt näkyy virheet. Yritän korjata noiden avulla. Kiits.

raakaliha [15.08.2010 17:40:40]

#

Lisättäköön vielä että hänen pahimmat tohelointinsa johtunevat minun mesessä antamistani neuvoista. :)

Paratiisin poika [15.08.2010 17:49:13]

#

Hihi... nyt paljastui että mistä saan paljon apua... :P

Paratiisin poika [16.08.2010 15:27:51]

#

Joku taisi mainita jotain siitä, että suoritan kaikki sql kyselyt tulostuksessa silmukassa. Syy on siinä, etten osaa muuten. Nyt on kuitenkin ongelmia mulla.

Teen kategoria sivua. Otsikko pitäisi saada tyyliin Kategoria: {kategorian nimi}. Otsikko kuitenkin määritellään muuttujaan $pagename, ja sen jälkeen includetetaan head.php. Mikä avuksi? Kaikki on mulle nyt sekavaa tässä.

<?php
include('toppart.php');

if(!isset($_GET['c']))  {
$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}category");
$kysely->execute();
$pagename = "Kategoriat";
include('head.php');
echo "<h1>kategoriat</h1>\n<ul>";
while ($rivi = $kysely->fetch()) {
    $name = $rivi['name'];
    $id = $rivi['id'];
echo "<li><a href='category?c=$id'>$name</a></li>\n";
}
echo "</ul>";
}else {
$c=(isset($_GET["c"]));
$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}category WHERE id='$c'");
$kysely->execute();
$pagename = "Kategoria: $c";
include('head.php');
echo "<small><a href='category.php'>Kaikki kategoriat</a></small>\n";
while ($rivi = $kysely->fetch()) {
    $name = $rivi['name'];
    $description = $rivi['description'];
echo "<h1>$name</h1>\n$description<br>\n<h3>videot</h3>\n<p>Linkit</p>";
}
include('bottompart.php');
}
?>

Ps. Laitoin surkeasti asennellun linkkivalikon. Parempia ideita tuohon kellään?

-tossu- [16.08.2010 17:54:56]

#

Paratiisin poika kirjoitti:

Joku taisi mainita jotain siitä, että suoritan kaikki sql kyselyt tulostuksessa silmukassa. Syy on siinä, etten osaa muuten.

Mikä siinä on niin vaikeaa, jätät vain sen silmukan pois, pitäisi olla ihan helppoa mikäli olet itse kirjoittanut koodin, etkä kopioinut sitä jostain tietämättä mitä se tekee.

Paratiisin poika kirjoitti:

Teen kategoria sivua. Otsikko pitäisi saada tyyliin Kategoria: {kategorian nimi}. Otsikko kuitenkin määritellään muuttujaan $pagename, ja sen jälkeen includetetaan head.php. Mikä avuksi? Kaikki on mulle nyt sekavaa tässä.

Voisit kertoa mikä vika tuossa koodissa on. Huomasin kuitenkin, että asetat muuttujan $c arvoksi "isset($_GET["c"])", eikä koodi sen takia toimi niin kuin haluaisit sen toimivan. Ota PHP:n manuaali esiin ja katso mitä funktio isset palauttaa. Edelleenkin käytät PDO:ta väärin, älä laita mitään muuttujia kyselyyn, vaan anna ne executen yhteydessä, upload-koodin olit tainnut tehdä sen suhteen oikein. Voisit myös alkaa sisentämään koodia paremmin, jotta sitä olisi helpompi lukea.

Paratiisin poika [16.08.2010 18:58:57]

#

hmm. silmukka hakee tuolla $rivi juttulla taulusta tietoa. ainoa muu paikka missä se määritellään, on... hmm... se silmukan aloitus. _Muuta en osaa tuolla pdo:lla tehdä hakeakseni tietoa...

-tossu- [16.08.2010 19:56:17]

#

Ei voi olla noin vaikeaa jättää yksi silmukkaa pois :)
"Näin jätät silmukan pois mikäli kysely palauttaa vain yhden rivin" rautalangasta väännettynä:

<?php
//koodia...
$kysely->execute();
while ($rivi = $kysely->fetch()) {
	//koodia...
}

-->

<?php
//koodia...
$kysely->execute();
$rivi = $kysely->fetch();
//koodia...

derp [16.08.2010 20:20:36]

#

Mitäpä jos opeteltais ne kielen perusasiat ennenkuin ruvetaan tekemään jotain youtubea

Triton [16.08.2010 20:53:33]

#

derp kirjoitti:

Mitäpä jos opeteltais ne kielen perusasiat

Niin tai ohjelmoinnin...

Lebe80 [17.08.2010 09:43:37]

#

Miksei tässäkin voi vain opetella käyttämään YouTube Apia, niin voisi pistää ne videot suoraan YouTubeen, ja näyttää sen kautta omilla sivuillaan?

Paratiisin poika [17.08.2010 16:54:08]

#

Haluan tehdä itse sellaisen youtuben, jonka jokainen voi ladata sivuiltani ja muokata ja pitää siellä just niitä videoita joita haluaa ja muutella nimiä mielensä mukaan.

Voisiko joku auttaa ihan vaan css pulmassa nyt?

Tuolla on tuo linkkipalkki. siinä on linkit Etusivulle ja Kategorioihin. Siinä on jotain mätää... Mikä vikana?

css

ul li.links {
  list-style-type:none;
  margin:0;
  padding:0;
  list-style-image: none;
  background-color: #dddddd;
}li.links {
  display: inline;
  font-weight: bold;
}a:active.links {
  background-color: gray;
}a:hover.links {
  background-color: gray;
}a.links {
  text-decoration: none;
  font-weight: bold;
}

html

<ul class='links'>
<li class='links'><a href='index.php' class='links'>Etusivu</a></li>
<li class='links'><a href='category.php' class='links'>Kategoriat</a></li>
</ul>

Edit: Unohdin kertoa ongelman. Kuva tuolla: http://vjgo.arkku.net/mediaplayer/VJGO_Tuben_Linkkipalkki.bmp

Anteeksi kuvan muoto, mutta tämä on yhä se Windows 2000

Marbo [17.08.2010 17:34:04]

#

Paratiisin poika kirjoitti:

Haluan tehdä itse sellaisen youtuben, jonka jokainen voi ladata sivuiltani ja muokata ja pitää siellä just niitä videoita joita haluaa ja muutella nimiä mielensä mukaan.

Haluat tehdä "itse"? Eli kopioida toimivan koodin suoraan ohjelmointiputkasta?

Paratiisin poika [17.08.2010 17:34:45]

#

Pyydän vain välillä apua kun en osaa itse...

Id korjattu :D

Muuten. Tuolla kategoriassa on nyt mulla ongelma. Otsikon sain korjattua. mutta nyt pitöisi kyseisen kategoriuan videot saada listattua. laitoin video_videos tauluun kohdan category. sinne on määritelty noita.

Miten saan 2 kyselyä samalla sivulatauksella?

<?php
include('toppart.php');

if(!isset($_GET['c']))  {
$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}category");
$kysely->execute();
$pagename = "Kategoriat";
include('head.php');
echo "<h1>kategoriat</h1>\n<ul>";
while ($rivi = $kysely->fetch()) {
    $name = $rivi['name'];
    $id = $rivi['id'];
echo "<li><a href='category?c=$id'>$name</a></li>\n";
}
echo "</ul>";
}else {
$c=(isset($_GET["c"]));
$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}category WHERE id='$c'");
$kysely->execute(array($_GET["c"]));
$rivi = $kysely->fetch();
    $name = $rivi['name'];
    $description = $rivi['description'];
$pagename = "Kategoria: $name";
include('head.php');
echo "<small><a href='category.php'>Kaikki kategoriat</a></small>\n";
echo "<h1>$name</h1>\n$description<br>\n<h3>videot</h3>\n<p>Tähän tulee kategorian linkit tyyliin <ul>\n<li><a...</li>\n...</ul>\n</p>";
include('bottompart.php');
}
?>

-tossu- [17.08.2010 18:09:01]

#

Paratiisin poika kirjoitti:

Tuolla on tuo linkkipalkki. siinä on linkit Etusivulle ja Kategorioihin. Siinä on jotain mätää... Mikä vikana?

Miten minä voisin tietää mikä siinä on sinun mielestäsi vikana?! Kerro mitä siinä pitäisi olla toisin, emmehän me muuten voi auttaa.

Paratiisin poika kirjoitti:

Pyydän vain välillä apua kun en osaa itse...

Minusta sinä pyydät "välillä" apua kun et osaa itse... Et tunnu osaavan ohjelmoinnista edes perussasioita kunnolla ja silti yrität koodata näin suurta projektia. Sinuna unohtaisin tämän hetkeksi ja jatkaisin sitten kun on vähän lisää kokemusta. Mikäli kuitenkin haluat välttämättä jatkaa tätä, älä lisää tähän enää mitään ominaisuuksia, voisit jopa poistaa kategoriat, ja tee sivustosta toimiva. Sen jälkeen voit halutessasi lisätä muita virityksiä sivuille.

Edit:

Paratiisin poika kirjoitti:

Muuten. Tuolla kategoriassa on nyt mulla ongelma. Otsikon sain korjattua. mutta nyt pitöisi kyseisen kategoriuan videot saada listattua. laitoin video_videos tauluun kohdan category. sinne on määritelty noita.

Tarkoititko, että loit video_videos tauluun sarakkeen category, jolla määritellään mihin kategoriaan video kuuluu? Mikäli teit niin kuin arvelin, niin video voi olla vain yhdessä kategoriassa kerralaan, jos haluat että video voi kuulua moneen kategoriaan, tarvitset yhden taulun lisää. Siitä lienee kirjoitettu MySQL-oppaassa.

Paratiisin poika kirjoitti:

Miten saan 2 kyselyä samalla sivulatauksella?

Koodaat siihen sivuun kaksi kyselyä, eihän siinä ole mitään ihmeellistä.
Väännän vielä rautalangasta:

<?php
$kysely1 = $yhteys->prepare("SELECT foo FROM taulu1");
$kysely1->execute();
while ($rivi = $kysely1->fetch())
	//tee jotain...
$kysely2 = $yhteys->prepare("SELECT bar FROM taulu2");
$kysely2->execute();
while ($rivi = $kysely2->fetch())
	//tee jotain...

Paratiisin poika [17.08.2010 18:21:02]

#

Huoh. Kerroin jo mitä haluan sille linkkipalkille tehdä. sitäpaitti joku sai ladattua jopa 2 videota sivulle. Tosin avi muodossa...

Mitkä videomuodot näkyvät nettisivulla?

RQ [17.08.2010 18:29:26]

#

Paratiisin poika kirjoitti:

Huoh. Kerroin jo mitä haluan sille linkkipalkille tehdä.

Et todellakaan kertonut. Annoit vain pätkän koodia ja kuvan ja sanoit että homma kusee.

Paratiisin poika kirjoitti:

Mitkä videomuodot näkyvät nettisivulla?

Kannattais oikeesti jättää nää monimutkaset youtubet muiden tehtäväksi, ei sun kokemuksella ja oma-aloitteisuudella saa aikaseksi yhtään mitään... Paitsi hyvät naurut, joka kerta kun näitä keskusteluja lukee.

Paratiisin poika [17.08.2010 18:31:32]

#

Kuvassa on se, minkä haluan tulokseksi. Nyt se ei tod ole sitä.

Ja minä haluan tehdä jotain, mutta jostain syystä mikään ei onnistu. Nytkin tuo categoria heittää kokoajan mekaniikka kategorian vaikka kategorian id olisi 372569834793.

<?php
include('toppart.php');

if(!isset($_GET['c']))  {
$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}category");
$kysely->execute();
$pagename = "Kategoriat";
include('head.php');
echo "<h1>kategoriat</h1>\n<ul>";
while ($rivi = $kysely->fetch()) {
    $name = $rivi['name'];
    $id = $rivi['id'];
echo "<li><a href='category?c=$id'>$name</a></li>\n";
}
echo "</ul>";
}else {
$c=(isset($_GET["c"]));
$kysely1 = $yhteys->prepare("SELECT * FROM {$dbtable}category WHERE id='$c'");
$kysely1->execute();
while ($rivi = $kysely1->fetch()) {
    $category = $rivi['name'];
    $description = $rivi['description'];
$pagename = "Kategoria: $category";
include('head.php');
echo "<small><a href='category.php'>Kaikki kategoriat</a></small>\n";
echo "<h1>$category</h1>\n$description<br>\n<h3>videot</h3>\n<p>\n<ul>\n";
}
$kysely2 = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE category='$category'");
$kysely2->execute();
while ($rivi2 = $kysely2->fetch()) {
    $name = $rivi2['name'];
    $id = $rivi2['id'];
echo "<li><a href='index.php?id=$id'>$name</a></li>\n";
}
echo "</ul>\n</p>\n";
include('bottompart.php');
}
?>

-tossu- [17.08.2010 18:43:14]

#

Paratiisin poika kirjoitti:

Huoh. Kerroin jo mitä haluan sille linkkipalkille tehdä.

Minusta sinä aivan selvästi kysyit "Siinä on jotain mätää... Mikä vikana?", ja liitit jonkun kuvan missä ei näyttänyt olevan mitään vikaa. Jos olet kertonut mitä haluat tehdä sille jossain aiemmassa viestissä, en ole huomannut sitä, enkä kyllä jaksa lukea koko ketjua selvittääkseni.

Paratiisin poika kirjoitti:

sitäpaitti joku sai ladattua jopa 2 videota sivulle. Tosin avi muodossa... Mitkä videomuodot näkyvät nettisivulla?

Jos pyörität videoita flash-soittimella, niin muodot joita flash tukee, en kylläkään muista niitä ulkoa. Mikäli taas käytät selaimen omaa videosoitinta (video-tagi), niin sitten ne muodot joita selain tukee/joihin on asennettuna koodekit. Avi taas ei ole videomuoto, vaan pelkkä paketti videolle ja äänelle; siinä voi olla monia erillaisia videotamuotoja sisällä.

Edit: Tänne olikin ilmestynyt lisää viestejä sinä aikana kun kirjoitin tätä, olit siis tehnyt fotarilla sellaisen kuvan sivusta kuin haluaisit sen olevan, minä luulin, että se on sivu nykyisessä muodossa.

Paratiisin poika [17.08.2010 18:45:17]

#

'Kuvassa näkyy millaisen lopputuloksen haluan. sivuleni (http://vjgo.arkku.net/mediaplayer/) tuo linkkipalkki on ihan jotain muuta...

-tossu- [17.08.2010 18:50:59]

#

Eikös tuo kuva ole aika lähellä haluamaasi? Kokeile seuraavaa koodia, sillä linkkipalkin pitäisi venyä koko ruudun levyiseksi.

ul.links {
	background-color: #dddddd;
	width: 100%;
}

Paratiisin poika [17.08.2010 18:53:15]

#

Nyt toimii tuo hyvin. Kiitos.

Triton [17.08.2010 18:57:09]

#

Ja jos jotain isompaa projektia haluaa oikeasti alkaa vääntämään, niin suosittelen tutustumaan CodeIgniter-nimiseen PHP-frameworkkiin... Mielestäni se on erittäin helppokäyttöinen verrattuna esim. Zendiin. (Tuo tarjoaa mm. valmiin luokkarajapinnan noiden tiedostojen uploadaamiseen.)

Paratiisin poika [19.08.2010 10:07:02]

#

Mites tuo kategoria sivu... Mikä siinä on vikana? Itse en löydä mitään vikaa. Sama uploadissa...

Paratiisin poika [19.08.2010 11:17:09]

#

Hmm... tulostin tuon $c muuttujan, ja huomasin sen olevan aina 1. Tarkastin miten sen kuuluu mennä, ja nyt se toimii... hihi... Sori. mun moka

Paratiisin poika [27.08.2010 11:06:47]

#

Haluasin mielipiteen registeröintisivustani. Tällähetkellä ei tarkasta meilien @ merkki juttua. Estää html tagit :D

http://vjgo.arkku.net/login.php?action=1

Lebe80 [27.08.2010 11:25:28]

#

Oma mielipide on se, että ehkä tässäkin olisi kannattanut käyttää valmista alustaa, jolloin ihan perustoimintoja ei tarvitsisi itse vääntää. Paratiisin_Poika olisi voinut käyttää senkin ajan vaikka niiden komponenttien ja laajennusten koodailuun.

Jotenkaan joku "kirjautumissivu" tai käyttäjien rekisteröitymistoiminto ei jaksa enää yllättää.

Blaze [27.08.2010 12:50:47]

#

Mua kiinnostaa lähinnä se, miten tallennat salasanat tietokantaan.

Paratiisin poika [02.09.2010 15:07:53]

#

Tallennan salasanat tietenkin suojarusti seuraavalla koodilla;

<?php //tää on täs jot koodi värittyisi
include('toppart.php');
$pagename = "Rekister&ouml;inti";
include('head.php');

$username = $_POST["username"];
$password = $_POST["password"];
$email = $_POST["email"];
if(!empty($password)) {
if(!empty($email)) {
if(!empty($username)) {

$forbiddenchars=false;
if(strpos($username,":")) $forbiddenchars=true;
if(strpos($username,"&")) $forbiddenchars=true;
if(strpos($username,"?")) $forbiddenchars=true;
if(strpos($username,"<")) $forbiddenchars=true;
if(strpos($username,">")) $forbiddenchars=true;
if(strpos($username,"'")) $forbiddenchars=true;
if(strpos($username,"\"")) $forbiddenchars=true;

if(!$forbiddenchars) {

$kysely = $yhteys->prepare("INSERT INTO {$dbtable}users (username, password, email) VALUES (?, ?, ?)");
$kysely->execute(array($username, md5($password), $email));

$id = $yhteys->lastInsertId();
echo "Tunnus <a href='profile.php?id={$id}'>{$username}</a> on onnistuneesti luotu.";

}else {
echo "Tunnuksesi sisältää kiellettyj&auml; merkkej&auml;!";
  }
}else {
echo "Anna salasana!";
  }
}else {
echo "Anna s&auml;hk&ouml;posti!";
  }
}else {
echo "Anna tunnus!";
}
include('bottompart.php');
  }
}

-tossu- [02.09.2010 16:25:38]

#

Paratiisin poika kirjoitti:

Tallennan salasanat tietenkin suojarusti seuraavalla koodilla;

Salasanat kannattaisi suolata; Suolaamatonta MD5-tiivistettä ei murra kovinkaan kauaa.

Koodissa on kyllä muutakin parantamisen varaa. Aivan aluksi se kannattaisi sisentää kunnolla, tuo on nyt aika vaikealukuista. Sisentämisen jälkeen tutustu loogisiin operaattoreihin. Kolmanneksi päätä "koodaustyylisi", eli mihin kohtiin laitat välilyöntejä, ovatko muuttujat suomeksi vai englanniksi jne.

Mikä idea muuten on merkkien :&?<>'\ kieltämisessä käyttäjänimissä? Kannattaisi ennemminkin määritellä sallitut merkit; nyt käyttäjänimeen voi laittaa mitä ihmeellisempiä kontrollimerkkejä.

Paratiisin poika [02.09.2010 16:29:58]

#

Ajattelin tälä kertaa tehdä sellaisen sovelluksen, jota ei niin helpolla murretakaan, joten en katso ttarpeelliseksi suojata salasanoja suolalla. Kontrollimerkitkään eivät haittaa, ksoka niillä ei voi sotkea. Ja sisennystä en osaa oikein kunnolla. Ja muuttujat muunnan jossainvaiheessa kokonaan englanninkielisiksi, koska välillä on vaikeaa keksiä synonyymejä joillekkin ä, ö ja/tai å merkkejä sisältäville muuttujille.

Mikä vika koodissani muuten on tässä kohtaa, jossa teen login sivua:

elseif($action == '2') {
include('toppart.php');
$pagename = "Kirjautuminen";
include('head.php');

$username = $_POST["username"];
$passwordmd5 = $_POST["password"];
$passwordmd5 = md5('$passwordmd5');

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$username'");
$kysely->execute();
$rivi = $kysely->fetch()
$dbpasswordmd5 = $rivi["password"];  //Tähän php jäljittää ongelman
$dbusername = $rivi["username"];  //Ja tuon ratkettua, varmaan jatkaa tähän
$login = true;
if(!$passwordmd5 == $dbpasswordmd5) $login=false;

if($login) {
setcookie("$username", "$passwordmd5");
setcookie("$username", "$passwordmd5", time() + 60 * 60 * 24 * 365);
echo "jeah!!!";
  }else {
echo "h&ouml;h!";
}
include('bottompart.php');
  }

villev [02.09.2010 16:43:39]

#

Paratiisin poika kirjoitti:

<?
$kysely->execute();
$rivi = $kysely->fetch()
$dbpasswordmd5 = $rivi["password"];  //Tähän php jäljittää ongelman

Riviltä juuri ennen virhettä puuttuu puolipiste. Kun saat virheilmoituksen, kannattaa tarkistaa kyseinen rivi ja rivi ennen sitä, ettei niissä ole vastaavia kirjoitusvirheitä. Itselläni ainakin puolet virheilmoituksista ovat tällaisia.

Paratiisin poika kirjoitti:

Ajattelin tälä kertaa tehdä sellaisen sovelluksen, jota ei niin helpolla murretakaan, joten en katso ttarpeelliseksi suojata salasanoja suolalla.

"Ajattelin tällä kertaa ajaa (pyörällä) niin varovasti, etten katso tarpeelliseksi käyttää kypärää."

Blaze [02.09.2010 16:44:43]

#

Paratiisin poika kirjoitti:

Ajattelin tälä kertaa tehdä sellaisen sovelluksen, jota ei niin helpolla murretakaan, joten en katso ttarpeelliseksi suojata salasanoja suolalla.

Ei näin, ei todellakaan näin.

Paratiisin poika kirjoitti:

muuttujat muunnan jossainvaiheessa kokonaan englanninkielisiksi, koska välillä on vaikeaa keksiä synonyymejä joillekkin ä, ö ja/tai å merkkejä sisältäville muuttujille.

Muunna ihmeessä, that's what everybody else uses, mut tiesit kai, että PHP on niin pervo kieli, että sen identiefereissä saa käyttää ääkkösiä?

Paratiisin poika kirjoitti:

Mikä vika koodissani muuten on tässä kohtaa, jossa teen login sivua:
$rivi = $kysely->fetch()
$dbpasswordmd5 = $rivi["password"]; //Tähän php jäljittää ongelman

Jäljittää ihan oikein: puolipiste.

Teuro [02.09.2010 16:45:07]

#

Paratiisin poika kirjoitti:

<?php
$dbpasswordmd5 = $rivi["password"];  //Tähän php jäljittää ongelman
$dbusername = $rivi["username"];  //Ja tuon ratkettua, varmaan jatkaa tähän
?>

Onko kannassa tuon nimisiä kenttiä? Kannattaa hakea '*' merkin asemasta ne kentät, joita on tarkoitus käyttää jatkossa.

Paratiisin poika kirjoitti:

<?php
if(!$passwordmd5 == $dbpasswordmd5) $login=false;
?>

Mitäs hittoa tuon nyt pitäs tehdä?

Paratiisin poika [02.09.2010 16:51:43]

#

Joo. Haen yleensä pdo:n ilmoitukset jostain aiemmasta koodistani tai sitten sen oppaasta, kun en niitä muista ulkoa, ja tuo on alunperin while() functiolla haettu, joten unohdin laittaa tuon puolipisteen sitä kun ei siinä valmiina ollut. Ja kun san tämän valmiiksi ja lataukseen alan parantelemaan sitä fiksummaksi, sitten muutan db hakujutun pois pdo tyylisdtä ja teen siitä tietoturvariskillemmän, uttta kun kaikki palvelimet eivät pdo:ta tunnista, on tämä pakollista. Kun tämä on tehty alan muokkaamaan siitä kokoajan vain enemmän ja enemmän YouTube:n tyylistä. Kiitos tuon virheen jäljityksestä.

Edit: Tuo if(!$passwordmd5 == $dbpasswordmd5) $login=false; tekee sen, että jos lähetetty salasana, joka on jo muunnettu md5 muotoon ($dbpasswordmd5) EI ole sama kuin tietokannassa oleva salasana, tunnus ole oikein. Muussa tapauksessa se on oikein. Ja toimii kyllä. Tosin heittää header erroria. jos kirjautuminen on oikein. Kirjautuminen kestää vuoden, jos ei kirjauduta ulos, jota ei juuri nyt voida tehdä.

Edit uus: Huomasin ettei tuo aseta evästeitä. Operalla pystyy katsomaan onko eväste asetettu, kun niitä voi sillä muokata. Ei ollut. Mikä vikana? Koodi on opittu (jes! Löysin sanan joka ei viittaa kopiointiin!) putkan oppaasta.

Edit kolmas: Ohhoh. Käytin asettamiseen evästeitä ja lukuun istuntoa. huppista.

Eikä vielkkää toimi. Auutakaa please

-tossu- [02.09.2010 17:51:11]

#

Paratiisin poika kirjoitti:

Huomasin ettei tuo aseta evästeitä.

Ennen keksien asettamista ei saa tulostaa mitään.

Salasanan tarkistus kannattaisi totetuttaa WHERE:llä.

Paratiisin poika [02.09.2010 18:03:14]

#

<?php
elseif($action == '2') {
include('toppart.php');
$pagename = "Kirjautuminen";
include('head.php');

$username = $_POST["username"];
$passwordmd5 = $_POST["password"];
$passwordmd5 = md5('$passwordmd5');

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$username'");
$kysely->execute();
$rivi = $kysely->fetch();
$dbpasswordmd5 = $rivi["password"];
$dbusername = $rivi["username"];
$login = true;
if(!$passwordmd5 == $dbpasswordmd5) $login=false;

if($login) {

//Tässä ennen sessionia on hgirveänä tulostusta! Hui kamala

session_start();
$_SESSION["username"] = "$dbusername";
$_SESSION["password"] = "$dbpassword";

echo "jeah!!!";
  }else {
echo "<a href='login.php'>h&ouml;h!</a>";
}

Seriously. What is matter whit the code?

*Eiku oho. Nyt löysin vikoja pariki. Hetkoneeeeeeeen

Teuro [02.09.2010 18:08:46]

#

Kerro vielä mikä ei toimi? Ja tuo kommenttissasi oleva kirjoitusta ennen headereita aiheuttaa kyllä headers already sent by... virheen.

Paratiisin poika [02.09.2010 18:34:46]

#

Nyt tuo jo asettaa evästeet, mutta ongelmia löytyy nytkin. Voitte tehdä tunnuksen ja chekata miltä näyttää. logout.php poistaa evästeen ja ohjaa etusivulle. Mutta jos ei ole kirjautuneena sisään, tulee erroria ja kunnolla. Korjasin jopa ongelman, joka echotti aina tuon ruotsinkielisen lauseen. Nyt se echotetaan vain jos ollaan kirjautuneena. Teen seuraavaksi palkin, josta sisällä oleva käyttäjä voi mennä profile sivuilleen tai kirjautua ulos.

Edit: Tää projekti sujuu nopeammin ja paremmin kuin odotin :D

Edit toka: Pitäisi saada jotenkin tiedoston nimi. Löysin keinon tulostaa tuonne mediaplayer/tiedosto.php, mutta pitäisi saada tulokseksi VAIN tiedosto.php. Miten onnistuisi? En löydä php.net:istä.

Metabolix [02.09.2010 19:23:51]

#

https://www.php.net/basename

Paratiisin poika [02.09.2010 19:40:19]

#

Löysin helpomman tavan kun en tajunnut tuosta mitään. Seuraavaksi katson mitkä errorit saan tuosta piiloon. Valmistuessa estän virheilmoitukset kokonaan.

Paratiisin poika [03.09.2010 15:22:23]

#

Haluaako joku auttaa minua poistamaan, tai ainakin vähentämään virheilmoituksia sivullani? En tahtoisi vain sivuuttaa kaikkia erroreita estämällä niitä, vaan korjata ongelmat. Jos joku tahtoo auttaa;

Errorit (Ei kirjautuneena)

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/index.php:1) in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 25

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/index.php:1) in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 25

Notice: Undefined index: username in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 26

Notice: Undefined index: id in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 27

Notice: Undefined index: uniqueid in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 28

Notice: Undefined variable: logged in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 36

Notice: Undefined variable: logged in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 51

Notice: Undefined variable: logged in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/head.php on line 24

Errorit (Kirjautuneena)

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/index.php:1) in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 25

Errorit (Sisäänkirjautumisessa)

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php:24) in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 25

Notice: Undefined index: username in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 26

Notice: Undefined index: id in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 27

Notice: Undefined index: uniqueid in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 28

Notice: Undefined variable: logged in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 36

Notice: Undefined variable: logged in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 51

Notice: A session had already been started - ignoring session_start() in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/login.php on line 105

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php:24) in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/login.php on line 110

Sitten tässä on php koodit, joissa on erroreiden mukaan jokin ongelma.
toppart.php

<?php
ini_set("display_errors", 1);
ini_set("error_reporting", E_ALL | E_STRICT);

if(file_exists("settings.php"))
	include("settings.php");
else
	die("<html>\n<head>\n<title>Virhe!</title>\n</head>\n<body>\n<b><i>settings.php</i></b> tiedosto puuttuu!\n</body>\n</html>");

try {
    $yhteys = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpassword");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$ip = $_SERVER['REMOTE_ADDR'];

$esta_teksti = false;
$file_name = $_SERVER["SERVER_NAME"];
if($file_name == '{$software_dir}/login.php?id=2') {
$esta_teksti = true;
}

if(!$esta_teksti) {
session_start();
$session_username = $_SESSION["username"];
$session_id = $_SESSION["id"];
$session_uniqueid = $_SESSION["uniqueid"];
if(!empty($session_username)) {
$logged = true;
  }
}else {
$logged = false;
}

if($logged) {
$kyselyadmin = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$session_username'");
$kyselyadmin->execute();
$rivi = $kyselyadmin->fetch();
    $admincheck = $rivi["admin"];

$admin = false;
if($admincheck == '1') $admin = true;
}

$kyselyuniqueid = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE id='$session_id'");
$kyselyuniqueid->execute();
$rivi = $kyselyuniqueid->fetch();
    $dbuniqueid = $rivi["uniqueid"];

#Tämä failaa ja kunnolla. en tiedä mikä mättää...
if($logged) {
if($session_uniqueid == '$dbuniqueid') {
echo "HAXER! Tyhjennä tietokoneesi evästeet ja kirjaudu OMALLA tunnuksellasi sisään.";
exit;
  }
}
?>

head.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
<?php
echo "    <title>$pagename</title>";
?>
    <meta name="description" content="Ilmaisia videoita, Free videos" />
    <meta name="keywords" content="video, video player" />
    <meta name="author" content="Ville-Juhani Sinisalo" />
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script type="text/javascript" src="script.js"></script>
  </head>
  <body>
<?php
echo "<noscript>Sivusto vaatii toimiakseen JavaScript tuen. Selaimessasi ei ole JavaScript p&auml;&auml;ll&auml;. Laita se p&auml;&auml;lle jotta sivusto toimisi t&auml;ysin.</noscript>";
echo "<table border=0 width='100%'>\n";
echo "<tr>\n<td id='logo'><acronym title='Etusivulle'><a href='index.php'><img src='Logo.png'></a></acronym>\n";
echo "</td>\n";
echo "<td id='search'><form method='get' action='search.php'>\n";
echo "<input id='search' type='text' name='query'><input id='search_button' type='submit' value='Hae'>\n";
echo "</form>\n";
echo "</td>\n<td>"; if($logged) { echo "<b>{$session_username}</b><br><a href='profile.php?id={$session_id}'>Profiili</a><br><a href='upload.php'>Lataa video!</a><br><a href='logout.php'>Kirjaudu ulos</a>\n"; }else { echo "<br><a href='login.php'>Kirjaudu sis&auml;&auml;n</a></td>\n"; }
echo "</tr>\n";
$kyselyvideot = $yhteys->prepare("SELECT COUNT(*) FROM video_videos");
$kyselyvideot->execute();
$tulos = $kyselyvideot->fetch();
echo "<tr id='hr'>\n";
echo "<td><center>{$sitename}ssa on t&auml;ll&auml;hetkell&auml; <b>" . $tulos["COUNT(*)"] . "</b> videota.\n</center></td>\n</tr>\n<tr>\n";
echo "<td colspan='3' id='hr'>\n<br>\n<ul class='links'>\n<li class='links'><a href='index.php' class='links'>Etusivu</a></li>\n<li class='links'><a href='category.php' class='links'>Kategoriat</a></li>\n</ul>\n</td>\n";
echo "</tr>\n</table>\n";

?>

Ajattelin tuosta ja index.php filusta kohta vähän pätkiä noita tooooooooooosi pitkiä rivejä...

Tässä on sitten login brobleema

login.php

<?php
if(!isset($_GET['action'])) {
include('toppart.php');
$pagename = "Kirjaudu sis&auml;&auml;n";
include('head.php');
echo "<br><br>\n";
echo "<h2>Kirjaudu sis&auml;&auml;n</h2>\n";
echo "<small>Jos sinulla ei ole tunnusta, voit <a href='?action=1'>luoda</a> sellaisen!</small><br>\n";
echo "<form action='login.php?action=2' method='post'>\n";
echo "<table border=0>";
echo "<tr>";
echo "<td>Tunnus: </td><td> <input type='text' name='username'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>Salasana: </td><td> <input type='password' name='password'></td>\n";
echo "</tr>\n</table>\n";
echo "<input type='submit' value='Kirjaudu sis&auml;&auml;n'>\n";
echo "</form>\n";
include('bottompart.php');
}else {
$action=intval($_GET['action']);
if($action == '1') {
include('toppart.php');
$pagename = "Rekister&ouml;inti";
include('head.php');
echo "<h2>Rekister&ouml;inti</h2>\n";
echo "<small>Jos sinulla on jo tunns, <a href='login.php'>kirjaudu sis&auml;&auml;n</a>!</small>";
echo "<form action='login.php?action=3' method='post'>\n";
echo "<table border=0>";
echo "<tr>";
echo "<td>Tunnus: </td><td> <input type='text' name='username'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>Salasana: </td><td> <input type='password' name='password'></td>\n";
echo "</tr>\n<tr>\n";
echo "<td>S&auml;hk&ouml;posti: </td><td> <input type='text' name='email'></td>\n";
echo "</tr>\n</table><br>\n";
echo "<!--<span class='captcha_text' onclick='captcha_info();'>Captcha varmistus</span><br>\n";
echo "<img src='captcha.php' class='captcha' onclick='captcha_info();'><br><br>\n";
echo "<input type='text' name='captcha'><br><br-->\n";
echo "<input type='submit' name='register' value='Rekister&ouml;idy' />";
echo "</form>";

include('bottompart.php');
}elseif($action == '3') {
include('toppart.php');
$pagename = "Rekister&ouml;inti onnistui";
include('head.php');

$username = $_POST["username"];
$password = $_POST["password"];
$email = $_POST["email"];
if(!empty($password)) {
if(!empty($email)) {
if(!empty($username)) {

$forbiddenchars=false;
if(strpos($username,":")) $forbiddenchars=true;
if(strpos($username,"&")) $forbiddenchars=true;
if(strpos($username,"?")) $forbiddenchars=true;
if(strpos($username,"<")) $forbiddenchars=true;
if(strpos($username,">")) $forbiddenchars=true;
if(strpos($username,"'")) $forbiddenchars=true;
if(strpos($username,"\"")) $forbiddenchars=true;

if(!$forbiddenchars) {

$uniqueid = rand(1, 9999999999999999999999999999);
$uniqueid = md5($uniqueid);

$kysely = $yhteys->prepare("INSERT INTO {$dbtable}users (username, password, email, uniqueid) VALUES (?, ?, ?, ?)");
$kysely->execute(array($username, md5($password), $email, $uniqueid));

$id = $yhteys->lastInsertId();
echo "Tunnus <a href='profile.php?id={$id}'>{$username}</a> on onnistuneesti luotu.";

}else {
echo "Tunnuksesi sisältää kiellettyj&auml; merkkej&auml;!";
  }
}else {
echo "Anna salasana!";
  }
}else {
echo "Anna s&auml;hk&ouml;posti!";
  }
}else {
echo "Anna tunnus!";
  }
}elseif($action == '2') {
include('toppart.php');
$username = $_POST["username"];
$passwordmd5 = $_POST["password"];
$passwordmd5 = md5('$passwordmd5');

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$username'");
$kysely->execute();
$rivi = $kysely->fetch();
$dbpasswordmd5 = $rivi["password"];
$dbusername = $rivi["username"];
$dbid = $rivi["id"];
$dbuniqueid = $rivi["uniqueid"];
$login = true;
if(!$passwordmd5 == $dbpasswordmd5) $login=false;

if($login) {

session_start();
$_SESSION["username"] = "$dbusername";
$_SESSION["id"] = "$dbid";
$_SESSION["uniqueid"] = "$dbuniqueid";

header("Location: index.php");
exit;
  }else {
echo "<a href='login.php'>Ei oikein onnistunut t&auml;&auml; nyt kyl yht&auml;&auml;n...</a>";
}
include('bottompart.php');
  }
}
?>

Itse sain jo korjattua... hmm minkäs minä nyt korjasinkaan? niin joo. $esta_teksti jutun korjasin. Olin vain määritellyt sen että jos sitä ja tätä niin totta mutten missään määritellyt muuten epätotta.

Teuro [03.09.2010 16:19:57]

#

Poista tulostukset ennen otsikoiden lähettämistä. Tarkista muuttujien olemassa olo isset() funktiolla.

Paratiisin poika [03.09.2010 17:10:44]

#

En tajunnut tuota otsikkojuttua. Voisitko tarkentaa? Ja tsekkaan ton isset() function.

Teuro [03.09.2010 17:12:51]

#

otsikolla tarkoitan headereita, eli sivun otsikkotietoja en fyysistä otsikkoa. Muuten otsikon sisältö näyttää olevan $pagename muuttujan kanssa yhtenevä, joten lienee fiksua käyttää sitä tuon otsikon luonnissa hyväksi?

Paratiisin poika [03.09.2010 17:17:41]

#

Minä taidan olla hieman tyhmä. Ainoa minkä tuosta tajusin, on se, että kannattaa käyttää jotakin otsikon luonnissa hyväksi. En tosin vieläkään tiedä mitä kannattaa käyttää hyväksi. Anteeki tyhmyyteni.

Teuro [03.09.2010 17:20:38]

#

eli siis jos header() funktio ajetaan tekstin tulostuksen jälkeen tulee virhe. Jos keksi tai sessio aloitetaan tekstin tulostuksen jälkeen tulee virhe. Jälkimmäinen vinkkini tarkoitti muuttujaasi '$pagename'.

Paratiisin poika [03.09.2010 17:28:48]

#

En tuolla mun koodissa missään kohtaa ole header() functiota... Miksi mie en oikein tajua?

-tossu- [03.09.2010 17:35:05]

#

Paratiisin poika kirjoitti:

En tuolla mun koodissa missään kohtaa ole header() functiota... Miksi mie en oikein tajua?

Myös keksit ja kekseihin perustuvat sessioiden ID:t menenevät headereiden mukana. Niitäkään ei saa olla ennen tulostusta.

Paratiisin poika [03.09.2010 18:00:37]

#

Fixed. Ongelmina ovat enään login.php sivu ja kirjautumattomana oleminen, jolloin näkyy erroreita. Raakaliha auttoi :D

Edit: Hakukone korjattu (Ihan ite korjasin) ja nyt toimii. :D :D

awly [03.09.2010 18:46:57]

#

valittaa, että tiedosto ei kelpaa. mitä muuten tämä "Laita koira.PNG" kohta tarkoittaa?

Paratiisin poika [03.09.2010 18:50:44]

#

Palvelimella on kansio images. Tuossa kansiossa on pari kuvaa, ja 1 niistä on koira.png, jonka tein Otto koira videota varten. Tuon kohdan voisin kylläkin poistaa. Palvelimelle ei mene videoita, jotka ovat jotain muuta kuin sallittuja muotoja. Jos se menee, niin todennäköisesti se vain laittoi tiedot tietokantaan, koska hyvin harvoin videoita on tuolla. suurin osa nykyisistä videoista olen minä uploadannut sinne ftp:llä.

Minulle tuli pdo ongelma. Asetuksissa pitäisi voida muuttaa mail ja description, mutten tiedä miten muotoilla sql kysely:

<?php
include('toppart.php');
$pagename = "Muokkaa profiiliasi";
include('head.php');

if($logged) {

if (isset($_POST['save'])) {
$description = $_POST["description"];
$email = $_POST["email"];
$kysely = $yhteys->prepare("UPDATE {$dbtable}users SET (description, email) WHERE id = '$session_id' VALUES (?, ?)");
$kysely->execute(array($description, $email));

echo "<br><span style='color:green;font-weight:bold;'>Asetukset tallennettu onnistuneesti!</span>\n<br><br>\n";
}

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE id='$session_id'");
$kysely->execute();

$rivi = $kysely->fetch();
$description = $rivi["description"];
$email = $rivi["email"];

echo "<form method='post' action='editprofile.php'>\n";
echo "K&auml;ytt&auml;j&auml;tunnus: <b>{$session_username}</b><br>\n";
echo "ID: <b>{$session_id}</b>\n<br><br>\n";
echo "<textarea name='description' rows='6' cols='40'>$description</textarea>\n<br>\n";
echo "S&auml;hk&ouml;postiosoite: <input type='text' value='{$email}' name='email'><br><br>\n";
echo "<input type='submit' name='save' value='Tallenna'>\n";
echo "</form>\n";

}else {
echo "<a href='login.php'>Kirjaudu sis&auml;&auml;n</a> muuttaaksesi asetuksiasi.";
}
include('bottompart.php');

Löysin jo ratkaisun

Paratiisin poika [03.09.2010 20:59:48]

#

Miten saisin nuo loputkin error ilmoitukset poistettua?

Notice: Undefined index: username in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 27

Notice: Undefined index: id in /var/www/virtual/vjgo.arkku.net/htdocs/mediaplayer/toppart.php on line 28
<?php
ini_set("display_errors", 1);
ini_set("error_reporting", E_ALL | E_STRICT);

if(file_exists("settings.php"))
	include("settings.php");
else
	die("<html>\n<head>\n<title>Virhe!</title>\n</head>\n<body>\n<b><i>settings.php</i></b> tiedosto puuttuu!\n</body>\n</html>");

try {
    $yhteys = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpassword");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$ip = $_SERVER['REMOTE_ADDR'];

$esta_teksti = false;
$file_name = $_SERVER["SERVER_NAME"];
if($file_name == '{$software_dir}login.php?id=2') {
$esta_teksti = true;
}

if(!$esta_teksti) {
session_start();
$session_username = $_SESSION["username"];
$session_id = $_SESSION["id"];
$session_uniqueid = $_SESSION["uniqueid"];
if(isset($session_username)) {
$logged = true;
  }
}else {
$logged = false;
}

if(!isset($logged)) {
$logged = false;
}

if($logged) {
$kyselyadmin = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$session_username'");
$kyselyadmin->execute();
$rivi = $kyselyadmin->fetch();
    $admincheck = $rivi["admin"];

$admin = false;
if($admincheck == '1') $admin = true;
}

$kyselyuniqueid = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE id='$session_id'");
$kyselyuniqueid->execute();
$rivi = $kyselyuniqueid->fetch();
    $dbuniqueid = $rivi["uniqueid"];

if($logged) {
if($session_uniqueid == '$dbuniqueid') {
echo "HAXER! Tyhjennä tietokoneesi evästeet ja kirjaudu OMALLA tunnuksellasi sisään.";
exit;
  }
}
?>

Metabolix [03.09.2010 21:03:39]

#

Edelleenkin sillä issetillä (joka ei tosin ole funktio vaan kielen rakenne samoin kuin vaikka if tai for).

Koodissasi on myös useampi '$tällainen' bugi. (Mietipä sitä. Olisi jo vähitellen aika oppia ne kielen perusasiat.)

tuutti [03.09.2010 21:15:37]

#

$esta_teksti = false;
$file_name = $_SERVER["SERVER_NAME"];
if($file_name == '{$software_dir}login.php?id=2') {
$esta_teksti = true;
}

tälläne villi veikkaus että $_SERVER['server_name'] ei myöskään oo se mitä tässä haet, muutenki vähä hämärä ylipäätää ton tarkotus

Paratiisin poika [04.09.2010 11:06:41]

#

Koska login ei suostu ekalla yrityksellä uudelleenohjaamaan tekstin takia, tein tuon systeemin. settings.php filussa on mulla tällainen rivi:

<?php
$software_dir = "mediaplayer/";

Tuon ansiosta jos on kirjautumissivu, estetään teksti ja tämän avulla sitten estetään toppart.php tiedostossa oleva istuntokohta. Yksinkertaista. Etsin parhaat ratkaisut kaikkiin kohtiin kunhan tube eka toimii kunnolla.

Mutta pakko teidänkin on myöntää että olen tämän projektini aikana jotain oppinut... isset(), implode()... Ja mikä tärkeintä: Tietoturvan parannus!

Mikä tässä videonpoistosivussa on vikana? SQL kohta heittää erroria...

<?php
include('toppart.php');
$pagename = "Poista videoita";
include('head.php');
if($admin) {
echo "<b>Poista videoita</b><br><br>\n";
echo "<form action='remorvevideo.php' method='post'>\n";
echo "Videon id: <input type='text' name='id'><br>\n";
echo "Poiston syy: <input type='text' name='reason'><br>\n";
echo "<input type='submit' name='remorve' value='Poista'>\n";
echo "</form>\n";

if (isset($_POST['remorve'])) {

$id = $_POST["id"];
$reason = $_POST["reason"];

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = '$id'");
$kysely->execute();
$rivi = $kysely->fetch();

$name = $rivi["name"];

echo "Olet poistamassa videota <a href='index.php?id={$id}' target='blank'>{$name}</a>, jonka id on {$id}.<br>\n";
echo "Syyksi annoit seuraavan: {$reason}<br>\n";
echo "Oletko varma ett&auml; haluat poistaa t&auml;m&auml;n videon?<br>\n";
echo "<form action='remorvevideo.php' method='post'>\n";
echo "Ei <input type='radio' name='remorve' value='0' checked><br>\nKyll&auml; <input type='radio' name='remorve' value='1' /><br><br>\n";
echo "<input type='hidden' value='{$id}' name='id'><input type='hidden' value='{$reason}' name='reason'><input type='hidden' value='{$name}' name='name'>\n";
echo "<input type='submit' name='remorve_check' value='Poista'>\n";
echo "</form>";
}

if (isset($_POST['remorve_check'])) {
$remorve = $_POST["remorve"];
$id = $_POST["id"];
$reason = $_POST["reason"];
$name = $_POST["name"];

if($remorve = '1') {
$kysely = $yhteys->prepare("UPDATE deleted FROM {$dbtable}videos SET deleted='1', remorve_reason='$reason' WHERE id='$id'");
$kysely->execute();

echo "Video {$name} on poistettu onnistuneesti!";
}else {
echo "Videota ei poistettu.";
    }
  }
}else {
echo "T&auml;m&auml; sivu on tarkoitettu vain yll&auml;pit&auml;jille!";
}
include('bottompart.php');
?>

Triton [04.09.2010 13:57:40]

#

Koodia olisi huomattavasti kivempi lukea, jos se olisi sisennetty paremmin sekä minkä ihmeen takia et anna noita sql-lauseiden muuttujia tuolle execute-metodille parametriksi, vaan asetat ne suoraan lauseeseen? Tämän takia PDO ei osaa hoitaa sen yhtä tärkeää tehtävää, sql-injektioaukkojen poistamista. Ja jos käyttäisit php:n valinnaisia ehto- ja toistorakenteiden muotoa, niin tuota html-koodi ei tarvitsisi echottaa.

<?php

		if ($sivu == 1)
			echo "<p>Hello, World!</p>";

?>

On sama, kuin

<?php if ($sivu == 1): ?>
	<p>Hello, World!</p>
<?php endif; ?>

Tuota edellistä rakennetta voidaan soveltaa samalla idealla toistarakenteisiinkin.

Ylipäätään sun varmaan kannattaisi opetella debuggaamaan tota koodiasi
ihan ilman, että joka käänteessä tulet pyytämään apua. Kannattaisi varmaan lukea hieman tarkemmin niitä virheilmoituksia ja sitä kautta etsiä ongelmaa. Samoin myös koodin paloittelu pienempiin osiin helpottaa virheen etsimistä huomattavasti.

edit. "Remorve" ei sitten tarkoita englanniksi poistamista vaan se on "remove".

Paratiisin poika [04.09.2010 14:21:32]

#

Joo. Kiitos. Tarkoitus olisi lopussa laittaa kaikki teksti tietokanstaan, jotta ä ei olisi auml; ja sitä rataa. Lisäksi minä en aivan joka käänteessä pyydä apua. Esim tein videon poistojutun tietokannasta toimivaksi ja käyttäjien estojutun toimivaksi. Tässä olisi sitten login.php sivu sisennettynä (Raakaliha sisensi)

<?php
if(!isset($_GET['action'])) {
	include('toppart.php');
	$pagename = "Kirjaudu sis&auml;&auml;n";
	include('head.php');
	echo "<br><br>\n";
	echo "<h2>Kirjaudu sis&auml;&auml;n</h2>\n";
	echo "<small>Jos sinulla ei ole tunnusta, voit <a href='?action=1'>luoda</a> sellaisen!</small><br>\n";
	echo "<form action='login.php?action=2' method='post'>\n";
	echo "<table border=0>";
	echo "<tr>";
	echo "<td>Tunnus: </td><td> <input type='text' name='username'></td>\n";
	echo "</tr>\n<tr>\n";
	echo "<td>Salasana: </td><td> <input type='password' name='password'></td>\n";
	echo "</tr>\n</table>\n";
	echo "<input type='submit' value='Kirjaudu sis&auml;&auml;n'>\n";
	echo "</form>\n";
	include('bottompart.php');
}
else
{
	$action=intval($_GET['action']);
	if($action == '1') {
		include('toppart.php');
		$pagename = "Rekister&ouml;inti";
		include('head.php');
		echo "<h2>Rekister&ouml;inti</h2>\n";
		echo "<small>Jos sinulla on jo tunns, <a href='login.php'>kirjaudu sis&auml;&auml;n</a>!</small>\n";
		echo "<form action='login.php?action=3' name='register' method='post'>\n";
		echo "<table border=0>";
		echo "<tr>";
		echo "<td>Tunnus: </td><td> <input type='text' name='username'></td>\n";
		echo "</tr>\n<tr>\n";
		echo "<td>Salasana: </td><td> <input type='password' name='password'></td>\n";
		echo "</tr>\n<tr>\n";
		echo "</tr>\n<tr>\n";
		echo "<td>Salasana uudelleen: </td><td> <input type='password' name='password2'></td>\n";
		echo "</tr>\n<tr>\n";
		echo "<td>S&auml;hk&ouml;posti: </td><td> <input type='text' name='email'></td>\n";
		echo "</tr>\n</table><br>\n";
		echo "<!--<span class='captcha_text' onclick='captcha_info();'>Captcha varmistus</span><br>\n";
		echo "<img src='captcha.php' class='captcha' onclick='captcha_info();'><br><br>\n";
		echo "<input type='text' name='captcha'><br><br-->\n";
		echo "<input type='submit' name='register' value='Rekister&ouml;idy' onclick='return form_check_register()' />\n";
		echo "</form>\n";

		include('bottompart.php');
	}
	elseif($action == '3')
	{
		include('toppart.php');
		$pagename = "Rekister&ouml;inti onnistui";
		include('head.php');

		$username = $_POST["username"];
		$password = $_POST["password"];
		$password2 = $_POST["password2"];
		$email = $_POST["email"];
		if(!empty($username)) {
			if(!empty($email)) {
				if(!empty($password)) {
					if(!empty($password2)) {

						if($password == $password2) {

							$forbiddenchars=false;
							if(strpos($username,":")) $forbiddenchars=true;
							if(strpos($username,"&")) $forbiddenchars=true;
							if(strpos($username,"?")) $forbiddenchars=true;
							if(strpos($username,"<")) $forbiddenchars=true;
							if(strpos($username,">")) $forbiddenchars=true;
							if(strpos($username,"'")) $forbiddenchars=true;
							if(strpos($username,"\"")) $forbiddenchars=true;

							if(!$forbiddenchars) {

								$uniqueid = rand(1, 9999999999999999999999999999);
								$uniqueid = md5($uniqueid);

								$kyselyusername = $yhteys->prepare("SELECT username FROM {$dbtable}users WHERE username = ?");
								$kyselyusername->execute(array($username));

								if ($kyselyusername->fetch()) {
									echo "Tunnus on jo olemassa!";
									include('bottompart.php');
									exit;
								}

								$kysely = $yhteys->prepare("INSERT INTO {$dbtable}users (username, password, email, uniqueid) VALUES (?, ?, ?, ?)");
								$kysely->execute(array($username, md5($password), $email, $uniqueid));

								$id = $yhteys->lastInsertId();

								session_start();
								$_SESSION["username"] = "$username";
								$_SESSION["id"] = "$id";
								$_SESSION["uniqueid"] = "$uniqueid";

								echo "Tunnus <a href='profile.php?id={$id}'>{$username}</a> on onnistuneesti luotu.";

							}
							else
							{
								echo "Tunnuksesi sis&auml;lt&auml;&auml; kiellettyj&auml; merkkej&auml;!";
							}
						}
						else
						{
							echo "Salasanat eiv&auml;t t&auml;sm&auml;nneet!";
						}
					}
					else
					{
						echo "Anna molemmat salasanat!";
					}
				}
				else
				{
					echo "Anna molemmat salasanat!";
				}
			}
			else
			{
				echo "Anna s&auml;hk&ouml;postiosoite!";
			}
		}
		else {
			echo "Anna tunnus!";
		}
	}
	elseif($action == '2')
	{
		include("toppart.php");
		$username = $_POST["username"];
		$passwordmd5 = $_POST["password"];
		$passwordmd5 = md5($passwordmd5);

		$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$username'");
		$kysely->execute();
		$rivi = $kysely->fetch();
		$dbpasswordmd5 = $rivi["password"];
		$dbusername = $rivi["username"];
		$dbid = $rivi["id"];
		$dbuniqueid = $rivi["uniqueid"];
		$login = true;
		if($passwordmd5 != $dbpasswordmd5) $login=false;

		if($login) {
			$_SESSION["username"] = "$dbusername";
			$_SESSION["id"] = "$dbid";
			$_SESSION["uniqueid"] = "$dbuniqueid";

			header("Location: index.php");
			exit;
		}
		else
		{
			echo "Ei oikein onnistunut t&auml; nyt kyl yht&auml;n...<a href='login.php'>Uusi yritys</a>!";
		}
		include('bottompart.php');
	}
}
?>

Ps. Terin kommentointijutun videoihin. Kommentteja ei vielä voi lähettää kun en sitä kerinnyt tehdä. Kommentointi sivu on iframeilla, jotta koodi olisi edes ieman lyhyempi.

Edit: Kommentointi toimii!

-tossu- [04.09.2010 15:11:57]

#

Paratiisin poika kirjoitti:

Tarkoitus olisi lopussa laittaa kaikki teksti tietokanstaan, jotta ä ei olisi auml; ja sitä rataa.

Oletko siis laittamassa niitä sivuilla olevia staattisia tekstejä tietokantaan? Niiden säilyttäminen tietokannassa vain monimutkaistaa asioita turhaan.

Paratiisin poika kirjoitti:

Kommentointi sivu on iframeilla, jotta koodi olisi edes ieman lyhyempi.

Mikäli koodi tuntuu liian pitkältä, voit laittaa kommentoinnin toiseen tiedostoon ja liittää includella palvelimella. Älä käytä liittämiseen käyttäjäpuolen kikkailuja.

Edit: Pidempiin koodeihin voisi laittaa scrollbarit, nyt ne tekevät sivusta turhan pitkän.

Paratiisin poika [04.09.2010 15:28:24]

#

Onko tuo millainen se nyt on niin se mitä tarkoitit?

http://vjgo.arkku.net/mediaplayer/index.php?id­=36

Edit: Kohta taitaa putka mennä solmuun... Mullla alko lagiin tääs ivu mutta muut toimii :o

Paratiisin poika [04.09.2010 16:40:49]

#

Muuten... Aloin tutustumaan tuohon HTML5 kieleen, mutta en näe siinä mitään toimivaa (tai ehkä pari). Mikä vikana? ihan w3scools sivulta katon ettei lähde ole virheellinen

Triton [04.09.2010 16:50:31]

#

Anteeks, mut nyt mua rupee kohta jo itkettämään. Ihan niin ku sä et edes lukisi noita vastauksia loppuun, ennen kuin hyppäät jo kokonaan toiseen aiheeseen. Kuten muutkin on jo sanoneet, niin niiden perusasioiden opettelusta olisi varmasti hyötyä. Toisaalta ei myöskään kannata ensimmäiseksi hommaksi haukata liian suurta palaa kakkua, siitä ei tuu kun lisää itkua...

Paratiisin poika [04.09.2010 17:14:20]

#

Anteeksi. Pyrin ensin selvittämään 1 ongelman ja sitten toisen. Mikäs olisi nyt ongelmana... hmm.

Jos ei ole kirjautuneena, niin tuolla ylhäällä on 2 erroria. Miten ne saisi poistettua ilman mitään suurempia kikkailuja? Minun pääni ei pysty hahmottamaan ratkaisua.

<?php
ini_set("display_errors", 1);
ini_set("error_reporting", E_ALL | E_STRICT);

if(file_exists("settings.php"))
	include("settings.php");
else
	die("<html>\n<head>\n<title>Virhe!</title>\n</head>\n<body>\n<b><i>settings.php</i></b> tiedosto puuttuu!\n</body>\n</html>");

try {
    $yhteys = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpassword");
} catch (PDOException $e) {
    die("VIRHE: " . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$ip = $_SERVER['REMOTE_ADDR'];

$esta_teksti = false;
$file_name = $_SERVER["SERVER_NAME"];
if($file_name == '{$software_dir}login.php?id=2') {
$esta_teksti = true;
}

if(!$esta_teksti) {
session_start();
$session_username = $_SESSION["username"];
$session_id = $_SESSION["id"];
$session_uniqueid = $_SESSION["uniqueid"];
if(isset($session_username)) {
$logged = true;
  }
}else {
$logged = false;
}

if(!isset($logged)) {
$logged = false;
}

if($logged) {
$kyselyadmin = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username='$session_username'");
$kyselyadmin->execute();
$rivi = $kyselyadmin->fetch();
    $admincheck = $rivi["admin"];
    $blockedcheck = $rivi["blocked"];

$admin = false;
$blocked = false;
if($admincheck == '1') $admin = true;
if($blockedcheck == '1') $blocked = true;
}

$kyselyuniqueid = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE id='$session_id'");
$kyselyuniqueid->execute();
$rivi = $kyselyuniqueid->fetch();
    $dbuniqueid = $rivi["uniqueid"];

if($logged) {
if($session_uniqueid == '$dbuniqueid') {
echo "HAXER! Tyhjennä tietokoneesi evästeet ja kirjaudu OMALLA tunnuksellasi sisään.";
exit;
  }
}
?>

Edit: koodi päivitetty

-tossu- [04.09.2010 19:24:09]

#

Paratiisin poika kirjoitti:

Jos ei ole kirjautuneena, niin tuolla ylhäällä on 2 erroria. Miten ne saisi poistettua ilman mitään suurempia kikkailuja? Minun pääni ei pysty hahmottamaan ratkaisua.

Minusta siellä on kylläkin kolme Undefined index -erroria, tarkoitat varmaan niitä. Ne johtuvat siitä, että et tarkista onko taulukon indeksiä olemssa ennen kuin yrität lukea sitä.

<?php
$session_username = $_SESSION["username"];
$session_id = $_SESSION["id"];
$session_uniqueid = $_SESSION["uniqueid"];

Saat ne pois tarkistamalla indeksin olemssaolon issetillä.

<?php
$muuttuja = isset ($taulukko ["indeksi"]) ? $taulukko ["indeksi"] : "indeksiä ei löytynyt";

Toinen vaihtoehto on laittaa Notice-tason virheilmoitukset piiloon.

Paratiisin poika [04.09.2010 19:32:08]

#

Itseasiassa nuo menee piiloon jos positan laajennetut virheilmoitukset käytöstä. Mennäään seuraavaan asiaan. Admin oikeuksilla videon poisto ei hyväksy sql lauseketta. Mikä vika?

<?php
include('toppart.php');
$pagename = "Poista videoita";
include('head.php');
if($admin) {
echo "<b>Poista videoita</b><br><br>\n";
echo "<form action='remorvevideo.php' method='post'>\n";
echo "Videon id: <input type='text' name='id'><br>\n";
echo "Poiston syy: <input type='text' name='reason'><br>\n";
echo "<input type='submit' name='remorve' value='Poista'>\n";
echo "</form>\n";

if (isset($_POST['remorve'])) {

$id = $_POST["id"];
$reason = $_POST["reason"];

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = '$id'");
$kysely->execute();
$rivi = $kysely->fetch();

$name = $rivi["name"];

echo "Olet poistamassa videota <a href='index.php?id={$id}' target='blank'>{$name}</a>, jonka id on {$id}.<br>\n";
echo "Syyksi annoit seuraavan: {$reason}<br>\n";
echo "Oletko varma ett&auml; haluat poistaa t&auml;m&auml;n videon?<br>\n";
echo "<form action='remorvevideo.php' method='post'>\n";
echo "Ei <input type='radio' name='remorve' value='0' checked><br>\nKyll&auml; <input type='radio' name='remorve' value='1' /><br><br>\n";
echo "<input type='hidden' value='{$id}' name='id'><input type='hidden' value='{$reason}' name='reason'><input type='hidden' value='{$name}' name='name'>\n";
echo "<input type='submit' name='remorve_check' value='Poista'>\n";
echo "</form>";
}

if (isset($_POST['remorve_check'])) {
$remorve = $_POST["remorve"];
$id = $_POST["id"];
$reason = $_POST["reason"];
$name = $_POST["name"];

if($remorve = '1') {
$kysely = $yhteys->prepare("UPDATE deleted FROM {$dbtable}videos SET deleted='1', remorve_reason='$reason' WHERE id='$id'");
$kysely->execute();

echo "Video {$name} on poistettu onnistuneesti!";
}else {
echo "Videota ei poistettu.";
    }
  }
}else {
echo "T&auml;m&auml; sivu on tarkoitettu vain yll&auml;pit&auml;jille!";
}
include('bottompart.php');
?>

Triton [04.09.2010 19:45:30]

#

Paratiisin poika kirjoitti:

Itseasiassa nuo menee piiloon jos positan laajennetut virheilmoitukset käytöstä.

Juu, mutta ideana ei olekaan se, että aina kun jonkun asian saa poissa silmistä, niin se olisi sitten fine. Ehkä vain kannattaisi tehdä -tossun- ehdotuksen mukaan ja tarkistaa issetillä, onko taulukon indeksi olemassa. Ei ole kovinkaan haastava homma, varsinkin kun tuossa ylemmällä on jo valmis esimerkki.

Paratiisin poika kirjoitti:

Admin oikeuksilla videon poisto ei hyväksy sql lauseketta. Mikä vika?

En edes tiedä, mihin tuolla poistamiseen tarkoitetulla sql-lausekkeella pyrit. Itse en ainakaan näe tuossa järjen häivääkään, en sitten tiedä olenko ainoa...

Edit. Voisit kommentoida koodiasi, jos kerran, et viitsi edes sisentää sitä kunnolla. Miten voit luulla kenenkään pystyvän auttamaan, kun koodia on jumalattomasti ja sitten pyydetään etsimään virhe "jostakin" kohdasta. Samoin kun ei tunne koko tietokantarakennettasi, niin on paha edes yrittää keksiä sitä, että mitä yrität tehdä.

Macro [04.09.2010 19:49:28]

#

Triton kirjoitti:

Itse en ainakaan näe tuossa järjen häivääkään, en sitten tiedä olenko ainoa...

Minä en vaivaudu edes lukemaan, kun kaikki on kirjoitettu putkeen ilman sisennyksiä. Lukeminen rasittuu, kun kaikki on vain allekkain (tai sitten on sisennyksiä päin puuta).

-tossu- [04.09.2010 19:57:14]

#

Paratiisin poika kirjoitti:

Admin oikeuksilla videon poisto ei hyväksy sql lauseketta. Mikä vika?

SQL-lausekkeessa. Lue vaikka Ohjelmointiputkan SQL-oppaasta miten UPDATE toimii. https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=mysqlphp06#rivienmuutos

Edit: Voisit myös lukea miten PDO toimii, etenkin muuttujien välityksen osalta.

Paratiisin poika [04.09.2010 20:54:35]

#

(Sama koodi kuin yllä, mod. poisti.)

-tossu- [04.09.2010 21:12:27]

#

-tossu- kirjoitti:

Lue vaikka Ohjelmointiputkan SQL-oppaasta miten UPDATE toimii. https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=mysqlphp06#rivienmuutos

Luitko tuon? Siellä on hyvä esimerkki UPDATEn käytöstä.

Triton [04.09.2010 21:22:26]

#

Tuli kyllä jo aikaisemmin varsin selväksi, että missä kohtaa se virhe on. Edelleen ihmittelen, että mitä tuolla sql-lausekkeella edes yrität tehdä... Onko sinulla olemassa edes kannassasi tuollaista taulua, kuin 'deleted' ja mitä siellä oikeastaan edes on?

Jos oletetaan, että sinulla on videoiden tietoja varten olemassa kannassa taulu 'videos', niin silloin toteuttaisin poistamisen näin yksikertaisesti:

<?php

$kysely = $yhteys->prepare("DELETE FROM videos WHERE id = ?");
$kysely->execute(array($id)); // Asetetaan video-id:n arvo lausekkeeseen

?>

Tai jos, et halua poistaa tietoja kokonaa, vaan tuolla 'videos'-taulussa
olisi sarake nimeltään esim. status, jolle voitaisiin antaa boolean-arvot true tai false sen mukaan onko video "olemassa". (Sitten vain haet select-kyselyllä ne videot jossa tuon sarakkeen arvo on true ja tulostat ne sivuille).

Tässä tapauksessa videon poistaminen voitaisiin hoitaa seuraavasti:

<?php

	$kysely = $yhteys->prepare("UPDATE videos SET status = ? WHERE id = ? LIMIT 1");
	$kysely->execute(array(false, $id)); // Asetetaan muuttujat lausekkeeseen

?>

Jos kerran tiedät suunnilleen missä kohtaa koodia se vika on, niin silloin on aivan turha postata koko koodia. Tosin taitenee tämä kaikki mennä kuuroille korville, joten en edes tiedä, että miksi näen vaivaa...

Paratiisin poika [04.09.2010 22:28:24]

#

kiitoksia tuosta. Tuolla saan koodin korjattua. Ei mennyt kuuroille korville.

Paratiisin poika [05.09.2010 19:26:38]

#

Joo. Nyt toimii tuo videoiden poisto ja poiston poisto, sekä käyttäjien esto ja estojen poisto. Kiitos. Katson suraavan ongelman...

Ongelma on yksinkertainen ja uskon että se voidaan hoitaa css koodilla. Ongelma on videosivuilla, ja nämä kuvat kertovat ongelman:


Nykyinen (virheellinen)
Tuleva (virheetön)

-tossu- [05.09.2010 21:28:26]

#

Ongelma johtuu todennäköisesti siitä, että olet tehnyt sivun taulukkotaitolla. Taulukon viereiset soluthan ovat aina samankorkuisia.

Ongelman voi varmasti korjata CSS:llä, eri asia on tukeeko vanhemmat selaimet sitä. Toinen vaihtoehto on laitta solun sisälle div ja määritellä border sille, eikä td:lle.

Suositeltavinta olisi kuitenkin, että luopuisit taulukkotaitosta kokonaan.

Paratiisin poika [06.09.2010 14:59:30]

#

En osaa diviä oikein käyttää kunnolleen tuossa, koska jos nyt vaikka esimerkkinä MediaWikin ohjelmisto. On erittäin erittäin erittäin vaikeaa saada sivun otsikkoa "Väärennetyksi" niin, että se olisi samanlainen joka selaimella. Erittäin vaikeaa.

Testaan laittaa tuon div tagin td tagin sisään. Kiitos.

Edit: Korjattu. Sivuilla oleva videonkatsomislaskuri on nyt näin:

Kirjoita sivulle "$katsomis_määrä";

Muokkaa tietokantaa {
aseta katsomismäärään 1 lisää.

Kannattaisiko se mielummin tehdä näin päin:

Muokkaa tietokantaa {
aseta katsomismäärään 1 lisää.

Kirjoita sivulle "$katsomis_määrä";

Haluaisin mielipiteenne...

-tossu- [06.09.2010 15:49:40]

#

Paratiisin poika kirjoitti:

Kannattaisiko se mielummin tehdä näin päin:

Eihän sillä ole mitään väliä miten päin tuon tekee.

Paratiisin poika [06.09.2010 15:51:47]

#

No on sillä hieman. Jos sen tekee ekalla tavalla, niin sitten tietokanta sanoo esim 5 mutta sivu 4. Jos tekee toisinpäin niin tietokanta sanoo esim 5 ja sivu sanoo MYÖS 5.

tsuriga [06.09.2010 15:54:30]

#

Siinä tulee tuollaisenaan se yhden katselijan ero. Loogisin lienee jälkimmäinen, joskin muuttujia ei tarvitse turhaan ympäröidä aina hipsuilla, ei se sisältö ilman niitä minään hattivatteina tulostu. Tietoa ei sitten tarvitse hakea uudestaan tietokannasta, vaan se sama +1-operaatio ohjelmassa kuin, mikä suoritetaan sinne tietokantaan, on ns. riittävän tarkka.

-tossu- [06.09.2010 15:55:57]

#

Paratiisin poika kirjoitti:

Jos sen tekee ekalla tavalla, niin sitten tietokanta sanoo esim 5 mutta sivu 4

Mikäli tuo häiritsee voihan siihen muuttujaan lisätä yhden tulostuksessa.

Paratiisin poika [06.09.2010 15:56:56]

#

Kiitos. Tahtoisin uploadin toimivammaksi. Nyt se ei ota yleisesti ottaen oikeita videoita. Miten saan noilla ini_set() functioilla sallittua suuremman tieodonmäärän vastaanottamisen ja suurempien tiedostojen tallennuksen ilman ftp:tä? En löytänyt ymmärrettävää vastausta php.net:in sivuilta.

-tossu- [06.09.2010 16:29:33]

#

Paratiisin poika kirjoitti:

Miten saan noilla ini_set() functioilla sallittua suuremman tieodonmäärän vastaanottamisen ja suurempien tiedostojen tallennuksen ilman ftp:tä?

Et mitenkään, suurin sallittu koko määritellään php.ini-tiedostossa.

Paratiisin poika [06.09.2010 16:31:00]

#

Okei. Teen tuon sitten ftp:llä. Mutta nyt menin säheltämään. Oli tarkoitus laittaa tuo copyright palkki alas. sitten löysin koodin. Ehdin sitten soveltaa sitä jo pääsivulleni http://vjgo.arkku.net. Huonostihan siinä kävi. Osaako joku kertoa miten saan tuon nyt pysymään siellä alhaalla eikä seuraamaan sivua?

-tossu- [06.09.2010 16:39:26]

#

Paratiisin poika kirjoitti:

Osaako joku kertoa miten saan tuon nyt pysymään siellä alhaalla eikä seuraamaan sivua?

Olisikohan "position: fixed;" sitä, mitä haet?

Paratiisin poika kirjoitti:

Okei. Teen tuon sitten ftp:llä

Tarjoaako arkku.net tuollaista mahdollisuutta? Olen melko varma ettei tarjoa, ja vaikka tarjoaisikin sinullahan on vain 50Mt sivutilaa, sillä ei paljon videoita hostailla.

Paratiisin poika [06.09.2010 16:41:51]

#

Siirrän tuon softan omalle palvelimelleni kunhan faija etsii eka ajurit ku ei netti toimi. Itse en ole kiinnostunut koneiden asennuksesta ja säätämisestä. Koneista pidän vain siksi, että niillä voi tehdä nettisivuja ja minä saan tyydytystä kun onnistun tekemään jotain toimivasti koneella.

Edit: Huomasin seuraavaa:

ID:

background: url('jee.png');

class:

backgraund-image: url('jee.png');

Edit: Ei ollu fixed se mitä etin:

http://vjgo.arkku.net/mediaplayer/profile.php?id­=1

-tossu- [06.09.2010 16:47:23]

#

Paratiisin poika kirjoitti:

Siirrän tuon softan omalle palvelimelleni kunhan faija etsii eka ajurit ku ei netti toimi.

No sittenhän voit muokata php.ini:ä. Kuinka nopea nettiyhteytesi muuten on ulospäin? Millään koti-ADSL:llä ei kannata edes yrittää hostia videoita.

Paratiisin poika kirjoitti:

Edit: Huomasin seuraavaa:

En kyllä tajunnut, mitä huomasit.

Edit:

Paratiisin poika kirjoitti:

Edit: Ei ollu fixed se mitä etin

Halusitko sitten tätä: http://matthewjamestaylor.com/blog/keeping-footers-at-the-bottom-of-the-page ?

Paratiisin poika [06.09.2010 16:52:18]

#

Jos on sulla vaikka koodi <div class="jee">, ei tämä css toimi:

background: url('jee.png');

-tossu- [06.09.2010 16:56:46]

#

Paratiisin poika kirjoitti:

Jos on sulla vaikka koodi <div class="jee">, ei tämä css toimi:

background: url('jee.png');

Sitten selaimessa on kyllä joku ihme bugi, kyllä tuon pitäisi toimia class:illa, jos se toimii ID:lläkin.

Paratiisin poika [06.09.2010 17:25:23]

#

No tää on tällainen Win 2000 ja selain Mozilla. Tosin olen potkinut konetta ku se ei oo toiminu. Tosin ei sen html koodiin pitäis vaikuttaa...

-tossu- kirjoitti:

Halusitko sitten tätä: http://matthewjamestaylor.com/blog/...g-footers-at-the-bottom-of-the-page ?

Kyllä.

Paratiisin poika [06.09.2010 18:40:06]

#

Ei. Minulle suositeltiin olemaan tekemättä tuollaista. Kiitti kuitenkin. Kiitos kaikille tähän astisesta avusta. Pian julkaisen softan sivuillani, ja voitte olla varmoja että putka ja jotkut saavat nimensä softan copyright filuun!

Paratiisin poika [06.09.2010 20:41:51]

#

http://vjgo.arkku.net/mediaplayer/copyright.txt

-tossu- [06.09.2010 21:05:48]

#

http://vjgo.arkku.net/mediaplayer/copyright.txt:

Tätä tiedostoa ei saa muuttaa eikä poistaa ilman lupaa.
VJGO Tube software on tekijänoikeussuojattu ja se on lisenssoitu GNU General Public License:llä.

Eikös tuo copyrights.txt:n muokkaamis- ja poistamiskielto ole vastoin GPL:n ehtoja? En ole varma, mutta luulisin niin. Miten siinä tapauksessa, että joku muokkaa tuota sinun ohjelmaasi, toimitaan? Silloinhan nimenomaan pitää mainita, että on muokannut ohjelmaa.

raakaliha [06.09.2010 22:03:35]

#

Eiköhän tuohon omalla sivullasi julkaisuun riitä pelkkä lisenssifilun kopiointi siihen pakettiin ja tiedotus millä lisenssillä on julkaistu.

Paratiisin poika [07.09.2010 08:54:23]

#

Tarkoitus tässä on se, että saan julkaista niiden nimet tuolla, jotka ovat auttaneet VJGO Tube video software version 1.1 ohjelman tekemisessä eniten.

-tossu- [07.09.2010 15:33:42]

#

Paratiisin poika kirjoitti:

Tarkoitus tässä on se, että saan julkaista niiden nimet tuolla, jotka ovat auttaneet VJGO Tube video software version 1.1 ohjelman tekemisessä eniten.

Ok.

Miksi muuten aiot sulkea VJGO Tuben?

Paratiisin poika [07.09.2010 16:37:55]

#

Miten niin aijon sulkea VJGO Tuben? En ole missään sanonut aikovani sulkea sitä. Tai sitten joku mursi tietoturvan. Käyn katsomassa...

Edit: Ei tuolla missään ole tuollaista tekstiä. Ja Pertti, kuka oletkin. Plussaa sulle ku tuon teit. Nyt voin laittaa sinne elsellä e tulostaan sukupuoleksi - merkin :D

-tossu- [07.09.2010 16:51:49]

#

Paratiisin poika kirjoitti:

En ole missään sanonut aikovani sulkea sitä.

Käsitin sitten väärin.

Paratiisin poika kirjoitti:

Ei. Minulle suositeltiin olemaan tekemättä tuollaista.

Luulin sinun tarkoittavan, että joku kielsi sinua pystyttämästä omaa serveriä.

Paratiisin poika [07.09.2010 16:55:21]

#

Tarkoitin että Raakaliha kertoi minulle että on huono idea laittaa Copyright palkki aina sivun alalaitaan. Antoi linkinkin. En muista sitä, mutta voin hakea koska muistan aiheen...

https://www.ohjelmointiputka.net/keskustelu/21271-divin-venytystä-css-pulma muistaakseni.

Paratiisin poika [07.09.2010 18:43:03]

#

Muutin video sivun niin, ettei se ole enään index.php?id=jotakin vaan watch.php?v=jotakin. Lisäksi tulen laittamaan jollain konstilla samankaltaisia videoita palkin tuonne sivulle kuten youtubessa.

Edti: En löydä mitään, mikä auttaisi nyt. Jos esimerkiksi joku kattoo videoo Mc Stepa - Lastenlaulu, niin sivulla pitäs ola linkkejä videoihin, joiden nimessä on 1 tai useampi näistä:

Mc, Stepa, Lastenlaulu

Ja ensimmäisinä jotkut videot tyyliin "Mc Stepa - Naiset" (videota ei ole mutta jos olisi...)

Millä lähtisin liikkeelle?

Edit: Lisään tuon kyseisen videon sivulle kohta.

Edit: Video lisätty.

reca [08.09.2010 11:28:53]

#

Sulla on vissiin oikeudet ladata tuo Stepan biisi tuonne? Teostot kunnossa?

Paratiisin poika [08.09.2010 14:49:36]

#

No mietin vaan et onko YouTubella oikeuksia sitten pitää siellä noita musiikkeja... Enpä usko sen keränneen kaikilta tyypeiltä llupaa niihin jokka noi biiiiiiiiiiiiiisit on jehny. lol.

-tossu- [08.09.2010 15:01:17]

#

Paratiisin poika kirjoitti:

No mietin vaan et onko YouTubella oikeuksia sitten pitää siellä noita musiikkeja...

Ei varmasti ole, mutta musiikin YouTubeen laittajallahan ne oikeudet pitää olla.

Paratiisin poika [08.09.2010 15:21:48]

#

Ääh. Ihan sama. Miten mie saan tuon sivuvalikon toimimaan?

Edit: Toinenkin ongelma. Tein unhtml() function. Se ei toimi. Mikä vikana?

<?php
function unhtml($unhtml) {
$unhtml = str_replace("<", "&lt;", $unhtml);
$unhtml = str_replace(">", "&gt;", $unhtml);
$unhtml = str_replace('"', "&Prime;", $unhtml);
$unhtml = str_replace("'", "&prime;", $unhtml);

$unhtml = stripslashes($unhtml);
}

Käyttö:

<?php
$sana = "<b>Lihavoitu</b> MOI!"
unhtml("$sana");

Macro [08.09.2010 16:12:59]

#

Oletko kuullut htmlspecialchars-funktiosta?

Funktion ongelma. Se ei palauta mitään.

Paratiisin poika [08.09.2010 16:14:38]

#

Olen kuulllut htmlspecialchars() functiosta, mutta en tahdo sitä. Katson saanko 1 taval ton toimiin, ja jos en saa, tuun kertoon siitä. Miten saan sen sivuvalikon toimimaan. Mistä lähteä liikkeelle?

Edit: Ei toimi. :( Miten korjata?

Metabolix [08.09.2010 16:24:34]

#

Tyhmä koodari kirjoitti:

Tiedän kyllä oikean tavan, mutta haluan silti tehdä oman purkkaviritelmän, jotta saisin sivuilleni pari uutta tietoturva-aukkoa ja muuta bugia (ja jotta koodi olisi vielä hitaampikin).

Järkeäkin saa käyttää.

raakaliha [08.09.2010 16:24:47]

#

...

<?php
function unhtml($unhtml) {
$unhtml = str_replace("<", "&lt;", $unhtml);
$unhtml = str_replace(">", "&gt;", $unhtml);
$unhtml = str_replace('"', "&Prime;", $unhtml);
$unhtml = str_replace("'", "&prime;", $unhtml);

$unhtml = stripslashes($unhtml);
return $unhtml;
}

$sana = "<b>Lihavoitu</b> MOI!";
echo unhtml("$sana");

Keywords- ja artistihaku:

<?php
# Sivulle liitettäessä poista tämä osio, muuttujat haetaan muualta
include("toppart.php");
$name = "Mc Stepa - Lastenlaulu"; //nykyisen videon nimi
$curid = 666; //nykyisen videon id

# Alku
$maxvideos = 10;      //maksimimäärä videoita luettelossa
$maxvideosartist = 5; //maksimimäärä videoita tietyltä artistilta

$results = array();   //tulokset
$formerids = array($curid); //tarkistus, ettei samaa videota tule kahdesti, saman tien nykyisen videon id

if(strstr($name, '-')) { //jos nimessä on viivamerkki
	$parts = explode('-', $name, 2); //jaetaan viivan kohdalta kahteen osaan
	if(preg_match('/[A-Za-zÅÄÖåäö]/', $parts[1])) { //jos jälkiosa sisältää kirjainmerkkejä
		//haetaan ensimmäisellä osalla alkavia videoita
		$q = $yhteys->prepare("SELECT * FROM videos WHERE name LIKE ?");
		$parts[0] = str_replace('%','',$parts[0]); //turhat prosenttimerkit pois
		$q->execute(array($parts[0].'%'));
		//liitetään max 5 videota
		$i = 1;
		while($row = $q->fetch()) {
			if(!in_array($row['id'],$formerids)) { //tarkistetaan, ettei video ole jo luettelossa
				$results[] = $row;
				$formerids[] = $row['id']; //estää 1. luettelon videoiden esiintymisen 2. luettelossa
				$i++; if($i > $maxvideosartist) break; //tulosten määrän rajoitus
			}
		}
	}
}

//pilkotaan nimi välilyöntien kohdalta, mutta hyväksytään ainoastaan kirjainmerkkejä sisältävät
$keywords = array_values(preg_grep('/[A-Za-zÅÄÖåäö]/', explode(' ', $name)));
//poistetaan turhia merkkejä
$keywords = str_replace('%','',$keywords);

//muodostetaan sql-kysely
$i = 0;
$querytext = 'SELECT * FROM videos';
while($i < count($keywords)) {
	if($i == 0)
		$querytext = $querytext." WHERE name LIKE ?";
	else
		$querytext = $querytext." OR name LIKE ?";
	$i++;
}
for($i = 0; $i < count($keywords); $i++) {
	$keywords[$i] = '%'.$keywords[$i].'%';
}

//haetaan videot
$q = $yhteys->prepare($querytext);
$q->execute($keywords);

//liitetään tulostaulukkoon
$i = 1;
while($row = $q->fetch()) {
	if(!in_array($row['id'],$formerids)) { //tarkistetaan, ettei video ole jo luettelossa
		$results[] = $row;
		$i++; if($i > $maxvideos) break; //tulosten määrän rajoitus
	}
}

# Listausesimerkki
echo '<ul>';
foreach($results as $row) {
	echo '<li><a href="watch.php?id='.$row['id'].'">'.htmlspecialchars($row['name']).'</a></li>';
}
echo '</ul>';

Jos tuo on jostain kohti lyhennettävissä, olisin mielellänikin tietoinen.

Paratiisin poika [08.09.2010 16:32:11]

#

Kiitos. Olet taitava. :D

Edit: Ei toimi nyt tää...

http://vjgo.arkku.net/mediaplayer/test.php on php filu


http://vjgo.arkku.net/mediaplayer/testi.txt on lähekoodi filu

Metabolix [08.09.2010 17:07:42]

#

Yksi mieleeni tuleva ratkaisumalli hakuun olisi tällainen:

<?php
$nimi = "xyz";

// Poimitaan tekstistä kirjaimia sisältävät osat.
preg_match_all("/[A-Za-zÅÄÖåäö]+/", $nimi, $sanat);
$sanat = $sanat[0];

// Muodostetaan jokaista sanaa varten IF, joka palauttaa
// osuman kohdalla pituuden ja muuten nollan.
$haku = array();
foreach ($sanat as $sana) {
  $pituus = strlen($sana);
  $haku[] = "IF(xyz LIKE '%$sana%', $pituus, 0)";
}
// Kootaan osumien summa.
$haku = implode(" + ", $haku);

// Varmistetaan, että on edes jokin hakuehto.
if (empty($haku)) {
  $haku = 0;
}

// Muodostetaan kysely, järjestetään osuma-arvon mukaan.
$kysely = "SELECT xyz, ($haku) AS arvo FROM taulu ORDER BY arvo DESC";

(En testannut, mutta eihän tuo suoraa kopiointia varten olekaan.)

raakaliha [08.09.2010 17:26:57]

#

Paratiisin poika kirjoitti:

Edit: Ei toimi nyt tää...

http://vjgo.arkku.net/mediaplayer/test.php on php filu


http://vjgo.arkku.net/mediaplayer/testi.txt on lähekoodi filu

Olit tunkenut {$dbtable}-kohdan hipsujen (') väliin, korjaantuu lainausmerkeillä ("). Korjasin suoraan test.php:een.

Paratiisin poika [08.09.2010 17:59:30]

#

Kiitos. Olen jo muokkaamassa tuota kuvalliseksi ;)

Edit: Toimii todella hyvin. Vielä pientä viilausta vaan :D Kiitos.

Edit: Toimiiko mun palvlein enään ollenkaa? Tais mennä tukkoon...

Edit: Nyt toimii taas. huh huh

Paratiisin poika [09.09.2010 14:27:37]

#

Koska tämä aihe on sellainen, että jos joku on kiinnostunut mitä kirjoitin tänne, niin tulee tähän aiheeseen, niin kerron tässä erään jutun:

Olin tänään koulussa atk luokan koneella. Olin putkassa ja kirjautuneena sisään. Asetuksissani määritellään ettei istunto lopun selainta suljettaessa. Ja koulussa ollessani koneella se jäi jumiin eikä enään sammutuksen jälkeen käynnistynyt. Tällä ajan takaa sitä, että tunnukseni jäi sinne päälle. Eli jos minulta alkaa tulla tyhmää kommenttia, se ei ole minulta oikeasti. Hyvin epätodennäköistä mutta sanoimpa vaan.

Sitten. Tuo vjgo Tuben video sivu alkoi ärsyttämään minua kun siellä oli kaikki missä sattuu, joiten poistin monta table tagia sieltä. Nyt se näyttää suorastaan kammottavalta. Mutta millä hitolla minä sen nyt saan korjattua oikein? Videosoitin on oikealla paikalla samoin kuin h1 tagilla määritetty otsikko ja videonpoistoformi (only admins see). Kaikki muu onkin sitten missä sattuu (bottompart.php mukaanlukien). Miten korjaan tuon?

Metabolix [09.09.2010 15:31:12]

#

Paratiisin poika kirjoitti:

Tällä ajan takaa sitä, että tunnukseni jäi sinne päälle.

Eikö sitten kannattaisi yksinkertaisesti vaihtaa salasana? Tuollaiset selitykset eivät varmasti pelasta tilannetta, kun on tunnettu tosiasia, että sinulta tulee välillä tyhmää kommenttia ihan itseltäsikin.

Paratiisin poika kirjoitti:

Miten korjaan tuon [ulkoasun]?

Jospa nyt ihan ensiksi opettelisit käyttämään tavallisia HTML-elementtejä (p, div, dl, dt, dd) ja CSS-tyylejä (margin, padding, float). Suunnittele ulkoasu pala kerrallaan: sijoittele ensin pelkät tyhjät laatikot sivun eri osille (erityisesti videolle ja sen tiedoille) ja lisää sitten laatikoihin yksitellen sisältöä.

Paratiisin poika [09.09.2010 15:45:07]

#

http://vjgo.arkku.net/mediaplayer/Milta_VJGOn_Videosivun_pitaisi_nayttaa.bmp

Huoh. Tiedän että teen kaiken tyhmässä järkässä, mutta ongelma on se, että en jaksa olla kauaa kiinnostunut samasta asiasta...

tgunner [09.09.2010 16:17:31]

#

Paratiisin poika kirjoitti:

Huoh. Tiedän että teen kaiken tyhmässä järkässä, mutta ongelma on se, että en jaksa olla kauaa kiinnostunut samasta asiasta...

Ehkä sitten kannattaisi jättää nämä hommat väliin tai tehdä pienemmissä erissä?

Paratiisin poika [09.09.2010 16:22:44]

#

No ainoa mistä tykkään on Ohjelmointi.

Osaako joku kertoa miten saan tuon näyttään fikkulta ilman että joka selaimelle ja näytöölle pitää tehdä oma tyyli?

(Mod. huom: Pidä nuo ala-arvoiset alapääjuttusi poissa tältä sivustolta.)

raakaliha [09.09.2010 17:11:40]

#

YouTuben ulkoasua kloonattaessa voi ottaa mallia YouTubesta.. siivottuna näyttää suurin piirtein tältä:

<html>
	<head>
		<style type="text/css">
			#page {
				#page{margin:0 auto}
			}
			#baseDiv {
				position:relative;
				width:970px;
				margin-left:auto;
				margin-right:auto;
				padding:0 5px 25px 5px
			}
			#homepage-main-content {
				float:left;
				clear:left;
				width:625px;
				margin-top:5px
			}
			#homepage-side-content {
				float:right;
				clear:right;
				width:300px;
				margin-top:5px;
				white-space:normal
			}
		</style>
	</head>
	<body>
		<div id="page">
			Yläosa
		</div>
		<div id="baseDiv">
			<div id="homepage-main-content">
				Vasen
			</div>
			<div id="homepage-side-content">
				Oikea
			</div>
		</div>
	</body>
</html>

Paratiisin poika [10.09.2010 10:36:01]

#

Nyt olen melkein jo saanut ongelman korjattua videosivulta. Enään pitäisi saada alaosaan tuo copyrightpalkki ja sitten tuo samankaltaisia juttu alkamaan vasta info laatikon jäläkehen...

Edit: Voisitteko auttaa?

Edit: Enään alapalkki korjattavana...

JEEEE­EE­E­EE­E­EE­E­EE­E­EE­A­AA­A­AA­A­AA­A­AA­A­AA­A­AAHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Korjattu! JEEEEEEEEEEEEEEEEEEE!!!!

Millä teen jonkun tällaisen systeeman?

$kirjainten_maara = laskekirjaimet($videonselite);

while($kirjainten_maara = 30) {
echo "$videonselite";
}else {
echo "$videonselite<br>";
}
if($kirjainten_maara = <30) {
ää ei jaksa
}

Eli selvennettynä: Miten saan tehtyä tuonne koodiin niin, että kun videon selitteessä on yli 30 kirjainta, niin aino 30 kirjainta ja sitten <br> tagi. taas 30 kirjainta ja <br> tagi...

Deffi [10.09.2010 12:01:22]

#

Käytä str_splittiä ja sen jälkeen implodea. Imploden käytöstä voit ottaa mallia Metabolixin koodista.

Paratiisin poika [10.09.2010 16:03:23]

#

Löysin ärsyttävän bugin tuosta samankaltaisia videojutusta.

http://vjgo.arkku.net/mediaplayer/watch.php?v=36

Tuon videon nimi on Lord Est - Keho on mun temppeli.

Samankaltaisia videoita ovat seuraavat:

Lentokoneen rakenne
Kellon rakenne
Playstation 3 -konsolin rakenne

Tummenuksista huomaa mikä on vikana. Köh köh...

Macro [10.09.2010 16:05:03]

#

Jos et muuta keksi, niin laita vaikka hakusanan ympärille välilyönnit (-> silloin haetaan kokonaisia on-sanoja).

Paratiisin poika [10.09.2010 16:09:32]

#

Tahdoin vain kertoa tästä teille. Tuo koodi on minusta helppo muokata (ainakin se näytti siltä. En ole testannut mitään suurempaa...)

Edit: WOOOOOOOOOOOT! Tää meni jo viidennelle sivulle :P

Macro [10.09.2010 16:11:51]

#

Putkan pisin aihe sisältää 13 sivua. :)

Metabolix [10.09.2010 16:17:48]

#

Tekstin katkaisuun ratkaisu: https://www.php.net/manual/en/function.wordwrap.php

Paratiisin poika [10.09.2010 16:37:08]

#

Tod offtopic:
13 sivua!?
Saanko linkin tuohon kyseiseen keskusteluun

Back to ontopic:
Kiitoksia Metabolix.

Macro [10.09.2010 16:52:40]

#

https://www.ohjelmointiputka.net/keskustelu/4086-kilpailuista

Paratiisin poika [10.09.2010 16:55:28]

#

Vautsi. Tuolle suoritukselle nostan hattua. Tämän aiheen elinaikana (kuukadenhan nää elää täydellisesti) ei onnistuta tuota tekemään ilman spammimista. Vautsi!

Paratiisin poika [11.09.2010 16:41:47]

#

Nyt olisi tarkoitus tehdä AJAX koodilla kommentointiformi. Kunnolla haastetta nyt...

Macro [11.09.2010 17:03:37]

#

Ei sillä AJAXilla sitä formia tehdä. HTML:llä se muotoillaan sinne, AJAXilla voi tehdä kaikenlaisia tarkistuksia.

Paratiisin poika [11.09.2010 17:05:10]

#

Taroitin että kommentointi. Koska videota kuunnellessa halutaan postata kommentti, olisi kiva ettei videon pylriminen ala alusta, joten jos AJAXilla on mahdollista tehdä samaan aikaan kommentin tarkistus ja sen tietokantaan tunkeminen niin olisi mahtia...

raakaliha [11.09.2010 18:45:30]

#

Laiskana voit käyttää iframe. Ps älä. Ajax käytetään yleensä vain vaihtoehtoisena ratkaisuna, koska esim käyttäjällä voi olla js pois päältä. Minua ainakin ärsyttää sivut jotka ei toimi ilman js, koska se on hyvistäkin syistä joskus pois päältä. Ps troll

Paratiisin poika [11.09.2010 19:09:21]

#

Muttaku juutube käyttää ajaxia vissiin siinä kommenttijutussa. Sitäpaitti esim mun videoplayeri ei toimi ilman js.

Paratiisin poika [12.09.2010 14:09:08]

#

VJGO Tube Version 1.1 (BETA) julkaistu! Toivoisin kommentteja.

raakaliha [12.09.2010 14:25:25]

#

Ääkköset säännöllisissä lausekkeissa not wörk.

Paratiisin poika [12.09.2010 14:29:57]

#

Eli missä eivät toimi? Kommentoinnista tiedän joo...

kayttaja-2499 [12.09.2010 14:38:27]

#

VJGO Tuben BETA kirjoitti:

VJGO Tuben BETA version on tarkoitus kopioida YouTube.

Paljonko tarvitaan tallennustilaa?

Paratiisin poika [12.09.2010 14:42:39]

#

öhöm. En tiedä. Yksi kaverini sanoi että YouTubessa on 37 tai 38 videota että mitäs pirua...

Grez [12.09.2010 15:12:10]

#

Paratiisin poika kirjoitti:

Yksi kaverini sanoi että YouTubessa on 37 tai 38 videota että mitäs pirua...

Taitaa siellä jokunen enemmän olla :D Joskus vuosi sitten taisi jo olla päälle 120 miljoonaa.

Paratiisin poika [12.09.2010 15:14:08]

#

Niimpä...

Nyt on korjattu (omalta sivultani) kommenteista se äöå juttu.

Paratiisin poika [14.09.2010 17:15:08]

#

Meikä tekee nyt ominaisuuksia versioon 1.2. Ekana on randomvideo.php sivu, joka arpoo randomiin videoon ja ohjaa sinne sitten. En pysty päässäni kuitenkaan hahmottamaan miten saisin sen toimimaan. Itseasiassa tekisi tässä mielentilassa kirjoittaa tähän parikymmentä kirjosanaa ja sotkea vähän päälle, mutta koska aiemmista kokemuksista tiedän ettei se kannata, jätän sen tekemättä.

Täsä koodi:

<?php
include("toppart.php");

$kysely = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE deleted = ? OR deleted = ?");
$kysely->execute(array("0", ""));
$i = 0;
while ($rivi = $kysely->fetch()) {
$i++;
$id = $rivi["id"];
$video = rand(1, $i);

$kysely2 = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = ? AND deleted = ? OR deleted = ?");
$kysely2->execute(array("{$id}", "0", ""));

echo "{$video}&nbsp;{$id}<br>";
}

#header("Location: watch.php?v={$id}");
?>

tkarkkainen [14.09.2010 17:19:28]

#

Kävisikös tällainen?

SELECT * FROM {$dbtable}videos ORDER BY RAND() LIMIT 1

Tuolla saat yhden satunnaisen videon tiedot, ja arvonta suoritetaan tietokannassa. Jos tarvitset jonkin where-lausekkeen (ilmeisesti jokin deleted-tsekkaus halutaan?), niin sen voi sijoittaa taulun nimen ja orderin väliin.

Paratiisin poika [14.09.2010 17:20:20]

#

Kiitos.

Paratiisin poika [15.09.2010 11:26:18]

#

Tuolla videosivulla on nyt tuo infolaatikko. Joissain videoissa hr tagillamtuotetut viivat eivät mene 100% pituudeltaan. Miten tuo hoituisi kuntoon?

Macro [15.09.2010 14:39:03]

#

Bodyssa taitaa olla marginaalit vielä käytössä? body-lohkoon margin: 0;

Paratiisin poika [15.09.2010 14:50:29]

#

Tuolla tyylillä teki siitä vain hirveämmän näköisen.

http://vjgo.arkku.net/mediaplayer/watch.php?v=3

Tuossa esimerkissä tuossa laatikossa missä on lisääjä, aika yms, niin nuo hr viivat menee miten sattuu..

Macro [15.09.2010 14:53:24]

#

Hmm... Minulla ne viivat ovat kyllä niin kuin ennenkin.

Metabolix [15.09.2010 15:05:13]

#

Paratiisin poika kirjoitti:

Tuossa esimerkissä tuossa laatikossa missä on lisääjä, aika yms, niin nuo hr viivat menee miten sattuu..

Miksi ihmeessä siinä laatikossa on table, kun sisältö ei millään tavalla muistutakaan taulukkoa? Eikä tosiaan ole ainoa kohta: sivullasi ei pitäisi oikeasti olla yhtäkään table-elementtiä!

HTML-koodisi perustuu selvästi jonkinlaiseen epämääräiseen räpellykseen ja toinen toistaan pahempiin virheisiin ja purkkaviritelmiin. Nyt oikeasti joko opettele tekemään kunnolla tai lopeta koko projekti.

Paratiisin poika [15.09.2010 15:06:19]

#

http://vjgo.arkku.net/mediaplayer/viivat.bmp

Soft Pop Nallehiljaa!!!!!! L0L

Metabolix: Okei. Mie teen siitä fiksun. Kunhan se vain näyttää hyvältä ilman tableja. ps... Joissain paikois TARVITAAN tableja... tosin yksi niistä on vain ylläpitäjille :D

Metabolix [15.09.2010 15:13:04]

#

Paratiisin poika kirjoitti:

Kunhan se vain näyttää hyvältä ilman tableja.

No sehän riippuu tasan tarkkaan omista taidoistasi.

Paratiisin poika kirjoitti:

Joissain paikois TARVITAAN tableja

Niin, nimittäin sellaisissa paikoissa, joissa on riveistä ja sarakkeista muodostuva ruudukko. Putkapostin tulostaulu on hyvä esimerkki järkevästä taulukosta. Taulukko ei ole sivun osien asettelua varten.

Paratiisin poika [15.09.2010 15:16:09]

#

Eihän noilla diveillä saa ulostettakaan aikaan. Ei hemuli. Yhyy. En tykkää divistä noin. Miksi on näin vaikeaa taas?

Metabolix [15.09.2010 15:18:58]

#

Hienoa, yritit melkein kymmenen minuuttia. Siinä ajassa oletkin jo oppinut kaiken mahdollisen nettisivujen teosta ja voit perustellusti sanoa, että tekniikka on huono!

Paratiisin poika [15.09.2010 15:27:18]

#

Voin myöntää, etä minun mielestäni table ei ole hyvä tapa asetella asioita, mutta se on helppo ja tästä syystä käytän sitä.

Edit: Entäs ne hr viivat?

Metabolix [15.09.2010 15:30:21]

#

Jos viitsisit vähän debugata asiaa, näkisit, että ne hr-viivat vastaavat leveydeltään niiden ympärillä olevaa taulukkoa. Jos siis sivu olisi tehty muuten kunnolla, myös hr-viivat menisivät oikein. Nytkään vika ei ole viivoissa vaan siinä huippuhelpossa taulukossasi – eli kannattaa varmaan tehdä siihen jokin huippuhelppo korjaus.

raakaliha [15.09.2010 16:34:20]

#

Firebug näyttää koodisi sisennettynä ja voit tarkastella divien käyttäytymistä yleisestikin. Jos käytät Firefoxia niin asenna.

Minullakin kesti (vuosi 2008 muistaakseni) kauan opetella taulukkotaitosta eroon, kuten monista muistakin pahoista tavoista.

Yhden videolinkin voisi tehdä seuraavalla mallilla (ei..suoraan..kopiointiin):

<div style="display:table;">
	<div style="display:table-cell;"><img src="http://vjgo.arkku.net/mediaplayer/images/noimage.png" height="73px" width="90px"></div>
	<div style="display:table-cell; vertical-align:middle; padding:0.8em;"><a href="watch.php?v=2">Tulostimen rakenne</a></div>
</div>

hr-viivan voi usein korvata border-bottom -ominaisuudella (erityisesti h1-h6 -tagit). padding- ja margin-ominaisuuksilla saat divit juuri sinne minne haluat. Absoluten liiallisesta käytöstä varoitan jo etukäteen. :)

Blaze [15.09.2010 16:53:01]

#

raakaliha kirjoitti:

<div style="display:table;">
	<div style="display:table-cell;"><img src="http://vjgo.arkku.net/mediaplayer/images/noimage.png" height="73px" width="90px"></div>
	<div style="display:table-cell; vertical-align:middle; padding:0.8em;"><a href="watch.php?v=2">Tulostimen rakenne</a></div>
</div>

Kun nyt huonoista tavoista puhutaan, niin CSS:n upottaminen HTML:n sekaan style-attributilla on hyvin huono tapa. Ai niin, ja img-elementin width ja height-attributit ottaa pelkän paljaan numeron ilman yksikköä, lisäksi alt-attribuutti on pakollinen.

raakaliha [15.09.2010 16:57:39]

#

img-tagit ovat sammakkomiehen omasta koodista peräisin. Suoraan kopiointiinhan tuo ei ole. :)

Metabolix [17.09.2010 11:06:20]

#

Paratiisin poika kirjoitti:

Minusta md5 on ihan tyhmä pelle. Muunnan toiselta sivulta lähetetyn te4kstin md5 functiolla ja tulos on asdf. Teen saman toisella sivulla ja tulos on querty. Ihan samalla tavalla. yhyy.

Jos eräs tyhmä pelle viitsisi vähän debugata tietokantaansa, sieltä varmaan löytyisi eräs rivi, jolla lukee salasanana "md5(tyhmänpellensalasana)" eikä suinkaan sitä MD5-hashia.

Koodissasi on muuten hirveä määrä aivan turhia lainausmerkkejä, joista kannattaa hankkiutua heti eroon. Esimerkiksi kaikki muuttujat, jotka olet kirjoittanut muodossa "{$muuttuja}" tai "$muuttuja", voisi ihan hyvin kirjoittaa suoraan (esim. $muuttuja), tai jos string-tietotyyppi on välttämätön, voisi kirjoittaa selvemmin (string) $muuttuja. Näin ehkä löytäisit itsekin virheitä helpommin.

(Edit: poistitkin sitten viestisi.)

Paratiisin poika [17.09.2010 11:20:10]

#

Joo poistin kun löysin vian.... :D

Edit: Yleensä nuo on tyyliä echo "{$muuttuja}\n";, ja tuo \n vaatii "" merkit :D

Nyt taisi käydä niin hassusti etteivät tiedostot tahdo näkyä sivullani. YYYYYYYYYYYYYYYYYYYYY

Nyt lähti videita paljonki vegeeeeeeeeee

Ärsyttää

tuutti [17.09.2010 15:08:27]

#

Paratiisin poika kirjoitti:

Joo poistin kun löysin vian.... :D

Edit: Yleensä nuo on tyyliä echo "{$muuttuja}\n";, ja tuo \n vaatii "" merkit :D

Nyt taisi käydä niin hassusti etteivät tiedostot tahdo näkyä sivullani. YYYYYYYYYYYYYYYYYYYYY

Nyt lähti videita paljonki vegeeeeeeeeee

Ärsyttää

senki voi laittaa vaikka

echo $muuttuja . "\n";

Macro [17.09.2010 15:26:17]

#

tuutti kirjoitti:

senki voi laittaa vaikka

echo $muuttuja . "\n";

Tai

<?php
echo "$muuttuja\n";

jolloin säästetään pari merkkiä.

raakaliha [17.09.2010 15:38:29]

#

Muotoa {$muuttuja} käytetään yleensä, kun muuttujan kirjaimet sekoittuvat muuhun tekstiin:

<?php
$grade = 7;
echo "$gradeth grade";

...tuottaa:

 grade

...kun taas:

<?php
$grade = 7;
echo "{$grade}th grade";

...tuottaa halutun tuloksen:

7th grade

Macro [17.09.2010 15:52:11]

#

raakaliha kirjoitti:

Muotoa {$muuttuja} käytetään yleensä, kun muuttujan kirjaimet sekoittuvat muuhun tekstiin:

<?php
$grade = 7;
echo "$gradeth grade";

...tuottaa:

 grade

ja virheen olemattomasta muuttujasta.

Metabolix [17.09.2010 17:37:30]

#

Vielä selvennykseksi: Huomautukseni ei suinkaan koskenut merkintää sinänsä vaan sen käyttöä:

<?php
// Järkevä käyttötapa, tiedon lisääminen muuhun tekstiin:
echo "Paljonko on {$x} + {$y}?";

// Hämäävä ja tarpeeton käyttötapa:
$a = "{$b}";

// Paremmin tarkoitusta kuvaava vaihtoehto edelliselle:
$a = (string) $b;

Koko huomautus sai alkunsa kysyjän koodin kohdasta, jossa luki seuraavaa:

<?php
$kyselypassword->execute(array("md5($new)", "$session_id"));

Tästä luulisi tyhmemmänkin huomaavan virheen, mutta kaikista tyhmimmiltä se varmaan menee iloisesti ohi.

raakaliha [17.09.2010 22:17:01]

#

Onko muuten lainausmerkkisysteemi mielekäs tapa merkkijonojen yhdistämiseen:

<?php
$x = "äks";
$y = "yy";
$z = "x plus y = $x$y";
// $z = "x plus y = {$x}{$y}";

vaiko

<?php
//...
$z = "x plus y = ".$x.$y;

Entä taulukoiden suhteen, onko sallittu upotus tuolla tapaa?

<?php
echo "Solun 123 sisältö: {$taulukko[123]}";
$teksti = "...{$taulukko[123]}...";

Mielenkiinnosta lähinnä kysyn.

-tossu- [17.09.2010 22:36:26]

#

raakaliha kirjoitti:

Onko muuten lainausmerkkisysteemi mielekäs tapa merkkijonojen yhdistämiseen

Kyllä se ainakin selventää koodia tietyissä tapauksissa.

raakaliha kirjoitti:

Entä taulukoiden suhteen, onko sallittu upotus tuolla tapaa?

On sallittu. Tuonkin kokeilemiseen olisi mennyt korkeintaan 30s.

raakaliha [17.09.2010 23:39:25]

#

Tiedän että toimii, tarkoitin onko se hyvän tavan mukaista... voi voi... mitäs minä nyt tässä taas lörpöttelen, olen niin yksinäinen, siksi minä sitä koiraakin...

Paratiisin poika [21.09.2010 09:14:43]

#

Kiitos näistä viesteistä. Pyrin korjaamaan tietoturvaa näiden viestien avulla. Kiitos.

Paratiisin poika [24.09.2010 10:44:49]

#

Onko php:n avulla mahdollista tarkistaa että onko henkilöllä käytössä javascript tai onko tarvittava flash/java player asennettuna tai jotain sellaista? HTML koodein olen jo ilmoituksia laittanut IE ja IE 6 selaimelle :D

Videot eivät nimittäin toimi ainakaan koulun koneella mozillalla :(

Blaze [24.09.2010 12:01:09]

#

Paratiisin poika kirjoitti:

Onko php:n avulla mahdollista tarkistaa että onko henkilöllä käytössä javascript tai onko tarvittava flash/java player asennettuna tai jotain sellaista?

Ei voi, selain ei kerro näitä tietoja pyytäessään sivua palvelimelta.

Javascriptillä voi tarkistella pluginien olemasasoloa.

Triton [24.09.2010 12:05:15]

#

Jos haluat tarkistaa onko flash käytössä, niin kannattaa tutustua tähän http://code.google.com/p/swfobject/ .

Paratiisin poika [25.09.2010 16:20:42]

#

Entä JavaScript? Ei ole sitä joku $GET_BROWSER[] joku juttua käytössäni sitten.

pake10 [25.09.2010 16:37:10]

#

Paratiisin poika kirjoitti:

Entä JavaScript? Ei ole sitä joku $GET_BROWSER[] joku juttua käytössäni sitten.

Se pitäisi onnistua noscriptillä (HTML). Elikkäs:

<noscript><p>Sivusto tarvitsee toimiakseen JavaScriptin tuen.</p></noscript>

En muista, onko noscriptin käyttäminen hyvä tapa mutta noin se kuitenkin pitäisi toimia.

Paratiisin poika [25.09.2010 16:45:48]

#

Muttakun pitäisi tehdä niin, että jos js ei käytössä, php härkäsestä kärpäsen, mutta jos on käytössä, niin php tekee härkäsestä mummelin xD

Edit: Seuraava koodi tulostaa tekstin "PHP teki härkäsesä kärpäsen", oli js päällä tai ei

<?php
$js = true;
?>
<noscript>
<?php
$js = false;
?>
</noscript>
<?php
if($js) {
echo "PHP teki h&auml;rp&auml;sest&auml; mummelin";
}else {
echo "PHP teki h&auml;rp&auml;sest&auml; k&auml;rp&auml;sen";
}
?>

tuutti [25.09.2010 16:55:00]

#

http://stackoverflow.com/questions/121203/how-to-detect-if-javascript-is-disabled

eka linkki googlella

Teuro [25.09.2010 16:57:09]

#

Tuokin sinun pitäisi jo tietää, että miksi noin käy. PHP suoritetaan aina ihan ensiksi, josta tulee tuo sivu ja noscript-tagi. Siis tuon noscript-tagin kohdalla ei ole mitään PHP koodia olemassakaan. Siis ensin $js muutujassa on true, jonka jälkeen siinä on false ja tulostus on sen mukainen.

Paratiisin poika [25.09.2010 17:00:13]

#

Tiedän sen. etsin googlella koulussa rataisua, ja tuollainen ohje tuli usemmaltakin sivustolta...

Paratiisin poika [25.09.2010 20:49:11]

#

Katsos vain. eihän olisi tarvinnu ku laittaa table tagille widht arvoksi 100% ja viivaongelma onfolaatikossa katos. ohhoh. No... löysinpä ainaski vihdoi ratakisun...

Paratiisin poika [28.09.2010 16:34:40]

#

Tietoa:

Paratiisin poika [29.09.2010 15:44:23]

#

Kannattaako mielummin käyttää toista sivua liittäessä include(), recuire() vai recuire_once() functiota? Mitä eroa niillä edes on?

tsuriga [29.09.2010 16:16:39]

#

Riippuu käyttötarkoituksesta. *Once-komentorakenteet (includet ja requiret eivät siis ole funktioita, joten niitä ei voi käyttää muuttujien kautta) tuovat tiedoston ainoastaan kerran sen sijaan, että tiedosto tuotaisiin jokaisella kutsulla uudestaan. Require-komentorakenteet heittävät tiedoston tuonnissa epäonnistuessaan pahemman laatuisen poikkeuksen, joka keskeyttää ohjelman toiminnan. Includen heittää asiasta varoituksen, mutta ohjelman toiminta jatkuu. Ehkä yleisemmin käytetään requirea kun kuitenkin tiedetään, mitä tiedostoja oma ohjelma tarvitsee.

Paratiisin poika [29.09.2010 17:00:22]

#

Okei. Mutta jos teen sivun niin, että joka sivulla on sama tiedosto tuotu, jotta yläosa näkyisi, kuten minun sivullani näin(,):

<?php
include("toppart.php");
$pagename = "Sivun nimi";
include("head.php");
echo "Sivun sisältö";
include("bottompart.php");
?>

niin kannattaako käyttää tuossa tilanteessa functio() vai functio_once() komentoa?

-tossu- [29.09.2010 17:34:20]

#

Paratiisin poika kirjoitti:

niin kannattaako käyttää tuossa tilanteessa functio() vai functio_once() komentoa?

functio ()
Functio_once liittää sen tiedoston vain kerran, eli jos sinulla on kaksi functio_once ():a, niin se jälkimmäinen ohitetaan. Sillä kannattaa littää esim. tietokantayhteyden avaamisen sisältävä tiedosto

Paratiisin poika [29.09.2010 17:41:41]

#

okei. Kiitos.

Metabolix [29.09.2010 17:44:26]

#

-tossu-, selityksesi meni siinä mielessä metsään, että eihän tässä kai olla liittämässä samalle sivulle kahta samaa tiedostoa. Kumpi tahansa siis sopii.

Suosittelen kaikkien tiedostojen liittämistä funktiolla require_once. Lisäksi suosittelen, että myös sivun yläosan tulostaminen ym. tehdään funktiossa. Kokonaisuudesta tulee siis tällainen:

<?php
require_once("kaikki.php");

tulosta_ylaosa("Otsikko");
echo "Jee jee.";
tulosta_alaosa();

Jos useimmat sivut tarvitsevat suunnilleen kaikkia liitettäviä tiedostoja, voi tehdä yhden tiedoston kaikki.php, joka sitten liittää loput:

<?php # kaikki.php
require_once("tietokanta.php");
require_once("tulosta_ylaosa.php");
require_once("tulosta_alaosa.php");

Toisaalta yksittäiset liitokset voi laittaa myös joka tiedostoon erikseen ja säätää jokaisessa tarpeiden mukaan. Tästä on kuitenkin jonkin verran ylimääräistä vaivaa, eikä nopeushyötykään ole merkittävä.

Paratiisin poika [02.10.2010 15:00:20]

#

Löytyikö uusimmasta versiosta mitään bugeja/tietoturva-aukkoja?

Jokotai [02.10.2010 15:17:34]

#

Paratiisin poika kirjoitti:

Löytyikö uusimmasta versiosta mitään bugeja/tietoturva-aukkoja?

AINA on jokin ominaisuus/aukko

Paratiisin poika [02.10.2010 15:20:57]

#

Jos löydätte, voitteko kortoa niistä minulle? Voisin korjata ne

RQ [02.10.2010 15:35:24]

#

Jokotai kirjoitti:

Paratiisin poika kirjoitti:

Löytyikö uusimmasta versiosta mitään bugeja/tietoturva-aukkoja?

AINA on jokin ominaisuus/aukko

Aikamoinen väite, jotain perusteluja kiitos?

Macro [02.10.2010 16:09:42]

#

RQ kirjoitti:

Jokotai kirjoitti:

Paratiisin poika kirjoitti:

Löytyikö uusimmasta versiosta mitään bugeja/tietoturva-aukkoja?

AINA on jokin ominaisuus/aukko

Aikamoinen väite, jotain perusteluja kiitos?

Jokotai tarkoitti varmaan Pratiisin pojan tapauksessa.

Jokotai [02.10.2010 17:22:54]

#

Macro kirjoitti:

Jokotai tarkoitti varmaan Pratiisin pojan tapauksessa.

En. Aina pystyy murtautumaan jotenkin. Ja oletteko muka nähneet ohjelmaa, joka toimii täysin käyttöjärjestelmän kanssa, koskaan tuottamatta virhettä.

Paratiisin poika [02.10.2010 18:16:02]

#

Okei. Etippä tästä koodista joku bugi/aukko, jolla murrat sivuston, jolla se on.

<?php
echo "Tätä koodia ei hevillä eikä millään muullakaan murreta :D";
?>

Koodihan ei ole validia mutta sama se.

Jokotai [02.10.2010 18:26:49]

#

Paratiisin poika kirjoitti:

Okei. Etippä tästä koodista joku bugi/aukko, jolla murrat sivuston, jolla se on.

<?php
echo "Tätä koodia ei hevillä eikä millään muullakaan murreta :D";
?>

Koodihan ei ole validia mutta sama se.

Tuo voi serverissä sekaantua ja tulos onkin.

Taas täällä putkassa viisastellaan.

Metabolix [02.10.2010 18:35:25]

#

Jokotai, itse tässä viisastelet. Jos väität, että kaikissa (mielekkään kokoisissa) sovelluksissa on bugeja, olet väärässä: myös täysin aukotonta koodia voi kirjoittaa. Jos taas tarkoitit, että aina voi sattua koodista riippumaton häiriö (laitteistossa tai muualla ajoympäristössä), olet nokkaviisas: kyseisiä ongelmia ei pidä laskea alkuperäisen koodin syyksi.

Jokotai [02.10.2010 18:46:27]

#

Metabolix kirjoitti:

Jokotai... ...olet nokkaviisas

totta

Grez [02.10.2010 20:47:48]

#

Metabolix kirjoitti:

nokkaviisas

Erinomaisesti vältetty svetisismejä :D

Jokotai [02.10.2010 21:05:36]

#

Grez kirjoitti:

Metabolix kirjoitti:

nokkaviisas

Erinomaisesti vältetty svetisismejä :D

No Metabolixhan on melkoinen kielipuristi ;)

Paratiisin poika [03.10.2010 11:57:21]

#

:DDD Niitä bugeja ei näytä koodistani löytyvän... Tosin käyttäjäasetusksista en ole varma että toimivatko ne. omalla sivullani ei toimi... passunvaihto khyl toimii. En vain löydä mitään vikaa koodista :(

Metabolix [03.10.2010 13:04:52]

#

Paratiisin poika kirjoitti:

Niitä bugeja ei näytä koodistani löytyvän...

Tai sitten kukaan asiasta kunnolla ymmärtävä ei ole viitsinyt edes katsoa tarkemmin, kun koodisi on niin täydellisen rumaa ja sotkuista.

Paratiisin poika [03.10.2010 13:58:20]

#

Väärin. Raakaliha on rivittänyt sitä. Voisiko joku pliis katsoa?

Metabolix [03.10.2010 14:10:07]

#

Ei pieni koodin kirjoitusasun siistiminen vaikuta siihen, että koko systeemi on rakennettu päin honkia. Jos koodi olisi hyvin suunniteltu ja ohjelmointitavaltaan proseduraalista tai oliopohjaista, olisi helppo tarkistaa pari avainkohtaa ja todeta, onko aukkoja vai ei. Nyt jokaisen sivun koodi on kirjoitettu putkeen ja esimerkiksi kyselyjä muodostetaan joka tiedostossa erikseen, minkä vuoksi tarkistaminenkin vaatisi jokaisen sivun tarkkaa tutkimista erikseen.

Paratiisin poika [03.10.2010 14:31:14]

#

??? toppart.php tiedostossa on tärkeät muuttujat, kuten session_id, session_username, ip, browser, yhteys... sitten esim users.php tiedostossa listataan estämättömät käyttäjät hakemalla tiedot myslikannasta koodilla hae se se se ja se sieltä ja järjestä näin. Sitten jos blocked on totta, niin ohita. muuten kirjoita.

Grez [03.10.2010 14:43:59]

#

Metabolix kirjoitti:

Paratiisin poika kirjoitti:

Niitä bugeja ei näytä koodistani löytyvän...

Tai sitten kukaan asiasta kunnolla ymmärtävä ei ole viitsinyt edes katsoa tarkemmin, kun koodisi on niin täydellisen rumaa ja sotkuista.

Itse en viitsinyt edes alkaa selvittelemään mistä ne viimeisimmät koodin versiot löytyisi. Varmaan tämän ketjun jollain sivulla olisi linkki, mutta ei jaksa etsiä.

Mutta oli miten oli, niin bugien raportoimattomuus ei todista etteikö niitä olisi. Tietty jos bugien löytämisestä olisi tarjolla riittävän hyvä palkkio, niin todennäköisyys bugittomuuteen kasvaisi summan kasvaessa. Jos on joku alle 10000 rivin koodi josta luvataan vaikka miljoona euroa ekalle joka löytää bugin, eikä kukaan ilmoittaudu, niin voisin pitää jo todennäköisenä ettei bugeja ole.

Paratiisin poika [03.10.2010 16:13:17]

#

http://vjgo.arkku.net/lataukset.php?id=2

Tuossa on linkki :)

Jokotai [05.10.2010 01:08:05]

#

Grez kirjoitti:

Tietty jos bugien löytämisestä olisi tarjolla riittävän hyvä palkkio, niin todennäköisyys bugittomuuteen kasvaisi summan kasvaessa. Jos on joku alle 10000 rivin koodi josta luvataan vaikka miljoona euroa ekalle joka löytää bugin, eikä kukaan ilmoittaudu, niin voisin pitää jo todennäköisenä ettei bugeja ole.

Palkkionmetsästäjät :D

Paratiisin poika [05.10.2010 09:12:14]

#

Joo :D Mutta olisi kiva, jos niitä bugeja löytyisi nyt kuitenkin...

Blaze [05.10.2010 09:28:34]

#

Paratiisin poika kirjoitti:

Joo :D Mutta olisi kiva, jos niitä bugeja löytyisi nyt kuitenkin...

Voin tsekkailla niitä tuossa illalla, vaikka viiskymppiä/tunti.

Paratiisin poika [12.10.2010 09:10:52]

#

Hmm... Mites saan headereilla tehtyä php tieedostosta js tiedoston?

Blaze [12.10.2010 09:35:38]

#

Lähettämällä headerin Content-Type: application/x-javascript

tsuriga [12.10.2010 11:05:33]

#

Tai jopa application/javascript, kuten RFC 4329 ehdottaa. IE vaatii versioon X asti text/javascript-tyypin.

Paratiisin poika [12.10.2010 17:02:16]

#

Kiitos.

Paratiisin poika [18.10.2010 11:54:37]

#

Kuinka suosittelisitte minun tekevän seuraavan:

Ajon laittaa asetuksiini niin, että voi sieltä valita onko sivun osoitteen perässä .php pääte vai. eli onko watch?v=xxxxx vai watch.php?v=xxxxx

Vai onko tuo mahdollista mahdollistaa kaikille palvelimille .htaccess tiedoston avulla?

-tossu- [18.10.2010 12:22:12]

#

Paratiisin poika kirjoitti:

Ajon laittaa asetuksiini niin, että voi sieltä valita onko sivun osoitteen perässä .php pääte vai. eli onko watch?v=xxxxx vai watch.php?v=xxxxx

Vai onko tuo mahdollista mahdollistaa kaikille palvelimille .htaccess tiedoston avulla?

Tuo on mahdollista .htaccess-tiedoston avulla, jos palvelimen ylläpitäjä on sen sallinnut. Tosin ainakin Debianin Apache ymmärtää tuon lyhyemmän muodon oletusasetuksillakin.

Paratiisin poika [18.10.2010 15:07:17]

#

Servut.us ei ainaskaan tajua. Vissiin mod revitellä toimisi... Miten ton saa toimiin?

-tossu- [18.10.2010 15:45:51]

#

Paratiisin poika kirjoitti:

Vissiin mod revitellä toimisi... Miten ton saa toimiin?

Laittamalla .htaccess tiedostoon:

RewriteEngine on
RewriteRule ^watch$ watch.php

Edit: muokkasin koodia hieman

Paratiisin poika [18.10.2010 15:50:48]

#

aa. okei. Ainoo vaan et pitää laittaa kaikkiin tiedostoihin tuo juttu :D

Macro [18.10.2010 16:00:34]

#

Eikös tämä toimi?

RewriteEngine on
Rewrite Rule ^$1 $1.php

En testannut, mutta muistaakseni $numero-muuttujilla voi korvata joitain kohtia...

Paratiisin poika [18.10.2010 16:05:29]

#

Kiitos. Tuosta on paljon hyötyä.

-tossu- [18.10.2010 16:05:37]

#

Macro kirjoitti:

Eikös tämä toimi?

RewriteEngine on
Rewrite Rule ^$1 $1.php

Ei.
RewriteRule kirjoitetaan yhteen ja sen ensimmäisen parametrin kuuluu olla säännöllinen lauseke.

RewriteEngine on
RewriteRule ^([a-z]+)$ $1.php

Macro [18.10.2010 16:17:16]

#

"Rewrite Rule" oli kirjoiturvirhe, mutta seuraavaa kohtaa en tiennyt. Ehkä siksi omat viritelmät antaa virheitä.

Paratiisin poika [22.10.2010 10:57:18]

#

Kiitos. Tuo toimii oikein hyvin. Nyt saan linkit kauniiksi :DDD

Paratiisin poika [22.10.2010 19:29:05]

#

VJGO Tube Version 3.1 (BETA) julkaistu täällä! Kommentteja kaivataan

Macro [22.10.2010 20:36:42]

#

lainaus:

Lista kaikista videoista löytyy täältä

Mitäpä jos Youtuben kaikki videot listattaisiin yhdellä sivulla?

ankzilla [22.10.2010 23:15:25]

#

Macro kirjoitti:

lainaus:

Lista kaikista videoista löytyy täältä

Mitäpä jos Youtuben kaikki videot listattaisiin yhdellä sivulla?

Mitä väliä, kun niitä on toistaiseksi ainakin niin vähän...

Grez [22.10.2010 23:36:30]

#

ankzilla kirjoitti:

Mitä väliä, kun niitä on toistaiseksi ainakin niin vähän...

Toisaalta olen samaa mieltä, että kun realistisia edellytyksiä ei ole tulla suosituksi videosaitiksi, niin turha panostaa liikaa sen kehittämiseen.

Mutta näin muuten kyllä mielestäni ankea perustelu, että jotain ei kannattaisi tehdä, koska tällä hetkellä sille ei ole tarvetta.

Paratiisin poika [23.10.2010 13:24:27]

#

Kun jaksan katsoa <s>ja kopioida</s> Raakalihan foorumisoftasta kuinka voi jaottaa niin, että vain tietty määrä hakutuloksia näkyy sivulla mutta toisella sivulla näkyy lisää, niin teen niin. Esim. http://vjgo.arkku.net/topic.php?id=4&page=1

Tuossa menee kivasti 2 sivulle. Lisäksi kuolema video on ladattu sivuston uploadia käyttäen. Testasin lyhyelläö videolla, joka on muuten itsetekemäni :DDDDDDDDDDDDDDDDDDDDDD Löytyy juubbbatuubasta mun tunnuksel ladattuna W8G7B ja videon nimi Kuolema.avi. Ps. tiedät etteivät html tagit toimi näiussä viesteissä...

Paratiisin poika [28.10.2010 08:24:41]

#

Haluaisin kysyä että kun admineille on tuol sivul omia juttuja. Niihin olen jättänyt jotain niinku et formit voi hajoittaa jossain kirjoittamalla niihin ">lol esim niin kannattaisiko tämä estää? Ylläpitoonhan kannattaa iana luottaa vai? Onko se totta että ylläpito on aina oikeassa? Kertokaa minulle!

Macro [28.10.2010 08:35:15]

#

Kaikki data pitää suodattaa, joka tulee käyttäjältä. Ei kehenkään voi luottaa täysin.

Paratiisin poika [28.10.2010 08:40:00]

#

Siis suojaan nuo kaikki... Ja kouluun pitäisi lähteä 09:20... En ehdi :( Yritän kuiteskin. :D Kiitos.

Edit:

Olen suojaamassa ipcheck.php tiedostoa. Se nyt näyttää tietoa VAIN jos haku sisältää pisteen (.) ja edes yhden numeron (0-9). Mutta se estää mikäli siinä on joku kirjain. En kuitenkaan teidä kuinka saisin estettyä erikoismerkit (esim. ,'*"#¤%&&/())==?(/%#&&"&""&%/&"% yms).

ipcheck.php

<?php
require("toppart.php");

if($admin) {
$ipget = $_GET["ip"];

if(isset($ipget)) {
$ipvalid1 = 0;
$ipvalid2 = 0;
$ipvalid3 = 0;
if(preg_match('/[0-9]/', $ipget)) $ipvalid1 = 1;
if(preg_match('/[.]/', $ipget)) $ipvalid2 = 1;
if(preg_match('/[A-Za-zÅÄÖåäö]/', $ipget)) $ipvalid3 = 1;

if($ipvalid1 == 0) header("Location: ipcheck");
if($ipvalid2 == 0) header("Location: ipcheck");
if($ipvalid3 != 0) header("Location: ipcheck");
if($ipvalid1 == 0 && $ipvalid2 == 1) header("Location: ipcheck");
if($ipvalid2 == 0 && $ipvalid1 == 1) header("Location: ipcheck");
  }
}

$pagename = $lang_IP_Check;
require("head.php");
if($admin) {

echo "<br>\n";
echo "<form action=\"ipcheck\" method=\"get\">\n";
echo "  <input name=\"ip\" value=\"$ipget\">\n";
echo "  <input type=\"submit\" value=\"IP\">\n</form>\n";
echo "<br>\n";

if(!isset($ipget)) {


}else {
$kysely1 = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE ip = ?");
$kysely2 = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE ip = ?");
$kysely3 = $yhteys->prepare("SELECT * FROM {$dbtable}videos_comments WHERE ip = ?");

$kysely1->execute(array($ipget));
$kysely2->execute(array($ipget));
$kysely3->execute(array($ipget));

echo "<b>$lang_Users</b>\n";
echo "<table border=1>\n  <tr>\n";
echo "    <th>$lang_Username</th><th>$lang_ip</th>\n";
echo "  </tr>\n  <tr>";

while($rivi1 = $kysely1->fetch()) {

$ipusername = $rivi1["username"];

echo "    <td>$ipusername</td><td>$ipget</td>\n";
echo "  </tr>\n  <tr>\n";
}
echo "  </tr>\n</table>\n<br>\n";
echo "<b>$lang_Videos</b>\n";
echo "<table border=1>\n  <tr>\n";
echo "    <th>$lang_Video</th><th>$lang_Adder</th><th>$lang_ip</th>\n";
echo "  </tr>\n  <tr>";
while($rivi2 = $kysely2->fetch()) {
$ipvideo = $rivi2["name"];
$ipvideoadder = $rivi2["adder"];
$ipvideoid = $rivi2["id"];

$kyselyuser = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE id = ?");
$kyselyuser->execute(array($ipvideoadder));
$riviuser = $kyselyuser->fetch();
$ipvideoadderusername = $riviuser["username"];
echo "    <td><a href=\"watch?v=$ipvideoid\">$ipvideo</a></td><td><a href=\"user/$ipvideoadderusername\">$ipvideoadderusername</a></td><td>$ipget</td>\n";
echo "  </tr>\n  <tr>\n";
}
echo "  </tr>\n</table>\n<br>\n";
echo "<b>$lang_Comments</b>\n";
echo "<table border=1>\n  <tr>\n";
echo "    <th>$lang_Video</th><th>Kommentti</th><th>$lang_Sender</th><th>$lang_Time</th><th>$lang_ip</th>\n";
echo "  </tr>\n  <tr>";
while($rivi3 = $kysely3->fetch()) {
$ipcommentvideoid = $rivi3["id"];
$ipcommentadder = $rivi3["sender"];
$ipcomment = $rivi3["comment"];
$ipcommenttime = $rivi3["time"];

$kyselyvideo = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = ?");
$kyselyvideo->execute(array($ipcommentvideoid));
$rivivideo = $kyselyvideo->fetch();
$ipcommentvideoname = $rivivideo["name"];
echo "    <td><a href=\"watch?v=$ipcommentvideoid\">$ipcommentvideoname</a></td><td>$ipcomment</td><td><a href=\"user/$ipcommentadder\">$ipcommentadder</a></td><td>$ipcommenttime</td><td>$ipget</td>\n";
echo "  </tr>\n  <tr>\n";
}
echo "  </tr>\n</table>\n";
  }
}else {
echo $lang_ThisPageIsOnlyForAdmins;
}
require("bottompart.php");
?>

Metabolix [28.10.2010 10:49:13]

#

Macro kirjoitti:

Kaikki data pitää suodattaa, joka tulee käyttäjältä. Ei kehenkään voi luottaa täysin.

Ja ennen muuta kaikki data pitää tulostaa niin, ettei se hajota mitään. Jos ei ole tarkoitus, että formilla pystyy lisäämään HTML:ää (ja yleensä sen ei pitäisi olla tarkoitus!), teksti pitää käsitellä tulostusvaiheessa niin, että se näkyy sivulla pelkkänä tekstinä.

Paratiisin poika [28.10.2010 16:42:00]

#

Minä en käytä mitään erikoismerkkejä erottimina, koska minä käytän yleensä tietokantaa kun teen softia. Paitsi jos erottimiksi lasketaan ul ta td ja tr tagit niin sitten. Mutta miten estän kaikki muut merkit paitsi numerot ja pisteen?

villev [28.10.2010 16:43:43]

#

Tee mieluummin siten, että sallit vain numerot ja pisteen ([0-9.]).

-tossu- [28.10.2010 16:58:26]

#

Paratiisin poika kirjoitti:

Se nyt näyttää tietoa VAIN jos haku sisältää pisteen (.) ja edes yhden numeron (0-9). Mutta se estää mikäli siinä on joku kirjain. En kuitenkaan teidä kuinka saisin estettyä erikoismerkit

Seuraava lauseke sallii vain numerot ja pisteen, muttei kylläkään vaadi yhtään numeroa.

^[0-9\.]+$

Sinuna käyttäisin vielä tarkempaa lauseketta, joka sallii vain neljä pistein erotettua numeroa.

^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

Blaze [28.10.2010 17:21:56]

#

Entäs IPv6?

Paratiisin poika [29.10.2010 07:22:08]

#

Miten tuon saa edes toimimaanmnn?

Macro [29.10.2010 15:01:11]

#

Minkä tuon? Tarkoitatko säännöllisiä lausekkeita? Tutki Putkan ohjeita, siellä on aika hyvä opas.

Paratiisin poika [29.10.2010 18:50:06]

#

Okei... Yritän randomilla tuota.

Paratiisin poika [30.10.2010 11:53:57]

#

Okei sain toimimaan. Kiitos :D

Paratiisin poika [05.11.2010 17:09:15]

#

Onko kellään mielipiteitä softani nykyiusistä tyyleistä? Kaivataanko jotain? LKertokaa pliis. Tarvitsen mielipitetiä!

Mizou [05.11.2010 18:00:12]

#

Ja kirjoitetun tarkistamista...

Paratiisin poika [05.11.2010 18:08:00]

#

??

Mizou [05.11.2010 18:35:50]

#

Pientä typotusta :D.

Paratiisin poika [05.11.2010 18:38:12]

#

Missä?

Macro [05.11.2010 18:58:09]

#

Paratiisin poika kirjoitti:

Missä?

Paratiisin poika kirjoitti:

Onko kellään mielipiteitä softani nykyiusistä tyyleistä? Kaivataanko jotain? LKertokaa pliis. Tarvitsen mielipitetiä!

Paratiisin poika [05.11.2010 19:00:45]

#

Höh. Tiedän kylklä. M;utta onko sivuustooni mitään liittyvää?

Blaze [05.11.2010 20:44:47]

#

Paratiisin poika kirjoitti:

Höh. Tiedän kylklä. M;utta onko sivuustooni mitään liittyvää?

Oikeesti, onkse niin vaikeeta lukee viesti ennen lähetä-napin painamista?

Noh, heitän pari rakentavaa ehdotusta: hävitä se kahen megan rajotus (jota muuten ei edes lue missään, eikä liian ison videon upattuaan saa minkäänlaista viestiä). Siihen ei saa edes musiikkibiisiä, saati sitten videota. Toisekseen: laita kaikki videot pyörimään siinä flässisoittimessas (oletan, että sun tarvii serveripäässä transkoodata ne sopivaan muotoon). Tykkään kyl kovasti download-linkeistä, mut en sillon ku ne näyttää play-napeilta.

Jokotai [05.11.2010 21:18:17]

#

Blaze kirjoitti:

Paratiisin poika kirjoitti:

Höh. Tiedän kylklä. M;utta onko sivuustooni mitään liittyvää?

Oikeesti, onkse niin vaikeeta lukee viesti ennen lähetä-napin painamista?

Niipmä on se ärsytväää kun ei eddes viestäi vaivaidu likemaam :D

Paratiisin poika [05.11.2010 21:21:51]

#

Se koon rajoitus ei ole minun vikani. En ole sitä määritellyt missään. Se on palvelimen vika. En jaksa osata korjata. Enkä myöskään tiedä miten juubbatuubba muuntaa videot swf tiedostoihin? Ihan skifii...

-tossu- [05.11.2010 21:26:49]

#

Paratiisin poika kirjoitti:

Enkä myöskään tiedä miten juubbatuubba muuntaa videot swf tiedostoihin? Ihan skifii...

Ei YouTube muunna videota swf-muotoon. Videot ovat FLV, MP4, WebM tai 3GP -tiedostoissa.

Paratiisin poika [05.11.2010 21:28:17]

#

aijaa. No en teidä miten ne niihinkään muutetaan...

Jokotai [05.11.2010 21:30:35]

#

Et vieläkään oppinut, foorumi ei ole IRC :)

Paratiisin poika [05.11.2010 21:59:44]

#

Joo ei ole, muttakun en osaa :(

Paratiisin poika [07.11.2010 00:24:04]

#

miten se tapahtuu?

-tossu- [07.11.2010 10:50:19]

#

Paratiisin poika kirjoitti:

miten se tapahtuu?

Vaikka FFmpeg-ohjelmalla, mutta ennen kuin alat tehdä mitään videon enkoodausta sivuillesi, varmista että webhotellissasi voi suorittaa ohjelmia ja että sinne on asennettu FFmpeg tai muu vastaava sovellus. En usko, että kovin moni maksullinenkaan webhotelli tukee tuollaista, saati sitten ilmainen.

Paratiisin poika [07.11.2010 11:44:26]

#

:( Tivottavasti saan toimimaan kuiteski ton tai jotnai. Eiköä se oonniasstu ophp:llä? vaikka headereiden content typellä tai jollaki?

Macro [07.11.2010 12:03:19]

#

Paratiisin poika kirjoitti:

:( Tivottavasti saan toimimaan kuiteski ton tai jotnai. Eiköä se oonniasstu ophp:llä? vaikka headereiden content typellä tai jollaki?

Opettelisit kirjoittamaan.

Paratiisin poika [07.11.2010 15:28:49]

#

Okei...

Asensin viuhkan palvelimelle tuon version 3.1 sellaisenaan jotta voin tarkasetella vikoja. Samalla tahdon tietää miten paljon uploadi vetää. Jos joku viitii niin voi testata latausta isoilla videoilla. Miten iso menee?

Userpagella linkivalikon logout ja login on sit rasittavia ku ne ei toimi :(

http://vjgo.viuhka.fi/vjgotube/


Edit:

VJGO Tube Version 4.1 (BETA) julkaistu!

Kommentteja kaivataan!

Blaze [07.11.2010 16:44:23]

#

2,7 meganen menee läpi, 8,2 meganen ei. Ei oikeen taho löytyä noin pieniä videoita testattavaks :P

Paratiisin poika [07.11.2010 16:48:18]

#

Viedoeditoreja on olemassa... en ite voi lkäyttää käyttiksen takii

Lebe80 [07.11.2010 17:03:23]

#

Mitä tekee palvelulla, johon pystyy lähettämään vain alle 3 megaisia videoita?

Paratiisin poika [07.11.2010 17:14:44]

#

en tiedä
se on kesekn. Muutan sen jotenkin ottamaan vastaan 4 h pitusiiv videoita sori typo asdf

tgunner [07.11.2010 17:15:22]

#

Lebe80 kirjoitti:

Mitä tekee palvelulla, johon pystyy lähettämään vain alle 3 megaisia videoita?

Ei mitään.

Paratiisin poika [12.11.2010 17:10:40]

#

Ei teekään. Laitan tiedoston check_working.php ja liitän sen toppart.php tiedostoon. Tuo kyseinen itiedosto tarkistaa mitkä tarvittavat funktiot toimivat ja ilmoittaa jos sovellus ei voi palvelimella pyöriä. Se myös tarkastaa jotenkin että kuinka suuria tiedostoja voidaan maksimissaan ladata palvelimelle. Jos alle jonkun tietyn määrän, kertoo tästä virheellä. Esimerkkinä :D

Paratiisin poika [15.11.2010 09:20:57]

#

Millä saisin haettua muuttujaan $usercountry tiedon siitä, missä maassa sivustolla oleva henkilö on? YouTube laittaa kielen automaattisesti. Lisäksi awlyx onnistui täyttämään typerän tietokantani typerillä tunnuksilla. Niitä on varmaan jotain 6000. Mutta nyt se hemmetin lista kaikista käyttäjistä on perhana soikoon täynnä ja tukossa :(

Metabolix [15.11.2010 11:13:28]

#

Mieleiset kielet voi säätää selaimen asetuksista, ja ne lähetetään Accept-Language-otsikossa. Kielet voi hakea suunnilleen seuraavalla koodilla:

$kielet = @$_SERVER["HTTP_ACCEPT_LANGUAGE"];
if (empty($kielet)) {
	// Tieto puuttuu, laitetaan pelkkä oletusvalinta.
	$kielet = array("fi");
} else {
	// Tunnistetaan kielivalinnat; teksti voi olla vaikka en-GB, en;q=0.8, fi;q=0.6
	$lista = array();
	foreach (explode(",", $kielet) as $kieli) {
		preg_match("/([-A-Za-z]+)(?:;q=([0-9.]+))?/", $kieli, $kieli);

		// Jos q-arvo puuttuu, se on 1.
		if (!strlen(@$kieli[2])) {
			$kieli[2] = 1;
		}

		// Lisätään kieli listalle.
		$lista[] = sprintf("%f|%s", $kieli[2], $kieli[1]);
	}

	// Järjestetään lista lukujen mukaan.
	rsort($lista, SORT_NUMERIC);

	// Otetaan listalta järjestyksessä kielet, joiden arvo on nollaa suurempi.
	$kielet = array();
	foreach ($lista as $kieli) {
		list($arvo, $kieli) = explode("|", $kieli);
		if ($arvo > 0) {
			$kielet[] = $kieli;
		}
	}

	// Lisätään oletusvaihtoehto listan loppuun.
	$kielet[] = "fi";
}

// var_dump($kielet);

Käyttäjän fyysistä sijaintia voi käyttää kielen arvaamiseen, jos mitään muuta asetusta ei ole. Muussa tapauksessa sitä ei kannata käyttää: vaikka jostain syystä olisin käymässä Venäjällä, haluaisin silti nettisivut ennemmin suomeksi kuin venäjäksi.

Paratiisin poika [15.11.2010 11:59:30]

#

Aijoin laittaa niin, että käyttäjä voi asetuksistaan valita haluamansa kielen. Jos sitä ei kuitenkaan olla määritelty (se itseasiassa tullaan määrittämään sen perusteella, että missä maassa käyttäjä on kun tunnus luodaan), niin tuolla antamallasi koodilla se haetaan. Jos taas ei olla kirjautuneena, haetaan tuolla koodilla. :D Näin http://youtu.be/ varmaankin tekee...

Lebe80 [15.11.2010 12:23:48]

#

Ehkä sinun pitäisi ensiksi jotenkin vähän tutkia, että miten hallitsisit niitä häiriköitä, ennen kuin teet yhtäkään uutta, keskinkertaisesti toimivaan ominaisuutta.

Eli alapas suunnittelemaan niitä ylläpitotyökaluja heti nyt!

Paratiisin poika [15.11.2010 12:52:53]

#

Admintyökaluja löytyy. On ip tarkastimet on käyttäjienestot on videon poistot ja kaikki. Ip osoitteiden estoa en vain vielä ole ehtinyt tehdä. Tällähetkellä värkkään ajaxilla toimivaa sisäänkirjautumissysteemiä.

http://vjgo.viuhka.fi/txt_service/test/ajax.html

Tunnus: VJGO
Salasana: jee

Ihan itse kopioin w3 sivuilta ja muokkasin. Nuo kyselyboxit hain täältä ja tuon ajax homman hain täältä ja sitten sovelsin itse hieman :D

Mod. korjasi tagit. Opettele kirjoittamaan kunnolla.

Mizou [15.11.2010 17:03:51]

#

Miten tagit saa tuollalailla pieleen? Ei sinäänsä mikään yllätys...
Aina voi viellä jälkeenpäin tarkistaa tuotoksensa.

Paratiisin poika [16.11.2010 09:11:54]

#

Kun lähetin tuon viestin en ollut kirjautuneena sisään. Olen lapin ammattiopistolla, joten en kirjautunut tuolloin sisään enkä voinut korjata kommenttieni. Anteeksi

Paratiisin poika [20.11.2010 16:02:02]

#

Osaako joku auttaa? Chromella vjgo tuben videosivun alaosan ja videon välillä on pitkä rako. IE:llä taas on vähän se infoboxi sivussa. Mikä avuksi? css koodilla en omnnistunut itse

Rickken [20.11.2010 23:08:47]

#

Itseni mielestä todella hienot sivut! Tietysti tuskin menestyy, mutta olet jaksanut pusertaa niitten kanssa aika paljon. Jos vaikka joku päivä menee ohi yötuben :D

Metabolix [21.11.2010 00:07:09]

#

Rickken kirjoitti:

Itseni mielestä todella hienot sivut!

Tuli väkisinkin mieleen tämä sarjakuva.

Paratiisin poika kirjoitti:

Mikä avuksi? css koodilla en omnnistunut itse

Eikö olisi jo vähitellen aika opetella ne moneen kertaan mainitut alkeet kunnolla ja tehdä alusta asti kunnolla suunniteltu sivupohja?

Jokotai [21.11.2010 09:55:02]

#

Oletpas sinä kettuilevalla päällä :)

miiro [21.11.2010 12:46:13]

#

Mielestäni on naurettavaa, miten Metabolix samaan aikaan poistaa hieman vinoilevia viestejä ja itse haukkuu aloittelijoita pystyyn. Mutta kaipa hän aktiivisena keskustelijana ja moderaattorina tietää, mihin suuntaan haluaa foorumin identiteettiä kehittää.

Lebe80 [21.11.2010 14:22:52]

#

Itseä ei ainakaan haittaa Metabolixin viestien sävy ja uskon, että viestit, jotka todella on poistettu, ovat olleet poistamisen arvoisia.

Metabolix [21.11.2010 17:31:16]

#

miiro: Älä sekoita viestien sävyä ja sisältöä. Eräiden herrojen "hieman vinoilevista viesteistä" ei löydy asiallista asiaa etsimälläkään, vai väitätkö, että esimerkiksi viesti "kun tämä lanka mitä tämä on minä en edes" on jollain tavalla asiallinen ja hyödyllinen?

Siltä varalta, että joku ei osannut lukea edellisen viestini asiasisältöä, kirjoitan alle vielä yksinkertaistetulla ja kirjaimellisesti tulkittavalla suomen kielellä, mitä siinä varsinaisesti luki:

Metabolix kirjoitti:

Rickken kirjoitti:

Itseni mielestä todella hienot sivut!

Paratiisin pojan sivuissa on yllin kyllin parantamisen varaa. Niitä tuskin voi pitää hienoina, jos vain itse tietää tarpeeksi nettisivujen tekemisestä.

Paratiisin poika [21.11.2010 23:30:24]

#

Rickken: Kiitoksia kommentistasi. Nosti mielialaani joka oli maassa :D

Paratiisin poika [22.11.2010 07:07:59]

#

Tuo ylempi kommentti on rickkenille. Sekoilin eilen vähän. Mutta siis sivujen ulkoinen toteutus on kesken mutta hieno. Sivusto toimii kyllä vaikkakin siinä on puutteita. Ja itseasiassa joka kerta kun julkaisen uuden version, siinä on aina jotain keskeneräistä jotta löydän intoa jatkaa softan tekemistä.

Triton [22.11.2010 16:12:33]

#

Metabolix kirjoitti:

Rickken kirjoitti:

Itseni mielestä todella hienot sivut!

Paratiisin pojan sivuissa on yllin kyllin parantamisen varaa. Niitä tuskin voi pitää hienoina, jos vain itse tietää tarpeeksi nettisivujen tekemisestä.

Mielestäni ei tarvitse tietää juuri mitään nettisivujen teosta, jotta voi sanoa, onko layout hieno vai kamala. Riittää, että on silmät päässä.

Paratiisin poika [22.11.2010 16:59:56]

#

Juuri näin. Tuo on mielestäni oikeaa puhetta. Joku random tyyppi joka osaa käynnistä koneen ja näkee vaikkapa irc-gallerian ja pitää sen ulkoasusta. Sen mielestä se on hieno vaikka olisi juuri oppinut käynnistämään sen koneen. Että eipä sitten siitä sen enempää :D

Paratiisin poika [29.11.2010 17:10:08]

#

Hmm... Tuolla on videosivulla se samankaltaisia laatikko. Mutta miten saan sen piiloon mikäli videoita ei löydy? Olen yrittänyt kaikenlaista.

Esimerkkivideo: http://vjgo.arkku.net/mediaplayer/watch?v=7378

video_result.php

<?php
$maxvideos = 10;
$maxvideosartist = 10;

$results = array(); //Ps. Voisiko joku kertoa mulle et mikä tää oikein on?
$formerids = array($id); //Pps. Sama tässä

if(strstr($name, "-")) {
    $parts = explode("-", $name, 2);
    if(preg_match("/[A-Za-z&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;]/", $parts[1])) {
        $q = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE name LIKE ?");
        $parts[0] = str_replace("%","",$parts[0]);
        $q->execute(array($parts[0]."%"));
        $i = 1;
        while($row = $q->fetch()) {
            if(!in_array($row["id"],$formerids)) {
                $results[] = $row;
                $formerids[] = $row["id"];
                $i++; if($i > $maxvideosartist) break;
            }
        }
    }
}

$keywords = array_values(preg_grep("/[A-Za-z&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;]/", explode(" ", $name)));
$keywords = str_replace("%","",$keywords);

$i = 0;
$querytext = "SELECT * FROM {$dbtable}videos";
while($i < count($keywords)) {
    if($i == 0)
        $querytext = $querytext." WHERE name LIKE ?";
    else
        $querytext = $querytext." OR name LIKE ?";
    $i++;
}
for($i = 0; $i < count($keywords); $i++) {
    $keywords[$i] = "%".$keywords[$i]."%";
}

$q = $yhteys->prepare($querytext);
$q->execute($keywords);

$i = 1;
while($row = $q->fetch()) {
    if(!in_array($row["id"],$formerids)) {
        if(!$videotrue) $videotrue = true;
        $results[] = $row;
        $i++; if($i > $maxvideos) break;
    }
}
echo "<center><small>$lang_SameKindVideos</small></center>\n";
echo "<table border=0>\n";
foreach($results as $row) {

  $videoidresult = $row["id"];
  $videonameresult = $row["name"];
  $poster = $row["image"];
  $delete = $row["deleted"];

htmlspecialchars("$videonameresult");

if($delete != 1) {
$folder = "posters";
if(empty($poster)) $folder = "images";
if(empty($poster)) $poster = "noimage.png";

    echo "  <tr>\n";
    echo "    <td colspan=\"2\"><hr></td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td><a href=\"watch?v=$videoidresult\"><img src=\"$folder/$poster\" height=\"73px\" width=\"90px\" class=\"click\"></a></td>\n";
    echo "    <td id=\"video_result\"><a href=\"watch?v=$videoidresult\">$videonameresult</a></td>\n";
    echo "  </tr>\n";
  }
}
echo "</table>\n";
?>

Metabolix [29.11.2010 17:26:26]

#

Älä yritä kaikenlaista, laita vain koko tulostusvaiheen ympärille if-lause, jossa tarkistat, että $results-taulukossa on jotain.

Paratiisin poika [29.11.2010 17:31:00]

#

Eli...

if($result) { ... }

Edit: Ei toimi. Piilottaa kokonaan :( Jopa jos tuloksia on :(((((((((

Noniin. tein ehtolauseella et jos i on suurempi kuin 1. :D

Metabolix [29.11.2010 17:49:25]

#

Paratiisin poika kirjoitti:

if($result) { ... }

Ei tietenkään toimi, kun muuttuja on oikeasti $results eikä $result. Kannattaisi laittaa PHP:n asetuksista kaikki varoitukset käyttöön ja näkyville.

Paratiisin poika [29.11.2010 18:10:53]

#

toppart.php:ssä on kommentoituna laajennettuihin varoituksiin vaaditut kohdat. Kyllästyin siihen, että esim login ei toimi kunnolla virheiden vuoksi jotka tulevat hmm................ mistä ne tulikaan... niin joo. coocieista. en muista suomenkielistä vastinetta. eiku keksit eli evästeet.

Metabolix [29.11.2010 18:23:25]

#

Paratiisin poika kirjoitti:

Kyllästyin siihen, että esim login ei toimi kunnolla virheiden vuoksi

Joten päätit piilottaa virheet sen sijaan, että korjaisit ne? Aika näppärää! Näinhän saadaan firmoissakin halvalla tehtyä täysin virheetöntä softaa!

Paratiisin poika [29.11.2010 18:31:15]

#

ööööhhh.... Miten korjataan virhe, joka tulee siitä että tarkastetaan evästeiden olemassaoloa niin, että katsotaan onko niissä mitään ja jos ei ole niin sitten tulee virhe. Ja kirjautuneenahan ei tarvii kirjautuu enään. Toisin on kun ei ole kirjautuneena. Annan koodin vielä jos joku haluaa kertoa että sen voi korjata. Ps. Koodi on nyt niin kuin mitään ei virheilmoituksille olisi tehty. Ainoastaan kommentoitu jotain sörimisiä...

toppart.php

<?php
# THIS IS HERE ONLY BECAUSE SOFTWARE IS NOT READY!
#ini_set("display_errors", 1);
#ini_set("error_reporting", E_ALL | E_STRICT);

set_time_limit("360");
setlocale(LC_TIME, "fi_FI");
setlocale(LC_TIME, "fin");

if(file_exists("settings.php"))
	require("settings.php");
else
	die("<html>\n  <head>\n    <title>VJGO Tuben asennus!</title>\n  </head>\n  <body>\nEnnen kuin voit k&auml;ytt&auml;&auml; VJGO Tube softwarea, t&auml;ytyy sinun <a href=\"install.php\"><b><i>asentaa</i></b></a> se!\n  </body>\n</html>");

try {
    $yhteys = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbuser", "$dbpassword");
} catch (PDOException $e) {
    die("<span style=\"color:red;font-weight:bold;\">VIRHE:</span>:<br>\n" . $e->getMessage());
}
$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$kyselyvideot = $yhteys->prepare("SELECT COUNT(*) FROM {$dbtable}videos WHERE deleted = ?");
$kyselyvideot->execute(array(0));
$tulos = $kyselyvideot->fetch();


$ip = $_SERVER["REMOTE_ADDR"];
$browser = $_SERVER["HTTP_USER_AGENT"];
$LastVisitedPage = getenv("HTTP_REFERER");
$md5uniqueid = md5("uniqueid");
$videocount = $tulos["COUNT(*)"];

require("functions.php");
require("languange/en/languange.php");
if($DefaultLanguangeCode != "en") {
require("languange/$DefaultLanguangeCode/languange.php");
}

$loggeg = false;
session_start();
$session_username = $_SESSION["username"];
$session_id = $_SESSION["id"];
$session_uniqueid = $_SESSION["uniqueid"];
if(isset($session_username)) $logged = true;



if(!isset($session_username)) $session_username = "Vieras";
if(!isset($session_id)) $session_id = 0;
if(!isset($session_uniqueid)) $session_uniqueid = $md5uniqueid;

$kyselytype = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username = ?");
$kyselytype->execute(array($session_username));
$rivitype = $kyselytype->fetch();
    $admincheck = $rivitype["admin"];
    $blockedcheck = $rivitype["blocked"];

$admin = false;
$blocked = false;
if($admincheck == 1) $admin = true;
if($blockedcheck == 1) $blocked = true;
?>

Macro [29.11.2010 18:32:34]

#

Oletko koskaan kuullut isset-funktiosta? Aika kätevä noihin asioihin iffin kanssa.

Paratiisin poika [29.11.2010 18:40:00]

#

aaaaaaaaaaa. joo. voin testata tuotakin :D Teen eka läksyt.

Raakaliha... Jos luet tätä, niin vinkki: Laita omaan foorumiisi laajennetut virheilmoitukset päälle. Kato mitä tapahtuu :DDDDDDDD En usko et mitään hyvää, ellet ole korjannut kaikkia pikkuvikoja. Mutta... Pikkuvikoja on helppo korjata ;)

Edit: Nyt ei mikään toimi. Oi kun kivaa. Jee jee. Mikäs vikana? Joku kattois jooko? Auttais vähän :D pliis

Edit: Jaa jaa. Nyt sain sen toimimaan hyvin :S laajennetut errorilmoitukset on käytössä. Jee!

Edit: Eih. Siis hei. Jso on sivu ja siihen on mahdolista saada action juttu. jos ei ole, niin hmm....

Sivu.php:

Jee

Sivu.php?action=2

Epäjee


Siis tuollaisia sivuja on useita minun softassani. Onko siis ihan oikeasti jotenkin tarpeellista laittaa kaikki tuollaisetkin jutut toimimaan ilman virheilmoituksia laajennettujen virheilmoitusten tilassa?

Paratiisin poika [29.11.2010 19:49:42]

#

Informoin hieman tylsyyttäni.

Laitoin watch.php filuun ominaisuuden, joka laittaa kantaan tauluun {$db_table}see uuden kohdan jos sieltä videon id:llä haettu tulos on tyhjä. Tämä sen takia että koska upload haisee niin lataan manuaalisesti ftp:llä videoita ja lisään manuaalisesti kantaan videon tietoja niin en jaksa/muista tehdä sinne katselukserrat taulukkoon niitä kolumneja. Kunhan saan uploadin tuoksumaan laitan upload ajat sinne see tauluun, muutan sen nimen ja sitten vielä... niin saan sen videon toimimaan niin, että... hmm... sen tietoja voi muuttaa. sori ajatuskatkokset :D

Edit: Haluaako joku kertoa mikä tässä on vikana? tämä on comment.php tiedosto. Laitoin sen etsimään tiedon, et onko videoo olemassa. Sitä ei ole. Vaikka se olisi niin sitä ei ole. Mikä on sotkettu tälläkertaa?

<?php
require("toppart.php");
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.php\">";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/button.php\">";


if(!isset($_GET["id"])) {
echo "<span style=\"color:red;font-weight:bold;\">$lang_GiveID!</span>\n";
exit;
}else {
$id = intval($_GET["id"]);

if($admin) {
if(isset($_GET["d"])) {
$d = intval($_GET["d"]);

$querydelete = $yhteys->prepare("DELETE FROM {$dbtable}videos_comments WHERE commentid = ?");
$querydelete->execute(array($d));
  }
}

$queryexist = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = ?");
$queryexist->execute(array($id));

$queryremoved = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = ?");
$queryremoved->execute(array($id));
$lineremoved = $queryremoved->fetch();

$removed = $lineremoved["deleted"];

if($removed == 1) {
echo "T&auml;m&auml; video on poistettu, joten siihen ei voi l&auml;hett&auml;&auml; kommentteja.";
}else {

if(!$blocked) {
if(isset($_POST["send"])) {

$id = $_POST["id"];
$send_comment = $_POST["send_comment"];

if($queryexist->fetch()) $existvideo = true;

if(!null($send_comment)) {
if($existvideo) {
$querycomment = $yhteys->prepare("INSERT INTO {$dbtable}videos_comments (sender, comment, id, ip) VALUES (?, ?, ?, ?)");
$querycomment->execute(array($session_username, $send_comment, $id, $ip));

echo "<span style=\"color:green;font-weight:bold;\">Kommentti lis&auml;tty!</span>\n";
  }
}else {
echo $lang_MessageCanNotBeEmpty;
    }
  }
}else {
echo $lang_YouAreBlockedSoYouCanNotSendComments;
  }
}

$query = $yhteys->prepare("SELECT * FROM {$dbtable}videos_comments WHERE id = ?");
$query->execute(array($id));

if($removed == 1) {
echo "T&auml;m&auml; video on poistettu, joten siihen ei voi l&auml;hett&auml;&auml; kommentteja.";
}else {

if($existvideo) {
if($logged) {
if(!$blocked) {
echo "<form name=\"input\" action=\"comment?id=$id\" method=\"post\">\n";
echo "  <textarea rows=\"4\" cols=\"25\" name=\"send_comment\"></textarea>\n";
echo "  <input type=\"hidden\" value=\"$id\" name=\"id\"><br><br>\n";
echo "  <input type=\"submit\" value=\"$lang_Send\" name=\"send\">\n";
echo "</form>\n";
  }
}else {
echo $lang_LogInToSendComments;
  }
}else {
echo "Olemattomiin videoihin ei voi postata kommentteja.";
  }
}
while($line = $query->fetch()) {
    $sender = $line["sender"];
    $comment = $line["comment"];
    $time = $line["time"];
    $commentid = $line["commentid"];

$queryuser = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username = ? ORDER BY id ASC");
$queryuser->execute(array($sender));
while($lineuser = $queryuser->fetch()) {
    $iduser = $lineuser["id"];

$comment = BBCode($comment);
echo "    <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\">\n";
echo "<table class=\"comment\">\n";
echo "  <tr>\n";
echo "    <td style=\"border-bottom:1px solid black;\"><a href=\"user/$sender\" target=\"_blank\">$sender</a> [<time>$time</time>]</td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td>\n";
}
if($admin) {
echo "<span class=\"right\"><a href=\"comment?id=$id&d=$commentid\">$lang_Remove</a></span>\n";
}
echo "$comment</td>\n";
echo "  </tr>\n";
echo "</table>\n";
echo "<br>\n";
  }
}
?>

Oon purkkavirittelijä sit... Huomannette varmaan :D

Rickken [29.11.2010 21:52:26]

#

Minulla ei mitään tuohon ylenpään, mutta voisiko joku kertoa hyvän php-editorin, jossa mielellään voisi "laukasta" sen mitä on väsertänyt koodi riveille niin kuin notepad++:ssa.

Kitos!

Paratiisin poika [30.11.2010 06:49:13]

#

Miksei se notepad++ kelpaa enään?

Paratiisin poika [30.11.2010 15:24:42]

#

Laitoin kivoja mainoksia tuonne hakusivulle. Tykkäättekö?

Metabolix [30.11.2010 15:31:10]

#

Kuka ihme tykkää mainoksista nettisivulla? O_o

tgunner [30.11.2010 16:08:16]

#

Olitko tyytyväinen Valio A+-jugurttiin?

XYZ [30.11.2010 17:25:01]

#

http://www.pnotepad.org/

Paratiisin poika [30.11.2010 17:50:31]

#

En ole maistanut kyseistä jugurttia. Hetken kuuluisuus telkassa ja pidempi feimeys maailmalla on kyllä tuntunut hyvältä.

No kuitenkin... Nuo mainoksethan voi valita ads.php tiedostoon. Tosin laitan sen käyttämään tietokantaa kun saan sen näyttämään hienolta. Sitäpaitsi poistan omalta sivultani nuo mainokset kunhan saan ne ensin toimimaan.

Paratiisin poika [01.12.2010 15:38:20]

#

Niin... Osaako joku auttaa tuon comment.php tiedoston kanssA?

Edit: Uusi koodi:

<?php
require("toppart.php");
    echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.php\">";
    echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/button.php\">";

if(!isset($_GET["id"])) {
    echo "<span style=\"color:red;font-weight:bold;\">$lang_GiveID!</span>\n";
exit;
}

  $id = intval($_GET["id"]);

/*
THIS CODE
IS FOR ADMINS
TO REMOVE
VIDEOS
*/

if($admin) {
  if(isset($_GET["d"])) {

  $d = intval($_GET["d"]);

  $querydelete = $yhteys->prepare("DELETE FROM {$dbtable}videos_comments WHERE commentid = ?");
  $querydelete->execute(array($d));
  }
}

/*
THIS CODE IS
FOR CHECKING
THAT DOES
VIDEO EXIST
AND IS IT
REMOVED
*/

  $queryvideostate = $yhteys->prepare("SELECT * FROM {$dbtable}videos WHERE id = ?");
  $queryvideostate->execute(array($id));
  $linevideostate = $queryvideostate->fetch();

  $removed = $linevideostate["deleted"];
  $video_adder_id_test = $linevideostate["sender"];

if(null($video_adder_id_test)) {
    echo "Olemattomiin videoihin ei voi l&auml;hett&auml;&auml; kommentteja.";
}

if($removed == '1') {
    echo "T&auml;m&auml; video on poistettu, joten siihen ei voi l&auml;hett&auml;&auml; kommentteja.";
exit;
}

/*
THIS IS CODE
FOR SAVING
COMMENTS TO
THE DATABASE
*/

if(isset($_POST["send"])) {
  if(!$blocked) {

  $id = $_POST["id"];
  $send_comment = $_POST["send_comment"];

if(!null($send_comment)) {

  $querycomment = $yhteys->prepare("INSERT INTO {$dbtable}videos_comments (sender, comment, id, ip) VALUES (?, ?, ?, ?)");
  $querycomment->execute(array($session_username, $send_comment, $id, $ip));

    echo "<span style=\"color:green;font-weight:bold;\">Kommentti lis&auml;tty!</span>\n";
}else {
    echo $lang_MessageCanNotBeEmpty;
  }
}else {
    echo "Oot estetty!";
  }
}

if($logged) {
  if(!$blocked) {

    echo "<form name=\"input\" action=\"comment?id=$id\" method=\"post\">\n";
    echo "  <textarea rows=\"4\" cols=\"25\" name=\"send_comment\"></textarea>\n";
    echo "  <input type=\"hidden\" value=\"$id\" name=\"id\"><br><br>\n";
    echo "  <input type=\"submit\" value=\"$lang_Send\" name=\"send\">\n";
    echo "</form>\n";
}else {
    echo "Oot estetty!";
  }
}else {
    echo $lang_LogInToSendComments;
}

/*
WRITE SENDED
COMMENTS TO
PAGE WHIT
THIS CODE
*/

  $query = $yhteys->prepare("SELECT * FROM {$dbtable}videos_comments WHERE id = ?");
  $query->execute(array($id));

while($line = $query->fetch()) {
    $sender = $line["sender"];
    $comment = $line["comment"];
    $time = $line["time"];
    $commentid = $line["commentid"];

  $queryuser = $yhteys->prepare("SELECT * FROM {$dbtable}users WHERE username = ? ORDER BY id ASC");
  $queryuser->execute(array($sender));

while($lineuser = $queryuser->fetch()) {
    $iduser = $lineuser["id"];

  $comment = BBCode($comment);
    echo "    <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\">\n";
    echo "<table class=\"comment\">\n";
    echo "  <tr>\n";
    echo "    <td style=\"border-bottom:1px solid black;\"><a href=\"user/$sender\" target=\"_blank\">$sender</a> [<time>$time</time>]</td>\n";
    echo "  </tr>\n";
    echo "  <tr>\n";
    echo "    <td>\n";
}

if($admin) {
    echo "<span class=\"right\"><a href=\"comment?id=$id&d=$commentid\">$lang_Remove</a></span>\n";
}
    echo "$comment</td>\n";
    echo "  </tr>\n";
    echo "</table>\n";
    echo "<br>\n";
}
?>

Paratiisin poika [02.12.2010 08:55:50]

#

Noniin. Sain korjattua. Vika oli siinä, että olin ahkenut kannasta sender taulua jota ei ollut. Oikea taulu olisi olut asser. :D SOri

Lebe80 [02.12.2010 09:39:23]

#

Hyvä on. Saat anteeksi.

Paratiisin poika [02.12.2010 15:15:32]

#

*naurahdus*

Clacier [04.12.2010 16:50:27]

#

yritin ladata samaa videota minkä laitoin jo youtubeen, mutta et hyväksy .wmv:tä. :(!

Paratiisin poika [05.12.2010 10:24:38]

#

Hmm.. Se sallii tietääkseni vain videomuodot otka toimivat koska en ole vielä tehnyt muunto-ominaisuutta.

Pienimuotoinen ilmoitusasia:
Ohjelmoinnin saralla joudun nykyään hakemaan tukea ainoastaan teiltä putkalaiset. En tiedä enään ketään yksityistä kaveria joka vvoisi auttaa. Nimittäin pari päivää sitten sattui juttu, jonka vuoksi Raakaliha eli
Juhko Katkaisi minuun yhteydet. Syyn voin kyllä kertoa mikäli jollakin se kiinnostaa. Mutta hän on minulle todella vihainen eikä enään ole kaverini. Tämä ei jostainsyystä kuitenkaan edes harmita minua.
Pieniuotoinen ilmoitus loppui.

Rickken [05.12.2010 23:39:35]

#

Kiinnostaa kiinnostaa, kerro ihmeessä! (ei ollut sarkasmia)

Teknkik [06.12.2010 18:08:52]

#

kerroppas mullekkin miks katkas yhteyden ;d

vehkis91 [06.12.2010 21:00:00]

#

Juu miks katkas yhteyden???

Paratiisin poika [07.12.2010 18:01:11]

#

No... Niin. En tiedä pahentaako sen kertominen asiaa, mutta... (Mod. poisti pyynnöstä noloa vuodatusta.) Tarkemmin voin kertoakin, mutta en tähän julkisesti.

RQ [07.12.2010 18:40:48]

#

8 täyttä sivua pelkkää viihdettä. *Hakee popcornia*

Paratiisin poika [07.12.2010 18:46:50]

#

Huoh... Minusta ei ole mitenkään viihteellistä että Raakalihan kanssa kävi niinkuin kävi...

Blaze [07.12.2010 18:47:01]

#

Joo, parempaa ku tosi-tv :)

Paratiisin poika [07.12.2010 18:47:53]

#

Meneeköhän tämä teidän pikku kommentointi jo0 offtopiikkiin? Tosin sain kyllä tällä samalla jutulla FB:ssä aikaan sellaset kommenttirysät että huhuhuhuuhuuhu

Kray [07.12.2010 19:20:32]

#

Kuva liittyy. (Mod. piilotti linkin, selitys ylempänä.)

Paratiisin poika [07.12.2010 19:21:30]

#

Repesin tolle ihan täysin. Mitä vaginaa?

nomic [08.12.2010 08:19:48]

#

Minusta kaikista hienointa on, että päätit kertoa julkisesti tämän asian, mikä on henkilökohtainen, johon kuuluu muita ihmisiä ja epäilen ettei toinen osapuoli arvosta varmasti tämän jälkeen sinua enää niiden rippeidenkään vertaa. Lyöt nauloja arkkuusi lisää ja samassa päätit nöyryyttää toista henkilöä. Olet kuin ohjelmointiputkan Tukiainen näin karusti sanottuna. Joskus on hyvä käyttää järkeä...

Paratiisin poika [08.12.2010 15:17:00]

#

Tiedän. Mutta siis. Antaa olla. Unohtakaa. Ette tajuu

Lebe80 [08.12.2010 15:37:57]

#

Tai sitten kaikki muut tajuavat, paitsi sinä.

ankzilla [08.12.2010 23:39:04]

#

Komppaan Lebeä.

Rickken [09.12.2010 07:46:50]

#

Oletko muuten ulkoasun tehnyt itse, nimittäin se on kyllä aika hieno.

Paratiisin poika [09.12.2010 17:51:08]

#

Olen joo. Logosta lähtien. Nappulatkin olen tehnyt. Suunnitlut ja kaikki. Tosin Raakaliha on poistanut hieman taulukkotaittoani mm. hakusivulla. Kuvat olen itse muistaakseni kaikki tehnyt, listojen kuvaa lukuunottamatta. Tosin se ei toimi juuri nyt jostain syystä. Myöskän pari kertaa nähtyjen mainosten kuvia en ole tehnyt itse kuin oman sivuni. Kuvat niihin on kopioitu jostain sieltä minne ne ovat linkittäneet.

Paratiisin poika [13.12.2010 15:43:30]

#

Tota... Onko mitään järkeä laittaa ip osoitteet tietokantaan muunneltuina? Oli joku functio joka muuttaa ne pisteettömiksi ja jotaki kymmennumerojärjestelmällä muokkaa. Kannattaako nähdä vaivaa toteuttaakseen tämä juttu?

Metabolix [13.12.2010 15:47:25]

#

Yksi asiaan liittyvä funktio ainakin on INET_ATON. Sinun tapauksessasi kuitenkin olisi viisaampaa tallentaa ne yksinkertaisesti tekstinä, kun ongelmia on jo muutenkin tarpeeksi.

Lebe80 [13.12.2010 16:14:20]

#

Patariisin poika: mitä haet takaa ip-muunnoksella? Itse en näkisi mitään järkeä lähteä muuntelemaan niinkin varmaa muotoa miksikään omaksi muodoksi.

Paratiisin poika [13.12.2010 20:09:33]

#

Eihän tuolla sivulla ole edes aukkoja+ Puutteita kyllä on. Ehkä admineille on aukkoja mutta muuten ihan hyvä softa on jooo -.-

Rickken [13.12.2010 20:45:51]

#

Mistä tuo nimi tulee VJGO? Tuolla tuo foorumi on vähän ehkä tylsän näköinen ja saisi olla sellainen yleisfoorumi mihin pääsee vain kirjautuneet.

Paratiisin poika [15.12.2010 16:48:20]

#

sinnehän voi postata vaan kirjautuneet. VJGO tulee sanoista Ville Juhani GO (eng. suom. Mene (kannustus :D)). Sivuston alkuperäinen osoite oli http://villejuhanigo.jouluserver.com/. Piti vaan keksii nopeesti joku tunnus :DD

Rickken [15.12.2010 20:13:38]

#

Ou Raiid! Kerroppas kuule vielä, että mitä aiot tulevaisuudessa tehdä VJGO:hon?

Marbo [16.12.2010 10:12:30]

#

Rickken kirjoitti:

Ou Raiid! Kerroppas kuule vielä, että mitä aiot tulevaisuudessa tehdä VJGO:hon?

Eks tiiä vai? No sehän syrjäyttää koko youtuben ja muut!

Rickken [16.12.2010 21:11:28]

#

Jaajaa pitää varmaan laitta youtubelle viestiä, että tällänen palvelu aikoo tulla ohi. Saan ison rahasumman :)

Lumpio- [17.12.2010 00:45:43]

#

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▖░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄▄░░░░░░░░░░░░░░░░░░░░░░░░░▗▀░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▗▄███▄▟█████▙▄░░▗▄░░░░▖▀▝▀▀▀▀▀▀▀▀▀▀▀░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▄▟████████████████████▙▖░░░░░░░░░░░░░░░░░░░░░░░░░░
▗▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄░▄█████████████████████████▄░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░▗▟███████████████████████████▙░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░▗▟███████████████████████████████▖░░░░░░░░░░░░░░░░░░░░░▄
▗▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▗▄██████████████████████████████████▙░░░░░░░░░░░░░░░░░▗▞▚▄
░░░░░░░░░░░░░░░░░░░░░▗▛▜█████████████████████████████████▛▟▙░░░░░░░░░░░░░░▄▝▗▟██
░░░░░░░░░░░░░░░░░░░░▗██▙▀▜████████████████████████████▀▀▚▌▜▄▌░░░░░░░░░░░▖▀▄▟██▛▀
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█▀▟██▄▄▖▝▀▜▀▀▜███████████████▛▀▜▄▞▀▙▄████░░░░░░░░▗▖▘▄███▛▘░░
████████████▜▐▌▀▛▀▀▜▗████████▙▄▄▄▄▄▖░░▀▘▝▖░░░░░░░▀▙▄▄████████▌░░░░░▗▝▚▄███▀▘░░░░
████████████▐▐▌▐██▛▟█████████████████████████████████████████▌░░░▄▀░▐███▘░░░░░░░
████████████▐▐▌█████████████████████████████████████████████▌▙░░▛░░░▐█▘░░░░░░░░░
████████████▐▐▌█████████████████████████████████████████████▙▐░░▘░░░▐█░░░░░░░░░░
████████████▐▐▌█████████████▘██████████▛████████████████████▛░▘░░░░░▐▛░░░░░░░░░▘
████████████▟▟▙▟██████████▛▘▗▐████▌█████▝▜██▌▜██████████████▌░░░░░░░▐▌░░░░░░░░░░
▗░▖▗▄▖░░░░░░░░░░░░░▐█▛████▘▗▗▛█████▝████▝░▀█▙░▝███████▛▀███▙▌░░░░░░░▐▌░░░░░░░░░▌
▙▄▖▖▖▄▄▄▄▟▙▙▄▗▟█▀▜▀░█▐███▘░▐▐▌▐▘███▗▖▀██▝▚▗▝▜░▝▝██████▗▗▐██▜▘░░░░░░░▐▌▝░░░░░░░░▌
██████████████▌▜███▌█▐██▛░░▖▟▌▖░▐██▝▄░▝▜▌▝▜▖▗▄▄░▜█████░▄▐██▐░░░░░░░░▐▌░░░░░░░░░▌
███████▜█████▌▘▜███▌▌▛██▙░░▌█▙▘░▌▜█░▜▝░░░░░░░░░░▝████▛▖▐▐█▌▝░░░░░░░░▐▌░░░░░░░░░▌
█████████████▌▀██████▌▜█▜░░▘▘▌░░▌░▜▖░░░░░░░░▄▄░░░█▜██▌▌▘▟█▘░░░░░░░░░▐▌░░░░░░░░░▌
█████████████▌▌██████░▛█▐▖░▐▐░░▙▀░░░░░░░▀▀▀▘░░░░░▐▝██▘░▟█▌░░░░░░░░░░▐▌░░░░░░░░░▌
█████████████▌▘█████▛▗▘▛░▌░▝▐░░▀▖▌░░░░░░░░░░░░░░░▝░█▙▗▟▛█▐░░░░░░░░░░▐▌░░░░░░░░░▌
█████████████▌░█████▌▐░░▜░░░▌▌░▐▚▚░░░░░░░░░░░░░░░░░█░▄▐▙▜░▜▙▖░░░░░░░▐▌░░░░░░░░░▌
█████████████▌▌██████░▘░▝░░░▐▘░▝▐▐░░░░░░░░░░░░░░░░▖▞░░░▛▐░▝▜██▙░░░░░▐▌░░░░░░░▄▝▘
█████████████▌▌██████▌░░░░░░░░░░▌▌░░░░░░░░░░░░░░░▖▙▗░░▗▗▘░░█████▄░░░▐▌░░░░░░░░░░
▛▀▀▀▘▀▀▀▀▀▀▀▀░▘▗▄▄▄▄▄▟░░░░░░░░░░▚▀▜░░░░░░░░░░░░░▞▞░░░▄▘▖░░▐███████▙▖▐▌▄░░░░░▖░░░
█████████████▌▙▐██████▙░░░░░░░░░▝▐░▚▝▙▟██▙▖░░░░▖▘░░░▗▘▘░░▗███████████▙▄░░░░░▖░░░
████████████▛▌█▐███████▖░░░░░░░░░░▖░▚░░▗▖░░░░▄▀░░░░▙▘▘░░░▟███████████████▙▄▖░░░░
█████████████▌░▐████████▖░░░░░░░░░▝▖░▙▖░░░░▄▀░░░░▐▀▗░░░░▐█████████████████████▙▄
████████████▛▘░▐█████████▖░░░░░░░░░▌▗▐░▘░▝▌░░░░▗▝░▗▘░░░░████████▟███████████████
████████████▙▖░▐███████▜▙▛▖░░░░░░░░▄░▝░░░░█▗▗░▛▘░░▟░░░░▟████████████████████████
████████████▙▌░▐████▛▚▟▀░▝▝░░░░░░░▗▌▗▚░▛░░▌░░▌▀▀▚░░▘▖░▗█████████████████████████
█████████████▌░▟████▟▛▚░▗▘░░░░░░░░▌▄▀▟▗░▐▗▘░▗▘░░██▖░░▘▟█████████████████████████

Lebe80 [17.12.2010 08:10:41]

#

Rickken kirjoitti:

Jaajaa pitää varmaan laitta youtubelle viestiä, että tällänen palvelu aikoo tulla ohi. Saan ison rahasumman :)

Kuka sen maksaa?

Ja muutenkin VJGO:n dissaaminen on niin viime syksyä.

Vitsi osuikin nilkkaasi, pippeli.

Rickken [17.12.2010 22:00:40]

#

Tarkoitukseni ei kyllä ollut pilkata VJGO:ta vaan heittää vain pientä huumoria.

Paratiisin poika [19.12.2010 19:55:40]

#

ööö. Mitä ihmettä. Olen poissa koneelta abouttiarallaa 3-4 päivää ja täällä on tällästä tekstii... Huh huh...

Paratiisin poika [21.12.2010 22:21:51]

#

Millä ohjelmalla saisin sen videoiden muodon automaattisen muunnon onnistumaan? Entä miten saan toimimaan kokorajoituksen ylittävät tiedostot palvelimelle? Entä kannattaako sille tehdä jotain, että sallitusta 100% levytilasta olen käyttänyt 1926.15%? xD

Jokotai [21.12.2010 22:31:01]

#

Riippuu käyttäjäehdoista. Todennäköisesti sinulle tullaan ilmoittamaan seurauksista ja ehdoista. Voit menettää käyttäjän, tiedostoja poistetaan yms.

Latska [22.12.2010 09:02:21]

#

Tuommoisessa tapauksessa kannattaa luultavasti ottaa itse yhteyttä palvelun ylläpitoon ja kertoa, että pääs käymään tämmönen pikku vahinko levytilan kanssa. Selviät varmaan huomattavasti helpommalla noin.

Rickken [24.12.2010 16:39:04]

#

Montako videota siellä on, kun tuntuu vain, että sinne on tungettu roskaa.

Paratiisin poika [27.12.2010 17:38:32]

#

Siellä on mm. Mobile Partner ohjelman huonosti suomennettu versio, videot, jotka näkyy sivulla + pari pornoclippiä (Eivät näy ku oon poistanu) ja yks koiravideo josta pidettiin mutta joka poistettiin videon kuvanneen henkilön pyynnöstä. Lisäksi VJGO Tubesta on 3 tai 4 eri versiota zip paketeissa ja zipattuna Security Threat joku virus. Nämä varmastikin vievät eniten tilaa. Tosin heti kun pääsen Jyväskylään omalle koneelleni niin kopioin tuon Mobile Partnerin omalle koneelleni ja poistan sen palvelimelta. Lisäksi alan miettimään ratkaisua että saisinko videot ja tiedostot lataukseet osiosta jollekin toiselle palvelimelle.

Niin joo. Siellä on mys Digikuvaustunnilla ottamiani kuvia ja sitten päälle 200 tai päälle 500 kuvaa kamerastani tallessa :D Pitäs varmaan poistella vähän...

Paratiisin poika [28.12.2010 13:37:37]

#

Selevä. Mites saan tiedon että katsotaanko sivua puhelimella ja jos katsotaan niin mikä malli? Katsoin kosketusnäyttöpuhelimella ja töskeen näköinen oli. En googlella löytänyt mitään toimivaa. mediawikin mobileskin laajennuskaan ei auttanut minua.

-tossu- [28.12.2010 14:06:33]

#

Paratiisin poika kirjoitti:

Mites saan tiedon että katsotaanko sivua puhelimella ja jos katsotaan niin mikä malli?

Palvelinpuolella voit katsoa, mikä on selaimen user agent ja päättää sen mukaan onko kyseessä mobiiliselain vai ei. CSS:ssä on @media-sääntö, jolla voi asettaa eri tyylit kännykälle.

Paratiisin poika kirjoitti:

Katsoin kosketusnäyttöpuhelimella ja töskeen näköinen oli.

Ainakin Opera mobile näyttää lähes kaikki sivut, myös sellaiset joita ei ole erityisemmin suunniteltu puhelimelle, ihan hyvin. En tiedä, mistä sivusta on kyse, mutta luulen, että syy on sinun purkkakoodissasi.

Paratiisin poika kirjoitti:

mediawikin mobileskin laajennuskaan ei auttanut minua.

Koitatko nyt saada MediaWikiä vai jotain omaa sivuasi toimimaan puhelimella? Kyllä minun puhelimeni näyttää MediaWikit ihan hyvin.

Paratiisin poika [28.12.2010 18:06:27]

#

yritin kopioida mediawikin puhelinlaajennoksen koodia. -.-

koko sivusto on puhelimella ihan hanurista. miten siis saan sen user agendin auttaan? en löytäny mitään ku katoin.

ja tuo ei ole purkkakoodia!!!
kerron vielä että putkaki näkyy huonosti. -.-

Beuling [28.12.2010 18:19:09]

#

Moni sivu ei ole edes suunniteltu kännyköihin, vaan ihan tietokoneeseen. Jospa tämä auttaisi miksi Ohjelmointiputka näkyy huonosti.

Ja yleensä jos on mobiiliversio, sillä on erikseen osoite, esim. http://m.google.fi/

Grez [28.12.2010 18:23:14]

#

Paratiisin poika kirjoitti:

ja tuo ei ole purkkakoodia!!!
kerron vielä että putkaki näkyy huonosti. -.-

Kyllä mun puhelimella putka näkyy ihan hienosti. Ehkä kyse on sitten puhelimesi selaimessa olevasta purkkakoodista. Kokeilin vieläpä sekä iOS että Android puhelimella.

Myös toi VJGO tube näytti puhelimella ihan yhtä huonolta tai hyvältä kuin tietokoneen selaimella.

Paratiisin poika [29.12.2010 12:43:45]

#

Selevä. Etusivu putkassa on rumasti aseteltu kun menin puhelimella. Samoin jotkut muutkin sivut, joita en tosin nyt muista. Minun sivuillani ei toimi m.vjgo.arkku.net/mediaplayer/. Millä koodilla saan selville että onko käytössä puhelin vaiko ei? Nimittäin koska en jaksa/osaa/jaksa pyytää mummia maksamaan lisää siirron vuoksi, niin saa domainiani arkku.net:in sivuille. Ja sitäpaitsi myöskin txt service oli aivan hirveen näkönen. Ja koska esim vaikka puhelimestani loppuisi saldo niin pääsen Wi-Fi verkkoon, joten voin sen avulla lähetellä viestejä. En nimittäin usko että kaikki palvelua tarvitsevat pääsevät koneelle juuri silloin kun olisi tarvetta. Ja koska pyrin tekemään käyttäjäystävällisiä sivuja, teen ne myös mobiililaitteille.

Blaze [29.12.2010 12:52:10]

#

Paratiisin poika kirjoitti:

Etusivu putkassa on rumasti aseteltu kun menin puhelimella.

Ei minusta, ei se sun VJGO Tubekaan (Opera Mini 5/N95).

Grez [29.12.2010 12:59:39]

#

No, jos et aio noin tuhannelle erilaiselle mobiililaitteelle kullekin erikseen tehdä, niin yksinkertainen nyrkkisääntö on vaan tehdä standardien mukaista tavaraa. Jos jokin yksittäinen mobiililaite ei sitä osaa näyttää oikein, niin se on sen mobiililaitteen omistajan ongelma. Tietenkin jos on isosta ja kaupallisesti merkittävästä palvelusta merkitys, voi olla perusteltua pitää rikkinäistenkin kalujen omistajat tyytyväisinä ja optimoida kaikille vähänkin merkittäville erikseen.

Mielestäni toi vjgo-tube näyttää tietokoneella ihan yhtä huonolta kuin kosketusnäyttöpuhelimella

Sinänsä jos kuitenkin haluat säätää niin koodissa vaan tarkistat mitä $_SERVER['HTTP_USER_AGENT'] sisältää, ja toimit sen mukaan.

Paratiisin poika [29.12.2010 13:55:18]

#

Tahdon että sivuni toimivat. Heti kun saan näyttämään sivuni puhelimillla fiksulta, niin keksin miten saan videot näkymään puhelimilla. Mitäs siellä HTTP $ user agent jutusssa tulee puhelimella? Täällä keskellä ei mitään ei ole oikein Wi-Fi yhteyspistteitä, joten en voi katsoa. :(

Ps. videonkatsomissivu näytti mun puhelimella samalta kuin XP näytti sen Explorerilla. Versio ei ollut IE 9.

Grez [29.12.2010 15:23:25]

#

Paratiisin poika kirjoitti:

Mitäs siellä HTTP $ user agent jutusssa tulee puhelimella?

No, mistäs me sen voisimme tietää miltä se sinun puhelimellasi näyttää, kun et mielestäni ole kertonut puhelimesi mallia.

Itselläni tulee seuraavaa:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; fi-fi) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

Ja ei se mikään ihme ole, jos sivusi näyttää huonolta IE 3:lla.

Blaze [29.12.2010 16:27:34]

#

Paratiisin poika kirjoitti:

Heti kun saan näyttämään sivuni puhelimillla fiksulta, niin keksin miten saan videot näkymään puhelimilla.

Keksisit ensin, miten ne saa näkyviin tietokoneella. En laske lataamisen tarjoamista (joka kyllä on hyödyllinen ominaisuus sinänsä) näkymiseksi.

Mika9 [29.12.2010 16:40:24]

#

Blaze kirjoitti:

Keksisit ensin, miten ne saa näkyviin tietokoneella.

Tästä pieni vinkki:
Opera tarjoaa Mobile 10-nettiselaintaan myös PC-raudalle käännettynä. Ohjelmalla on helppoa testata sivujen sovittamista pienelle ruudulle, ja hieman suuntaa antavasti toimivuutta kosketusnäytön kanssa.

Paratiisin poika [30.12.2010 19:47:26]

#

Hmm... Tuo ei tuo operan juttu toimi niinku pitäis. Sivut äkyy nimittäin kunnolla kaikilla säädöillä........... Pyh.

Paratiisin poika [01.01.2011 09:37:40]

#

Tietääkö joku mitään videoplayeriä nettisivuille joka toimii puhelimella, vai onko joku osoitteen alku, joka käynnistää videosoittimessa videon, joka on määritelty jotain:// merkkien jälkeen url osoitteena. Esim videostart://vjgo.arkku.net/mediaplayer/videos/joku.mp3. Onnistuuko tuo vai tarvitseeko hankkia joku sivulla toimiva soitin?

Ps. Puhelimeni malli on Samsung S5620 ja siinä on selain nimeltä Samsung Dolfin Browser v1.5.

Grez [01.01.2011 11:34:48]

#

Paratiisin poika kirjoitti:

Hmm... Tuo ei tuo operan juttu toimi niinku pitäis. Sivut äkyy nimittäin kunnolla kaikilla säädöillä........... Pyh.

Eikös se juri silloin toimi niin kuin pitäisi. Olettaisin, että puhelimessasi ei ole Operan selain.

-tossu- [01.01.2011 13:24:02]

#

Paratiisin poika kirjoitti:

Tietääkö joku mitään videoplayeriä nettisivuille joka toimii puhelimella, vai onko joku osoitteen alku, joka käynnistää videosoittimessa videon, joka on määritelty jotain:// merkkien jälkeen url osoitteena. Esim videostart://vjgo.arkku.net/mediaplayer/videos/joku.mp3. Onnistuuko tuo vai tarvitseeko hankkia joku sivulla toimiva soitin?

Ainakin minun puhelimeni eli Nokia C6, jossa on Opera Mobile, avaa videotiedostot automaattisesti RealPlayerillä ilmeisesti Content-Typen mukaan. Eihän tuota skeemaa voi mihinkään muuttaa http:stä. Eihän se puhelin voi muuten tietää, millä protokollalla tiedosto haetaan. Toki voi olla jokin skeema, joka tarkoittaa "hae tiedosto HTTP:llä ja avaa se mediasoittimella", mutta se lienisi sitten jonkin valmistajan oma viritys.

Paratiisin poika [01.01.2011 13:28:16]

#

Puhelimen selaimen kerroin ylempänä. Mun puhelin ei toista flashia tuol. Asetukset on ok. YouTube avaa mobiililla johonki outoon rwz tyyppiseen osoitteeseen muistaakseni.

-tossu- [01.01.2011 13:44:37]

#

Paratiisin poika kirjoitti:

YouTube avaa mobiililla johonki outoon rwz tyyppiseen osoitteeseen muistaakseni.

Tarkistin juuri, että mobiili-YouTube (m.youtube.com) käyttää RTSP-protokollaa. Jos m.youtube.com toimii sinun puhelimellasi, niin voisit tietysti alkaa käyttää RTSP:tä VJGO Tubessa. RTSP-protokolla vaatii luonnollisesti RTSP-palvelimen, enkä usko, että ainakaan arkku.net:illä sellaista on.

Paratiisin poika [02.01.2011 12:12:46]

#

Selevä. Pyytäisin kaikkia joilla on puhelimessa kuukausimaksullinen yms muu halpa netti niin katsomaan sivua http://vjgo.arkku.net/aa_machine_info ja kertomaan mitä tuloksia tulee. Ip osoitettta ei tarvitse antaa (en usko että kovin moni antaa vaikka pitäisi). https on aina off, koska palvelin ei salli sitä. Se mitä lähdekoodi jutulla löytyy niin se hakee ihan oikeasti sen tiedoston sillllä header get file funktio jutuilla. Tarvitsisin etupäässä tiedot kohdista Selaimen ja käyttöjärjestelmän tiedot ja Tämänhetkinen maakoodi. Kertokaa myös maa ja kaupunki jossa olitte kun latasitte tuon sivun, jotta saan tietää miten tuo maan/kielen hakujuttu toimii oikein. Tuon tiedoston käyttämät $_SERVER jutut on enimmäkseen kopioitu ulkomuistista php.net:in sivuilta. Tein tiedoston aluksi puhelimella. Muuten se oli samanlainen, mutta lähdekoodia eikä muitakaan if(isset($_GET[""])) jutuilla oltu laitettu. Myöskään nykyistä kellonaikaa ei ollut. Oli IP, HTTP_LANGUAGE_ACCEPT, tiedot selaimesta ja käyttiksestä ja onko https päällä. Tuo ei vain anna jostain syystä mitään tuloksia jos hakisin tuloksen suoraan muuttujasta $https (katso tiedoston lähdekoodista). Voisiko joku kertoa että kun ?serverinfo pätkä on osoitteen perässä niin onko siinä jotain tietoturvariskiä? Siis sillä että se tulostaa tietoa palvelimesta. Älkää haxiko pliis. En ees voi kopioida. Okei voin kopioida tiedostot itelle turvaan. Täällä se vain veisi pari päivää varmaan...

trilog [02.01.2011 12:22:59]

#

http://vjgo.arkku.net/aa_machine_info:

** Perustuu palveluntarjoajalta saatuihin sijaintitietoihin

Ei perustu. HTTP_ACCEPT_LANGUAGE perustuu ihan siihen, mitä käyttäjä itse haluaa. Suomessa fyysisesti oleva käyttäjä voi käyttää vaikka venäjänkielistä selainta ja päättää, että haluaa sivut mandariinikiinaksi.

-tossu- [02.01.2011 14:37:19]

#

Paratiisin poika kirjoitti:

Pyytäisin kaikkia joilla on puhelimessa kuukausimaksullinen yms muu halpa netti niin katsomaan sivua http://vjgo.arkku.net/aa_machine_info ja kertomaan mitä tuloksia tulee.

Selaimen ja käyttöjärjestelmän tiedot:
Opera/9.80 (S60; SymbOS; Opera Mobi/1178; U; fi) Presto/2.5.28 Version/10.1

IP-osoite: 91.153.55.123

Selaimen kieli: fi-FI,fi;q=0.9,en;q=0.8

Laitteella(si) toimivat tiedostotyypit tai tiedoston tyyppitiedot: **
text/html, application/xml;q=0.9, application/xhtml+xml, multipart/mixed, application/vnd.wap.multipart.mixed, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

Mizou [02.01.2011 15:08:56]

#

Selaimen ja käyttöjärjestelmän tiedot:
Mozilla/5.0 (Linux; U; Android 2.2.1; fi-fi; GT-I9000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Selaimen kieli: fi-FI, en-US

https: off

Laitteella(si) toimivat tiedostotyypit tai tiedoston tyyppitiedot: **
application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Mika9 [02.01.2011 15:37:07]

#

Mozilla/5.0 (Linux; Android 2.1-update1; fi-fi; ZTE-BLADE Build/ERE27) AppleWebKit/530.17(KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

http://vjgo.arkku.net/aa_machine_info:

* Aikavyöhykkeeksi on määritelty UTC. Emme ole varmoja että mistä aika on haettu.
** En tiedä kumpi.

1. Palvelimen kellosta.
2. Ei kumpikaan. Kuten php.net kertoo: $_SERVER["HTTP_ACCEPT"] palauttaa selaimen pyynnössä lähettämät sallittavat tiedostomuodot.

Paratiisin poika [02.01.2011 20:14:32]

#

Kiitoksia kaikille. Erityisesti Mika9 joka kertoi totuudet noihin :D Mutta siis kun tuo lähettää sallitut muodot niin onko ne just nuo jotka hyväksytään? Ei muita. Esim jonku mobile selaimel ei toimi example. svg kuvat (katoin jonkun ensimmäisenä kohalle tulleen tiedot)?

-tossu- [02.01.2011 20:26:38]

#

Paratiisin poika kirjoitti:

Mutta siis kun tuo lähettää sallitut muodot niin onko ne just nuo jotka hyväksytään? Ei muita. Esim jonku mobile selaimel ei toimi example. svg kuvat (katoin jonkun ensimmäisenä kohalle tulleen tiedot)?

Minulla tuo Accept-haederi on tietokoneen Operalla:

text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

Ei siinäkään näytä SVG:tä olevan, vaikka selain sitä tukeekin. Sen sijaan lopussa on */*, joka tarkoittaa, että kaikki käy, mutta sen yhteydessä on myös alhainen q-asetus, joka tarkoittaa, ettei selain mielellään ota kyseistä tyyppiä olevaa dataa.

Paratiisin poika [04.01.2011 10:06:12]

#

Hmm.. Aika jännää. Mie ajattelin tehdä nuo sivuni sitten ihan kunnolla w3schools.org:in ohjeidsen mukaan wap kielellä. Heti kun saan edes purkkaviritelmällä selville että kuinka saan php:n kertomaan että onko laite puhelin vaiko ei.

-tossu- [04.01.2011 14:59:18]

#

Paratiisin poika kirjoitti:

Mie ajattelin tehdä nuo sivuni sitten ihan kunnolla w3schools.org:in ohjeidsen mukaan wap kielellä.

WAP on protokolla, mutta tarkoittanet WAP-kielellä WML-kieltä. Se on kuitenkin niin ikivanha tekniikka, etten tekisi sillä enään mitään uutta sivustoa. Kaikki uudet puhelimet varmasti tukevat ihan normaaleja XHTML-sivuja ja näyttävät ne hyvin, jos niitä edes hieman optimoi puhelimelle.

Paratiisin poika kirjoitti:

Heti kun saan edes purkkaviritelmällä selville että kuinka saan php:n kertomaan että onko laite puhelin vaiko ei.

Tee mobiiliversiolle oma osoite esim. m.sivunnimi.fi tai tee tuo valinta edes manuaaliseksi. Ainakin minun puhelimeni näyttää tavalliset nettisivut ihan hyvin, enkä välttämättä halua mitään mobiiliversiota, josta puuttuu puolet sisällöstä.

Paratiisin poika [04.01.2011 23:36:08]

#

testaa mennä suomi24 tai legon sivuille mobiililla. että sillain. enkä saa tuota domainiani ohjattua minnekään järkevästi niin m.vjgo.net ei toimi.

Blaze [04.01.2011 23:39:20]

#

Paratiisin poika kirjoitti:

testaa mennä suomi24 tai legon sivuille mobiililla.

Noista nyt ei varmaan kannata kummastakaan ottaa mallia...

-tossu- [04.01.2011 23:57:28]

#

Paratiisin poika kirjoitti:

testaa mennä suomi24 tai legon sivuille mobiililla. että sillain.

Kyllä noita molepia sivuja pystyy käyttämään Opera Mobilella, mutta eivät ne siinä kovin hyvin toimi. Suomi24 ei kyllä näytä hyvältä selaimessakaan, jossa on AdBlock ja NoScript, puhumattakaan mobiiliselaimesta, johon en ole jaksanut virittää AdBlockia, ja johon ei saa NoScriptiä.

Paratiisin poika kirjoitti:

enkä saa tuota domainiani ohjattua minnekään järkevästi niin m.vjgo.net ei toimi.

Mitä jos laitat sen mobiiliversion vaikka osoitteeseen vjgo.net/m ?

Paratiisin poika [05.01.2011 15:33:06]

#

Esimerkiksi laitoin textiviestipalveluuni linkin osoitteeseen ./mobile/. Siellä ei nyt juuri ole mitään. Voihan sen noinkin tehdä, vaikka rumaa onkin.

ps. touch.facebook.com pöytäkoneella/läppärillä ;)

Paratiisin poika [09.01.2011 10:35:17]

#

Voisitteko pyrkiä etsimään tuolta tietoturva-aukkoja? Selostan hieman mitä erikoisuuksia olen värkännyt tuonne.

comment.php:n pitäisi estää viestien lähettäminen poistettuihin ja olemattomiin videoihin.

Siinä ne olivatkin... Yrittäkääs murtaa mutta pliis
lkää tuhotko sivua koska en pysty ottamaan kunnollisia varmuuskopioita -.-

punppis [10.01.2011 09:06:18]

#

Voi veljet :D

Rickken [10.01.2011 20:52:11]

#

Tota eikös ole aika vähän, jos olet perustamassa videopalvelua niin vain 50mt tilaa saa arkku.netistä.

P.S Toivottavasti saat tekstiviesti hommelin valmiiksi.

awly [10.01.2011 21:27:52]

#

Keskustelu osiossa vieläkin tämä ikivanha xss aukko, josta kerroin jo JJP :n aikoina.

Blaze [10.01.2011 21:31:59]

#

Rickken kirjoitti:

Tota eikös ole aika vähän, jos olet perustamassa videopalvelua niin vain 50mt tilaa

No joku viisminuuttinen musiikkivideo Youtuben huonolla laadulla (360p) vie sen 20 megaa, et, ehkä niitä pari mahduttaa :)

Paratiisin poika [11.01.2011 19:58:25]

#

Awly: Tiedän sen. Se minua onkin hieman huolestuttanut. Voitko laittaa tiedot miten tuo aukko murretaan sähköpostiini, koska en usko että täällä julkisena ollessaan se tietäisi mitään hyvää. JJP kaatui ja kun se oli vielä en onnistunut löytämään infoa kuinka mursit sen. E-mail on vjgo@vjgo.net

Rickken: Minulla on tällä nykyisellä koneella xampp. Vieläkun saisin sen näkymään kaiissa internetillisissä laitteissa joilla voi selata sitä nettiä niin varmaankin laitan tuon videopalvelun tälle koneelle. Vaikka onkin läppäri niin tällä tilaa rajoittaa vain se miten paljon sitä on koneen sisällä. Ja tälle voin määrittää kaikki sallitut functiot ja muuta mukavaa. Domainikin toimisi sitten VJGO Tubelle. Ja sitten tuosta TXT Servicestä. Sehän toimii ja on toiminut jo vaikka kuinka kauan. Siellä on tietääkseni ainoana ongelmana tällähetkellä huonosti suunniteltu TLS salauksen päälläolo varmistus ja määrittelyt. :D

Ja sitten huomasin muuten että tämän koneen tehot ovat parantuneet viimekertaisesta isosta kopiointikerrasta. Olen siis nyt kopsannut kaikki filut tälle koneelle.

esalaka [11.01.2011 20:25:54]

#

Paratiisin poika kirjoitti:

Rickken: Minulla on tällä nykyisellä koneella xampp. Vieläkun saisin sen näkymään kaiissa internetillisissä laitteissa joilla voi selata sitä nettiä niin varmaankin laitan tuon videopalvelun tälle koneelle.

Oletko, öö, koittanut esimerkiksi avata portteja?

-tossu- [11.01.2011 20:36:05]

#

esalaka kirjoitti:

Oletko, öö, koittanut esimerkiksi avata portteja?

Paratiisin poika varmaan tarkoitti, että sivu pitäisi saada näkymään kunnolla kaikilla laitteilla kuten kännyköillä jne. Ainakin hän on kysellyt ohjeita siihen, miten VJGO Tuben saisi toimimaan kännykässä.

Rickken [11.01.2011 21:10:07]

#

Aika tyhmää sinänsä tehdä joku sms_service, jos sitä ei mainosta ollenkaan pääsivulla. Kuinkakohan moni sinne on löytänyt.

Paratiisin poika [12.01.2011 15:28:25]

#

Voisin mainostaa kaikkia noita VJGO:n ylläpitämiä sivustoja kyllä joo. Tai no mikäli siis (tää on mun oma veikkaus) joku putkalaisista ei olisi menny kertoon et mulla on viiruksii jaosa tuol servul. En ees tienny sen olevan kiellettyy. Mut ne poistaa eston tuolta mun sivulta mikäli lupaan välittömästi sen jälkeen poistaa ko. latauksen ja tiedoston sivulta. :D KKyllä se mulle käy muttaku ei toi näytä aukeavan jostainsyystä.

Ja siirrän siis tuon VJGO Tuben kun saan koodit arkku.net:in omasta osastani omalle palvelimelle. Ongelma on se, että nuo mun sivut ei näy. Huomatkaa tässä vaiheessa jo että url http://vjgo.net/ ohjaa osoitteeseen http://www.vjgo.net/ ja sitten vielä se että tuon www alku on määritelty ip osoitteeseen 127.0.0.1. :D

Mutta siis. Otin aamulla kuvia xampp siltä oletuskansiolta joka näkyy netis mm. localhost osoitteesta ihan tolleen. Ja sit otin kuvii dossista ku laitoin käskyjä siihen.

Kuvia

Ps. Kertokaa mielipiteenne VJGO:n ylläpitämän TXT Servicen vastuuvapauslausekkeesta!

Pps. Riccen... Se on TXT Service. Ei SMS Service. -.-

Tässäku vielä pystyn muokkaamaan tätä viestii niin kysyn että tiedättekö mitä fonttityyppejä kannattaa käyttää esim vaikka VJGO Tubessa tai TXT Servicessä ja mitä kannattaa käyttää heti kättelyssä kun aloittaa uuden softan tyylien tekemisen? tein TXT Service palveluun filun jolla voi testata fontteja. Tosin en jaksanut tehdä mitään speccuu nii et ton voi murtaa kirjoittamalla osoitteen perään ?style=</style>Tämä teksti näkyy nettisivulla HAHAHAHAjee oon prohacker!!!

Fontin testaus osoite: http://vjgo.viuhka.fi/txt_service/font_type.php?style=span.font { font-variant: small-caps; }

Lebe80 [12.01.2011 21:39:16]

#

Tää nyt on ihan turhaa edes vastata, kun et oikeasti edes lue näitä sulle kirjotettuja viestejä, mutta...

Vastuuvapauslausekkeissa on kohtia, jotka ei oikeasti tarkoita mitään, tai tarkoittavat juuri päinvastaista, mitä siinä pitäisi lukea. Miksi, esim. et ota vastuuta siitä, että palvelusi toimii tulevaisuudessa, kun mielestäni sinun nimenomaan pitäis olla ottamatta vastuuta, että se mahdollisesti EI toimi tulevilla selaimilla.

Samoin ilmoitat, että sinulla on oikeus poistaa viestejä palvelusta, mutta heti seuraavaksi ilmoitat että sinulla on oikeus olla poistamatta viestejä.

Et ota vastuuta vastata asiakaspalvelunumeroon (?) "virka-aikoina". Lisäksi ilmoitat, ettet vastaa siihen muutenkaan.

Eli eikö tossa vois ihan hyvin lukea: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

En myöskään luota tippaakaan sivustosi tietoturvaan, joten antamasi vastuuvapauslausekekaan tuskin auttaa asiaan.

Tiedän, että olet vasta nuori poika, mutta silti tuntuu, että oikeasti voit joutua pieneen liriinkin "palveluillasi". Olet sivustosi omistaja, ja jos oikeasti jaat viruksia/mahdollistat viruksien jaon siellä, niin saatat oikeasti joutua siitä vastuuseen, olit kirjoittanut "vastuuvapauslausekkeen" tai et. Sivustosi ei ole mikään YouTube, jossa taas oikeasti valvotaan palveluun ladattavaa materiaalia 24h/vrk.


Ja fonteista:
Jos joku haluaa testata "fontteja", tai tässä tapauksessa yleensäkin css-tyylejä, niin eiköhän silloin helpointa ole esim. testata sitä Firebugin kaltaisilla selainlaajennuksilla.

Metabolix [12.01.2011 21:51:25]

#

Paratiisin poika kirjoitti:

Tosin en jaksanut tehdä mitään speccuu nii et ton voi murtaa kirjoittamalla osoitteen perään ?style=</style>

Kannattaisi tosiaan opetella ohjelmoimaan ennen pienenkään sivuston julkaisua, ettei tarvitsisi jatkuvasti tehdä näitä XSS-aukkoja. "En jaksanut" on aika huono perustelu sille, että tekee aukon, jonka kautta hakkeri voi kaivaa käyttäjien tunnistetietoja. Ei todellakaan ole suuri vaiva käyttää yhtä vaivaista htmlspecialchars-funktiota.

Paratiisin poika [13.01.2011 04:05:37]

#

Hmm... Tuon vatuuvapauslausekkeen tarkoitus on se, että mikäli en ehdi tai on joku muu syy sille etten pysty laittamaan sivustoa tomimaan uusille selaimille, niin ei voida haastaa minua siitä oikeuteen.

Ja en oikeastaan jaka selittää muita koska en on tyyliin että saan tehdä mitä huvittaa tuolla. Noista huolimatta pyrin vastaamaan VJGO:n asiakaspalvelunumeroon ja ilmoitan kyllä muutoksista lähes aina (en esim. silloin ku korjaan vaikkapa ohjeista viestin lähetyksen neuvomiskohdasta jonkun typon). Ja voin kai mä tässä kello 4 korjata yhen pikku aukon kaiketi. Eipä oo muutakaan. Tai no pitäshän toi TeleWell.gateway optimoida fiksummin... :D Paljon hommaa paljon aikaa ja nälkä. -.-

Lebe80 [13.01.2011 08:37:10]

#

Paratiisin poika: Miksi jenkkiläksi oikein luulet Suomea? Amerikassa on hieman erilainen lainsäädäntö (itse asiasssa siellä sisäisestikin se vaihtelee suuresti).

Paratiisin poika [13.01.2011 10:46:33]

#

En tiedä. Olin ehkä vähän sekaisin taas tuossa yöllä. Älkää kysykö miks....

Deffi [13.01.2011 11:40:18]

#

Paratiisin poika kirjoitti:

En tiedä. Olin ehkä vähän sekaisin taas tuossa yöllä. Älkää kysykö miks....

Miks?

Paratiisin poika [14.01.2011 12:10:12]

#

Koska olin tuolloi väsynyt ja nukkunut liian vähän.

voisitteko kertoa niitä fonttien nimiä?

Blaze [14.01.2011 12:43:06]

#

sans-serif on aina varma valinta.

Macro [14.01.2011 14:43:32]

#

Paratiisin poika kirjoitti:

Ps. Kertokaa mielipiteenne VJGO:n ylläpitämän TXT Servicen vastuuvapauslausekkeesta!

Pisteitä ("."), viivoja ("-") ja pilkkuja (",") puuttuu tekstistä aika paljon. Ja kuten Lebe80 sano, on se aika ristiriitaista tekstiä jossain määrin. Hirveästi toistoa sanalle "VJGO". Ne voi jättää joissain kohdin pois, eikä tarvitse toistaa kymmentä kertaa "VJGO ei ota vastuuta siitä ja siitä" tai "VJGO pidättää oikeuden siihen ja siihen".

Rivitystä ei tarvitse joka lauseen jälkeen tehdä itse, vaan se hoituu automaattisesti. Fontin voisi vaihtaa, aika epäselvää luettavaa.

punppis [14.01.2011 15:06:38]

#

Paratiisin poika kirjoitti:

mikäli en ehdi tai on joku muu syy sille etten pysty laittamaan sivustoa tomimaan uusille selaimille, niin ei voida haastaa minua siitä oikeuteen

joo'o...

Paratiisin poika [14.01.2011 22:08:13]

#

Osaisiko joku pilkuttaa tekstin mulle? vihaan pilkkuja. ja vaihdan tekstin fontin huomenna. pääsen silloin taas koneelle. puhelimes ei oo sftp yhteyttä.

kiitos palautteesta.

Triton [14.01.2011 22:35:35]

#

Paratiisin poika kirjoitti:

Osaisiko joku pilkuttaa tekstin mulle? vihaan pilkkuja. ja vaihdan tekstin fontin huomenna. pääsen silloin taas koneelle. puhelimes ei oo sftp yhteyttä.

kiitos palautteesta.

Olisikohan tuo kannattanut opetella, ennen kuin aloit ohjelmoimaan?

Edit. Myös isot alkukirjaimet olisi syytä opetella.

Paratiisin poika [15.01.2011 13:26:06]

#

Nyt on Vastuuvapauslauseketta fiksailtu. Samoin kuin fontti muutettu. Mutta joku ei fontissa mielestäni ole oikein nyt ihan...

Lebe80 [16.01.2011 02:26:25]

#

Oikeasti. Poista koko vastuuvapauslauseke sivu, tai laita tekstiksi vaikka vaan, että "Minä Ville-Juhani Sinisalo, testaan eri palveluiden toimintoja tällä sivulla. Koska tämä on harrastussivusto, saattaa sivuston palvelut lakata toimimasta ennalta ilmoittamatta.".

Ja tää on kans hyvä:
"VJGO ei ole yhteistyössä viuhka.fi palvelun kanssa. VJGO:n ylläpitämä TXT Service vain sattuu olemaan viuhka.fi palvelun sivustolla."

Eli tuskin sivustosi kuitenkaan vain sattuu olemaan, eli etköhän itse sen kuitenkin ole sinne pistänyt...

Ja "Vastuuvapauslauseketta on muokattu viimeksi 15.01.2011 n. kello 13:24", kai tää teksti tulee oikeasti php-koodilla generoidusti, ettet käsin sitä päivitysaikaa muuttele?

Paratiisin poika [18.01.2011 00:25:13]

#

selvä. vastuuvapauslauseke on ja pysyy. ajan määrittelen näpyttelemällä.

paluu vjgo tube palveluun. mikä tapa olisi viisain jos pitää selvittää tiedoston mime tyyppi? mieluusti sama funktio sekä videolle että kuvalle. mime funktioita löysin kun etsin niitä pientä kuva säiliötä varten. salasanan saa esim sähköpostilla kysymällä. http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/ ja huomatkaa että tuo on kouluni palvelin eikä sieltä olla estetty yhtään funktiota. eli siis esim system() toimii. ja minulla on sinne tunnukset. löytääkö kukaan syytä miksi esim koulun nettiyhteys voisi katketa? hehe. mutta en tee sitä ilman syytä. ;^)

Blaze [18.01.2011 09:55:52]

#

Paratiisin poika kirjoitti:

mikä tapa olisi viisain jos pitää selvittää tiedoston mime tyyppi?

https://www.php.net/manual/en/ref.fileinfo.php

Paratiisin poika kirjoitti:

salasanan saa esim sähköpostilla kysymällä.

Taidanpa vaan käyttää palveluita, mihin ei tarvi hankkia mitään salasanoja.

Paratiisin poika kirjoitti:

huomatkaa että tuo on kouluni palvelin eikä sieltä olla estetty yhtään funktiota. eli siis esim system() toimii. ja minulla on sinne tunnukset. löytääkö kukaan syytä miksi esim koulun nettiyhteys voisi katketa? hehe. mutta en tee sitä ilman syytä. ;^)

No voin minä keksiä vaikka kuinka monta syytä, miks nettiyhteys katkeaa, mut ei sulla oo mitään tekemistä niistä minkään kanssa. Olettaen, että serveri on hyvin konffattu, et hirveästi pääse tekemään mitään pahaa, vaikka yrittäisit.
Ja tunnarishan toki lähtee nopeammin ku vandaalin muokkaukset Wikipediasta, jos jäät kiinni jostain pahistelusta, eli kannattaa varmaan hetken aikaa miettiä, onko siinä sittenkään mitään järkeä.

Lebe80 [18.01.2011 11:33:18]

#

Blaze kirjoitti:

Paratiisin poika kirjoitti:

huomatkaa että tuo on kouluni palvelin eikä sieltä olla estetty yhtään funktiota. eli siis esim system() toimii. ja minulla on sinne tunnukset. löytääkö kukaan syytä miksi esim koulun nettiyhteys voisi katketa? hehe. mutta en tee sitä ilman syytä. ;^)

Ja tunnarishan toki lähtee nopeammin ku vandaalin muokkaukset Wikipediasta, jos jäät kiinni jostain pahistelusta, eli kannattaa varmaan hetken aikaa miettiä, onko siinä sittenkään mitään järkeä.

Mä veikkaan, että siinä tunnarin menetys voi olla se vieläpä se pienin pelko. :)

awly [18.01.2011 21:39:37]

#

Mielenkiintoinen kuvapalvelu.
Mitään merkittävän ihmeellisiä aukkoja ei löydy, tosin salasana oli liian helppo arvata.

lainaus:

Error! Try agen!

Paratiisin poika [18.01.2011 21:43:01]

#

Salasanan oli ainoastaan tarkoitus estää kuvavyöry. Mutta eihän se mikään suoranainen passu ollu... Mut ihasama. Millaisia aukkoja sieltä löytyi?

awly [18.01.2011 21:47:48]

#

lainaus:

http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/image.php?action=image&file=../../index.php

Kuvan pystyy lähettämään jos salasanakentän jättää tyhjäksi.

Blaze [18.01.2011 22:03:20]

#

lainaus:

Warning: chmod(): Tiedostoa tai hakemistoa ei ole in /home/vjgo/public_html/KuvaSave/upload.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at /home/vjgo/public_html/KuvaSave/upload.php:25) in /home/vjgo/public_html/KuvaSave/upload.php on line 27
Etusivu | Upload

Lataus valmis. Katso kuva.

"Kuva" linkkaa osotteeseen http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/image.php?image=moe 128617 amamiya_polan animal_ears miko nekomimi.png&action=med_img joka ohjaa etusivulle.

Edit: Toi yheksänmeganen png oli kai vähän liian iso. Mikä tuolla on tiedostokoon raja?

Ja mitä noihin "erikoisiin" merkkeihin tulee, niin ei sun tarvi ku ajaa PHP:n urlencode()-funkkarin läpi nuo tiedostonimet, niin toimii hyvin. Ks. esim. http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/images/これはテストです.gif

nomic [19.01.2011 17:40:32]

#

http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/image.php?action=image&file=asd.png

Tuossakin kuvassa ihan mielenkiintoinen tilanne. :)

Blaze [19.01.2011 18:19:04]

#

Paratiisin poika kirjoitti:

Tiedostokokoa ei rajoiteta.

Taitaa olla limitti sen kaks megaa (mikä taitaa muuten olla PHP:n defaultti-upload_max_filesize).

Mitä lie hassua koodissaas teetki, mut välilyönnin nimessään sisältävät kuvat on rikki.

Paratiisin poika [19.01.2011 19:44:09]

#

noniin. Nyt palvelu haisee ku se ei toimi kunnollee -.-

Tein teille tiedoston aikani kuluksi. Olen aikaisemmin tehnyt toisen jännän tiedoston, jolla voi tarkistaa onko funkkari käytössä.

http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/php.php
http://voimax.cygnnet.jkl.fi/~vjgo/KuvaSave/functio.php

Älkää pliis sotkeko tota serveriä. En tahdo vaikeuksiin. En edes käytä system functiota palvelimen sotkemiseen. Kerran reboottasin jotta weelani alkais toimiin ku varmaa vuoden ollu yhtämittaa päällä.

Tähän laitan koodeja jos jollakin kiinnostaa kertoa miten saan toimimaan kunnolla.

Huomasin juuri miksi meni läpi ilman passua. Sitä ei oltu määritelty settings.php filuun -.-

lang.php

<?php
    //Sivusto
    $TEXT["copyright_text"]      = "Copyright &copy; Ville-Juhani Sinisalo 2011";
    $TEXT["nav_frontpage"]       = "Etusivu";
    $TEXT["nav_upload"]          = "Upload";
    $TEXT["title_frontpage"]     = "Etusivu";

    //Upload
    $TEXT["upload-button"]       = "Lataa";
    $TEXT["password"]            = "Salasana";
    $TEXT["upload_button"]       = "Lataa!";

    //Tiedoston sivu
    $TEXT["file_name"]           = "Tiedoston nimi";
    $TEXT["file_mime_type"]      = "Tiedoston MIME-tyyppi";
    $TEXT["download_file"]       = "Lataa tiedosto";
    $TEXT["try_show_in_browser"] = "Yrit&auml; n&auml;ytt&auml;&auml; selaimessa";
    $TEXT["file_size"]           = "Tiedoston koko";
?>

upload.php

<?php
  require_once("topinclude.php");
if(isset($_POST["upload"])) {

if(!$public_upload) {
  if(isset($_POST["password"]) && $_POST["password"] != $upload_password) { //En jaksa korjata tähän tätä ku huomasin tässä just äsken -.- :D
    require_once("topfile.php");
    echo "Salasana v&auml;&auml;rin!";
	require_once("bottomfile.php");
    exit;
  }
}

  $kuva = $_FILES["image"]["name"];
  $allowed = array("jpg", "jpeg","png", "gif", "svg", "bmp", "pdf");
  $jako = explode(".", $kuva, 2);
if(in_array($jako[1], $allowed)) {

if(is_file("$uploaded_files_dir/$kuva")) {
  require_once("topfile.php");
  echo "Tiedostonimi on jo k&auml;yt&ouml;ss&auml;!";
  require_once("bottomfile.php");
  exit;
}

  move_uploaded_file($_FILES["image"]["tmp_name"], "$uploaded_files_dir/$kuva");
  chmod("$uploaded_files_dir/$kuva", 0644);

  header("Location: image.php?file=$kuva&action=image");

}else {
  $page_tite = "Virhe - Kielletty tiedostomuoto";
  require_once("topfile.php");
  echo "Tiedostomuoto ei ole sallittu!";
  require_once("bottomfile.php");
  }
}else {
  $page_title = "Lataa tiedostoja";
  require_once("topfile.php");
?>

<tt><b>
  Sallitut tiedostomuodot ovat "jpg", "jpeg", "png", "svg", "gif", "bmp" ja "pdf".<br>
  Kuvien nimiss&auml; ei saa olla erikoismerkkej&auml;, sill&auml; jos niiss&auml; on, ne eiv&auml;t n&auml; kunnolla. Sallitut merkit: a-z, A-Z 0-9, -_ ja v&auml;lily&ouml;nti (space)
</b></tt>
<br><br>

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="image"><br>
<?php
if(!$public_upload) {
  echo " <b>" . $TEXT["password"] . "</b><br>\n";
  echo " <input type=\"password\" name=\"password\"><br>\n";
}
?>
  <input type="submit" name="upload" value="<?php echo $TEXT["upload_button"]; ?>">
</form>
<?php
  require_once("bottomfile.php");
}
?>

topinclude.php

<?php
if(!is_file("settings.php")) $error = true;
if(!is_file("lang.php")) $error = true;

if(!$error) {

require_once("settings.php");
require_once("lang.php");
require_once("imageresize.php");

}else {
    echo "error!";
  exit;
}
if(!is_dir($uploaded_files_dir)) {
  echo "P&auml;ivit&auml; sivu.";
  mkdir($uploaded_files_dir, 0777);
  exit;
}
?>

topfile.php

<?php
require_once("topinclude.php");
?>
<html>
  <head>
    <link type="text/css" rel="stylesheet" href="style.css?<?php echo filemtime("style.css"); ?>">
	<title><?php if(!isset($page_title)) { $page_title = "Nimet&ouml;n sivu"; } echo $page_title; ?></title>
  </head>
  <body>

<span class="nav_bar">
  <a href="index.php">
    <?php echo $TEXT["nav_frontpage"]; ?>
  </a>
    &nbsp;|&nbsp;
  <a href="upload.php">
    <?php echo $TEXT["nav_upload"]; ?>
  </a>&nbsp;
</span>
<br><br>

bottomfile.php

    <div class="copyright"><?php echo $TEXT["copyright_text"]; ?></div>
  </body>
</html>

image.php

<?php
require_once("topinclude.php");
if(isset($_GET["file"]) && isset($_GET["action"])) {

    $file       = $_GET["file"];
    $action     = $_GET["action"];
	$file_url   = urlencode($file);
    $file_path  = "$uploaded_files_dir/$file";

if($action == "image") {
if(file_exists($file_path)) {
	$file_size = round(filesize($file_path)/1024);

  echo "<!--\nPURKKARATHAISU SILLE ETT&Auml; EN SAANUT MUUTEN N&Auml;KYM&Auml;&Auml;N\n";
    $file_mime_type     = system("file -i -b $file_path");
    $file_mime_type     = explode(";", $file_mime_type);
  echo "-->";


    $page_title = "Kuva - " . $file;
  require_once("topfile.php");

if(isset($_GET["rotate"])) {
$angle = intval($_GET["rotate"]);

echo "<style>\n";
echo "img#image {\n";
echo "  rotation: {$angle}deg;\n";
echo "  -webkit-transform: rotate({$angle}deg);\n";
echo "  -moz-transform: rotate({$angle}deg);\n";
echo "  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);\n";
echo "}\n";
echo "</style>\n";
}

  echo "<a href=\"image.php?file=$file_url&action=download\">" . $TEXT["download_file"] . "</a>&nbsp;|&nbsp;<a href=\"$uploaded_files_dir/$file_url\">" . $TEXT["try_show_in_browser"] . "</a><br><br>\n";
  echo "<center>\n  <img src=\"$uploaded_files_dir/$file_url\" " . imageresize($file_path, 500) . " alt=\"Image\" id=\"image\">\n</center>\n<br><br>\n";
  echo "<div class=\"image_info\">\n";
  echo "    <center><b>Kuvan tiedot</b></center><br>\n";
  echo "  Kuvan tiedostonimi: $file<br>\n";
  echo "  Kuvan MIME-tyyppi: " . $file_mime_type[0] . "<br>\n";
  echo "  Kuvan koko: $file_size Kb<br>\n";
  echo "  Kuva (tod. n&auml;k.) ladattu palvelimelle: " . date("d-m-Y H:i:s", filemtime($file_path)) . " (<a href=\"https://www.php.net/manual/en/function.date.php\">date(d-m-Y H:i:s)</a>)<br><br>\n";
  echo "</div>\n";
  }else {
    $error = "Kuvaa ei l&ouml;ydy! Tarkista kuvan nimi!";
  }
}elseif($action == "pdf") {
echo "Kesken. Anteeksi t&auml;st&auml;.";
}elseif($action == "download") {

if(file_exists($file_path)) {
  header("Content-type: application/force-download");
  header("Content-Disposition: attachment; filename=\"$file_path\"");
  header("Content-Length: " . filesize($file_path));

  }else {
      $error = "Tiedostoa ei l&ouml;ydy! Tarkista tiedoston nimi!";
  }
}else {
header("Location: index.php");
}
if(isset($error)) {
    $page_title = "Virhe";
  require_once("topfile.php");
  echo $error;
  }
}else {
  header("Location: index.php");
}
  require_once("bottomfile.php");
?>

settings.php

<?php
    $uploaded_files_dir = "images";
    $upload_password    = "******"
    $public_upload      = false;
    $AdminEmail         = "ville.juhani.sinisalo@gmail.com";
?>

imageresize.php

<?php
function imageresize($image, $max) {
  list($width_original, $height_original) = getimagesize($image);
    $ratioh = $max/$height_original;
    $ratiow = $max/$width_original;
    $ratio  = min($ratioh, $ratiow);
    $width  = intval($ratio*$width_original);
    $height = intval($ratio*$height_original);

  return "width=\"$width\" height=\"$height\"";
}
?>

index.php

<?php
  require_once("topinclude.php");
    $page_title = $TEXT["title_frontpage"];
  require_once("topfile.php");

function ListFiles($dir) {
    $files = array();
    $dir   = opendir($dir);
  while(($file = readdir($dir)) !== false) {
    if($file != "." && $file != "..") array_push($files, $file);
  }
  sort($files);
  closedir($dir);
  return $files;
}

function putimagestolist($dir) {
    $files = ListFiles($dir);
    $col = 1;
#  echo "<table border=2 class=\"image_list\">\n  <tr>\n";
  echo "<ul>\n";

foreach($files as $file) {

$file_path = $dir . "/" . $file;

$pdf = array("pdf"=>true);
$ext = explode(".", $file_path);

if($pdf[strtolower($ext[count($ext)-1])]) {
    $mimetype = "application/pdf";
}else {
$mimetype = "image";
}

if($mimetype == "application/pdf") {
#  echo "    <td name=\"$col\" class=\"td_pdf\"><a href=\"image.php?action=med_img&image=$file&mime=pdf\"><abbr title=\"$file\"><img src=\"pdf.gif\"></abbr></a></td>\n";
  echo "  <li><a href=\"image.php?action=pdf&file=$file\">$file</a></li>\n";
}else {
#  echo "    <td name=\"$col\"><a href=\"image.php?image=$file&action=med_img\"><img src=\"$dir/$file\" alt=\"Image\" " . imageresize("$dir/$file", 130) . "></a></td>\n";
  echo "  <li><a href=\"image.php?action=image&file=$file\">$file</a></li>";
}
/*  $col++;

if($col == 8) {
  echo "  </tr>\n  <tr>\n";
    $col = 1;
  }
}
while($col != 8) {
if($col != 8) {
  echo "    <td name=\"$col\" class=\"td_empty\"></td>\n";
    $col++;
  }
*/
}
/*
  echo "  </tr>\n";
  echo "</table>\n";
*/
  echo "</ul>\n";
}
  echo "<big>Tiedostojen luettelo muutettu linkkilistaksi koska liian suurien kuvien lataaminen aiheutti suurta bugia.</big>\n";
  putimagestolist($uploaded_files_dir);
  require_once("bottomfile.php");
?>

EDIT: Pistin mimetyypin hakijan image.php:ssä kommentteihin, koska tajusin sen tietoturvan. Onneksi.

-tossu- [19.01.2011 20:05:11]

#

Paratiisin poika kirjoitti:

EDIT: Pistin mimetyypin hakijan image.php:ssä kommentteihin, koska tajusin sen tietoturvan. Onneksi.

Ethän laittanut, tai et ainakaan päivittänyt viestisi koodia. Onneksi koodissa kuitenkin on file_exists-tarkistus ennen system-funktiota varmistamassa, ettei käyttäjä saa suoritettua mitä tahansa.

Paratiisin poika [19.01.2011 20:27:44]

#

Kyllähän tuo on itse palvelimella savessa. Ei tuossa koodissa. Ennen echo "<!--... riviä on /* koodi ja rivin echo "-->"; jälkeen koodi */. Mutta siis jos joku lataa tonne tiadoston, jonka nimi on pätkä system kohdassa suoritettavaa koodii niin o'ou.

Kertokaa (Älkää romuttako palvelinta) jos löydätte tietoturva-aukkoja tai jotain vikaa sivustolta. (Älkää vieläkään romuttako sivustoa).

Salasana on wiilan

Olkaa hyvät älkääkä testatko system tagin läpäisyä niin, että koodini tai palvelin häiriintyy. En voi sanoa varmalla, mutta domainin perusteella on mahdollista että tuolla voisi romuttaa jkl:än sivut. En usko mutta on se mahdollista. Ainakin weelanit sammuis. Ja olkaa hyvät älkääkä postatko hälyttäviä määriä turhia tiedostoja palvelimelle. Alan pian poistelemaan turhia tiedostoja ja uudelleennimeämään toimia ja fiksuja sekä hauskoja yms. kivoja tiedostoja. Ja kertokaa mulle miten vaihdan omalta tunnukseltani ftp salasanan. En itse osaa löytää infoo siihen. Älkääkä pliis edes yrittäkö sitä keksiä. En halua vaikeuksiin koulun kanssa. Mulla on nyt sen atk open luottamus (ja atk 10 :D) niin en haluu vaikeuksia. Pliis älkää ees yrittäkö. Pavleu on tuollla palvelimella koska siellä toimii tarvittavat functiot ja siellä ei ole erikseen rajoitettu tilankäyttöä. Ja olen itse lopettanut sotkemiset. Reboot juttu oli vain koska tahdoin sen wlan yhteyden toimimaan sisällä kun ulkona on kylmä ja tuulee ja sataa ja kaikkea.

Ps. Poistin yhden aiemman viestin kun en tätä voinut lähettää.

Beuling [19.01.2011 22:31:34]

#

"Estettiin epäilyttävä verkkosivu

Yritit käyttää seuraavaa kohdetta:

http://voimax.cygnnet.jkl.fi/~vjgo/"

by Norton

-tossu- [19.01.2011 22:55:59]

#

Beuling kirjoitti:

"Estettiin epäilyttävä verkkosivu ...

Mistäköhän Norton on keksinyt, että tuo sivu olisi jotenkin epäilyttävä, eihän siellä ole kuin jokin reitittimen boottaus -lomake. Mitä tuohon sivuun tulee, niin ei välttämättä kannattaisi pitää tuollaista kaikille näkyvissä. En myöskään keksi mitää syytä siihen, miksi reitittimen boottaamiseen tarvitaan kaksi eri salasanaa.

Tekstissä on myös muutama virhe. Tästä taitaa puuttua sana "not":

http://voimax.cygnnet.jkl.fi/~vjgo/:

If WLAN is working in Viitaniemi's school, insert password of WLAN and password of boot ...

Sivulla on muitakin kirjoitusvirheitä kuten "responisble" ja "Error! Try agen!".

Metabolix [20.01.2011 16:18:04]

#

Huomasitko muuten, että lataustoimintosi ei toimi? Ei riitä, että laitat header-funktiolla otsikot, vaan lisäksi pitää lähettää se tiedosto. Lisää Content-Length-otsikon jälkeen seuraavaa:

readfile($file_path);
exit;

Kannattaa myös lisätä pariin paikkaan tarkistuksia tiedostonimestä.

Paratiisin poika [24.01.2011 21:34:38]

#

Kiitoksia tiedosta. Korjaan kun pääsen koneelle.

Aion ilmoittaa opettajille tt aukoista. esim minulla on tiedosto jonne voi syöttää komentoja. jostain kumman syystä en kerro teille osoitetta. suojaus salasanalla on kunnossa ja se kerää lokit. sen avulla mm. on saatu selville että käyttäjien lista on helposti saatavissa ja että minä osaan tehdä jotain hyvin. olkaa hyvät älkääkä edes etsikö tiedostoa. ps. se kerää lokit mun meiliin. väärät passut ja onnistuneet komennot. :D

Lebe80 [24.01.2011 22:55:14]

#

Paratiisin poika kirjoitti:

...minä osaan tehdä jotain hyvin.... se kerää lokit mun meiliin. väärät passut ja onnistuneet komennot. :D

Eeeeeeiii! Miksi keräät "vääriä" salasanoja?! MIKSIII?!

Etkö jo tajua, että jossain vaiheessa "kikkareesi" korkataan, niin "väärät" salasanat vuotavat heti käyttäjien mahdollisia salasanoja. Sano edes, ettei se tallenna niitä mihinkään muualle.

Sanotaan vaikka että käyttäjä olisi vahingossa kirjoittanut kirjautuessaan salasanansa väärin, esim. capslock -pohjassa. Luuletko että tämän jälkeen salasanaa on keksiä.

ÄLÄ IKUNA TALLENTELE MITÄÄN SALASANOJA! EDES VÄÄRIÄ!!! Sen vuoksi salasanakentät on merkitty tähdillä/palloilla/yms., ettei ne näy vahingossakaan missään kenellekkään.

/me menee ottamaan buranaa!

Paratiisin poika [24.01.2011 23:57:27]

#

... mulla on tiedosto x.php. se suorittaa komentoja vain kun salasana on syytetty ja se on y. mikäli tämä salasana joka on kaikille sama ei ole y vaan esim w, niin lähetetään mulle ip ja passuyritys jotta voin tarvittaessa estää hakkerin. eli siis en nyt tietenkään muitten tunnusten passuja ala tallentelemaan. huoh

Paratiisin poika [26.01.2011 14:18:00]

#

Selevä. Kuka helvetin idiootti kävi lataamassa tuonne kuva paikkaan 1000 kuvaa joiden poisto rasittaisi liikaa puhelintani? Olen ilmoittanut opettajille aukoista. lopettakaa tuo. sain jo valitusta jatkuvasta tiedonsiirrosta.

anteeksi kielenkäyttöni

Blaze [26.01.2011 15:00:20]

#

Paratiisin poika kirjoitti:

1000 kuvaa joiden poisto rasittaisi liikaa puhelintani?

Protip: noita ei mahdettu käsin lisätä tuonne, älä siis vaivaudu käsin poistamaankaan.

Paratiisin poika kirjoitti:

Olen ilmoittanut opettajille aukoista.

Opettajatko ne korjaa? Sun koodista? o_O

Paratiisin poika kirjoitti:

sain jo valitusta jatkuvasta tiedonsiirrosta.

WTF? Oon kohtalaisen varma, että käytän koti-ADSL:lläni moninkertasesti kaistaa sun palveluus verrattuna (paitsi jos joku tykkää tehä palvelunestohyökkäyksiä sun palveluus, mut kun siitä ei ollu puhetta, niin oletan, että kyse oli ihan normaalista liikenteestä).

The Alchemist [26.01.2011 20:31:32]

#

VJGO Tube on vissiin hostattu koulun servulla, eikä siellä ylläpito taidata tykätä, että joku CS-teini syö kaiken kaistan.

Blaze [26.01.2011 21:22:37]

#

The Alchemist kirjoitti:

VJGO Tube on vissiin hostattu koulun servulla

vjgo.arkku.net koulun palvelimella? Ei kai?

The Alchemist [26.01.2011 21:46:37]

#

Jaa että semmosta. No sittenhän valitukset kaistan polttamisesta ovat vieläkin vähemmän yllätys. Kyllähän tommonen tuhannen kuvan uppaushyökkäyskin jonkin verran megabittejä imee.

Lebe80 [26.01.2011 22:24:13]

#

Paratiisin poika kirjoitti:

Selevä. Kuka helvetin idiootti kävi lataamassa tuonne kuva paikkaan 1000 kuvaa

Katso sieltä logeistasi. Muistaakseen erikseen kehuit toiminnon erinomaisuutta.

Paratiisin poika [26.01.2011 22:38:06]

#

Se ope valitti koska käytän satoja kertoja päivässä ftp yhteyttä. En pelaa cs. vjgo tube ei ole kosketuksissa millään tavalla koulun palvelimeen. koodeissani ei ole vikaa, vaan palvelimessa. mulla on tiedosto jolla voi käyttää komentoriviä. palvelimen tt huolehtii jkl:än kaupungissa joku tt ryhmä. ei vn:än koulu. ja lopettakaa minun ivaus. En jaksa kuunnella sitä. olen ajanut itseni siihen tilaan että pian lähtee järki ja sitten henki. anteeksi nyt vaan. lopettakaa mun tilan pahentaminen jookosta vaan..?

Paratiisin poika [27.01.2011 06:18:01]

#

Minulla on selaimen kautta toimiva komentorivi tuolla. se kerää lokeja. kuvasave ei.

The Alchemist [27.01.2011 09:12:44]

#

Sinun koodisi mahdollistaa sen, että palvelimelle / sinun kotisivutilaasi voi tunkea luvatta tuhatmäärin kuvia. Kiitä onneasi, ettei hän upannut sinne samalla jotain haitallista skriptiä, jonka seurauksena olisit todennäköisesti menettänyt tunnuksesi palvelimelle.

Tää ketju on niin täynnä randomia bullshittiä ja sekoilua, etten jaksa lähteä arpomaan, että mitä sinä siellä koulusi FTP:llä, jos VJGO Tube on hostattuna jossain muualla.

Enkä ymmärrä sittenkään, että miten sinä voit käyttää FTP-yhteyttä satoja kertoja päivässä. Kaikki devaaminen kannattaisi suorittaa kotipalvelimella ja sitten vain välillä synkata valmis koodi levitysversioon. Tommoseen FTP:n yli arpomiseen menee ihan liikaa aikaa hukkaan pikkunäpertämiseen, jolloin koodaamisesta ei tule mitään.

Tuollainen ylimielinen "se on palvelimen vika, ei minun koodini" -asenne ei johda kuin siihen, että jossain välissä tulee itku.

progo [27.01.2011 10:18:04]

#

Paratiisin poika kirjoitti:

Se ope valitti koska käytän satoja kertoja päivässä ftp yhteyttä. En pelaa cs. vjgo tube ei ole kosketuksissa millään tavalla koulun palvelimeen. koodeissani ei ole vikaa, vaan palvelimessa. mulla on tiedosto jolla voi käyttää komentoriviä. palvelimen tt huolehtii jkl:än kaupungissa joku tt ryhmä. ei vn:än koulu. ja lopettakaa minun ivaus. En jaksa kuunnella sitä. olen ajanut itseni siihen tilaan että pian lähtee järki ja sitten henki. anteeksi nyt vaan. lopettakaa mun tilan pahentaminen jookosta vaan..?

Ivaaminen loppuu kun laitat tuollaiselle epämuodostuneelle riskille lopun. Asiat voi tehdä oikeaoppisesti ja väärin, ja olet valinnut väärän tien. Etkä kuuntele kaikkia ohjeita. Toivon, että joku korkkaisi tuon nopeasti niin päästään kärsimyksistä. Vaikkakin hyvä DWTF-tasoinen huumori jäisi sitten ;)

Paratiisin poika [28.01.2011 10:40:31]

#

Olen pahoillani että olen postannut tänne henkilökohtaisesta paskastani aiheutuneen vitutuksen, stressi n ja masennuksen yhteydessä muodostunutta paskaa. Minä olen jotenkin saanut tuon silleen ettei sinne voi ladata edes kuvia tälhetkel. mKorjhaan sen nyt jotenkuten, suojaan poassulla ja korjaan aukot 18975109%%%%% varmuudella. Minun vitun lääkitys on paskana. Anteeksi siitä auiheuttuva pakollinen sotku, jonka pyrin pitämään vähäisen.ö asdf

Kertokaa minulle onko upload koodissa jotain sellaista vikaa, joka mahdollistaa e.g .php tai jotain tollaista suorittuksen?

awly [28.01.2011 19:04:48]

#

Olisi kiva tietää upload koodisi ennen kuin alkaisi arpomaan. Tuossa vanhassa ei näyttäisi olevan, mutten voi mitenkään tietää nykyistä koodiasi.

ps. "Kannattaa myös lisätä pariin paikkaan tarkistuksia tiedostonimestä."

Metabolix [28.01.2011 19:10:37]

#

Sanoin jo aiemmin, että tiedostonimet kannattaisi tarkistaa. Et ole näköjään noudattanut neuvoa, kuten image.php:stä näkyy.

Paratiisin poika [01.02.2011 00:27:46]

#

puhelimella vaikea muokata. mutta nyt. ei ole varmaa mutta saattaa olla että lahden joksikin aikaa pois. saatte olla rauhassa. älkää kysykö miksi tai minne. en edes vastaa niihin. mutta no. mikäli näin käy niin näkemisiin.

Lebe80 [01.02.2011 09:16:05]

#

"Sarja jää tauolle."

Teknkik [01.02.2011 16:22:40]

#

Saikohan Paratiisin poika tietokonekiellon koodattuaan liikaa? :D

Metabolix [01.02.2011 16:32:14]

#

Olisi kuitenkin kannattanut tukkia tuo tietoturva-aukko ennen lähtöä. Ehkei siitä muuten olisi välitöntä vaaraa, mutta kun etusivulla lukee, että vaaralliset sivut on siirretty hakemistoon hack_risk, ja kun keskustelussa on kerrottu, että eräällä näistä sivuista voi ajaa komentoja (eli puhe lienee system-funktiosta), riskit ovat ihan todelliset.

Jokotai [01.02.2011 16:57:15]

#

No siis juttujen perusteella joita olen kuullut tästä projektista siihen kuitenkaan suuremmalti perehtymättä, voisin arvella, että hakkeroimiseen noille servereille riittää melkein mikä tahansa. Lainatakseni otan kohdan:

http://vjgo.arkku.net/wiki/index.php?title­=Etusivu:

<div style="height:25%;">
<center><h1>Tervetuloa VJGO wikin etusivulle!</h1></center><br><br><div style="border:3px solid black;border-radius: 5px;width:25%;float:right;">
<center><h2>Ajankohtaista</h2></center>
<ul>
<li>VJGO wiki avattu
</li>
</ul>
</div>LOL PYLLY HAISEE
</div>


</div>
</div>
<div id="mw-head" class="noprint">
<div id="p-personal"><ul>
<li><a href='index.php?title=Toiminnot:Contributions/213.243.188.138'>213.243.188.138</a></li>

Siinä suoritetaan kaikkea rumalla tavalla. Sivuissa on paljon aukkoja. JA SIITÄ ON PALVELINPUOLEN KAIKKI KOODI KAIKKIEN SAATAVILLA! Nyt riittää, että joku joka osaa jotain vain viitsisi iskeä, yksi virhe ei tunnu siinä missään.

Paratiisin poika [01.02.2011 22:15:43]

#

siis se system funktio on salasana suojattu kauan. pitäisi sulkea wiki. tehkää palvelus ja kertokaa aukot jotta voin poistaa ne. ja minulla on nyt jo tarpeeksi ongelmia. älkää tehkö niitä minulle lisää. kiitos.

teen muuten mail palvelua nyt

Lebe80 [01.02.2011 23:23:51]

#

Jos sulla on ongelmia, hoida ne. Poista vaikka kaikki sun "palvelut" siksi aikaa käytöstä, kunnes saat ongelmasi hoidettua.

Oon ollut yli 10 vuotta aktiivisesti erilaisilla foorumeilla ja ongelmaisia (väkivaltaisia, burnoutteja, epätasapainoisia) nuoria ja vanhoja on ollut ihan tarpeeksi. Yrittäkää nyt perhana vain hoitaa ne omat ongelmanne ajoissa, älkääkä turhaan kehitelkö itsellenne niitä ylimääräisiä huolia ongelmienne lisäksi.

Varsinkin jos olet lähdössä jonnekin, niin tee joku zippipaketti tiedostoistasi, tee niistä varmuuskopio ja poista sivut (=kaikki tiedostot, kyllä, sanoin aivan kaikki tiedostot) käytöstä, kunnes olet taas kunnossa, ja kun näyttää taas siltä, että oikeasti jaksat ylläpitää "palvelujasi".

Paratiisin poika [01.02.2011 23:37:16]

#

ongelma on mielenterveyteni ja idiootit koulussa.
Vjgon pääsivustolle tulee uutinen jos homma kusee. kertokaa kuka käytti luvatta komentorivi ohjelmaani. se nimittäin on pian tuomassa minulle syytteen tietomurrosta. tunnusta suosiolla ja kerro kuinka palautan kaiken ennalleen. mulla on ip tallessa samoten komennot.. -.-

ja kertokaa minulle jos kiinnostaa auttaa tekeen toi mail service toimintakuntoon. puhelimella rasittavaa koodata

Metabolix [02.02.2011 00:00:32]

#

En tiedä, kuka komentoriviäsi on käyttänyt, mutta minä ainakin lähetin palvelimen ylläpitäjälle sähköpostia, että kannattaisi tehdä sivuillesi jotain, ennen kuin aiheutat (tai joku muu aiheuttaa noiden aukkojen avulla) koko palvelimelle ongelmia. Täytyy vain toivoa, että ylläpitäjän osoite oli säädetty palvelimelle oikein.

Muista, että IP-osoite ei todista mitään maailmassa, jossa on ilmaisia välityspalvelimia ynnä muita tapoja pysyä anonyymina. Saatat päätyä raportoimaan ihan väärän osoitteen. Sitä paitsi koodissasi on jännä bugi myös virheraportin lähetyksessä – tai mistä minä tiedän, ehkä olet tehnyt tuon tarkoituksella noin.

"Kertokaa aukot", kehtaat käskeä, vaikka yksi vakava aukko on mainittu jo ainakin kolmessa viestissä, joista yhdessä on jopa linkki, joka demonstroi aukkoa käytännössä. Oma syysi, jos olet liian laiska lukemaan. Aukon ansiosta tuolla system-komennon salasanasuojauksella ei ole mitään virkaa.

Ketään koodaustaitoista ei varmasti kiinnosta "auttaa" tekemään "palveluitasi", koska sinulla ei takuulla olisi "yhteiselle" projektille mitään annettavaa – paitsi tietysti nimesi copyright-tietoihin. Sivusi ovat täyttä sontaa, palvelusi ovat täyttä sontaa, ja olisi sekä sinun että muiden kannalta varmasti parempi, jos et edes yrittäisi koodata (ainakaan sillä kännykällä, kun kerran on niin vaikeaa). Henkinen tilasikin varmaan tästä kohentuisi.

Luulen, että nuo sinun ongelmasi ovat enemmän omassa päässäsi kuin muiden. Mielenterveysasioissa kannattaa kääntyä psykologin tai vakavammassa tilanteessa psykiatrin puoleen. Edellisellä sivulla mainitsemastasi hengenlähdöstä on syytä muistaa, että tässä IRL-pelissä ei ole tallennusmahdollisuutta; tämä on kuulemma ihan oikeasti epäselvä juttu monille teineille.

Lebe80 [02.02.2011 12:04:05]

#

Paratiisin poika kirjoitti:

ongelma on mielenterveyteni ja idiootit koulussa.

Tiedän sen kyllä. Mutta kuten sanoin, niin sinun kannattaa oikeasti miettiä ongelmiasi ja hankkia aikaa niiden hoitamiseen. Unohda mail servicet yms. vähäksi aikaa ja hoida nyt vain itsesi kuntoon.

Paratiisin poika [02.02.2011 16:15:37]

#

olen Ihan tarpeeksi kunnossa.

okei en ole. taisin tyhmänä pilata parisuhteeni jo -.-

puhelin antaa laittaa muokkauskenttään kirjoitettaessa 1024 merkkiä. tämän vuoksi En kuvasaven image.php tiedostoa korjaamaan. ja älkää sitten oikeasti sotkeko tuolla nyt!

Lumpio- [02.02.2011 16:37:33]

#

( ゚∀゚)

Sien1 [02.02.2011 16:56:29]

#

ikinä kuullut tietokoneesta?

Paratiisin poika [02.02.2011 17:38:35]

#

Kyllä.
Oletko sinä koskaan kuullut sellaisista asioista kuin konekielto, nettiriippuvuus ja pakonomainen tarve tehdä jotain asiaa (tässä tapauksessa koodata).

haluaako joku olla kiltti ja katsoa tämän sivun html lähdekoodin ja laittaa sen viestinä tänne? teen koodin joka näyttää tämän sivun minun serveriltäni mutta ilman sivupalkka ja logoa yms. tietenkin laitan sinne linkin ja tiedot alkuperästä. alkaa aina tänne tullessa puhelin lagimaan

Grez [02.02.2011 17:52:36]

#

Paratiisin poika kirjoitti:

Oletko sinä koskaan kuullut sellaisista asioista kuin konekielto, nettiriippuvuus ja pakonomainen tarve tehdä jotain asiaa (tässä tapauksessa koodata).

Jos on noita asioita nähty tarpeelliseksi hoitaa konekiellolla, niin ei kuulosta kovin asiaa edistävältä tehdä samoja asioita puhelimella. Pitäisi varmaan olla myös älypuhelinkielto ja jos puhelinta tarvii niin lykätä käteen joku Nokia 2110 tai muu, missä ei ole edes nettiselainta.

raakaliha [02.02.2011 23:57:49]

#

ja äläkä laita sinne koodinpuolikkaita, joiden latausveppisivu on varustettu isolla punaisella varoituskolmiolla ja tekstillä "keskeneräinen eikä suositella käytettäväksi. projekti ei ole juuri nyt työn alla" tms...

Rickken [03.02.2011 21:25:52]

#

Mitä käytät kännykällä ohjelmaa, jos ne vielä pitäisi siirtää nettiin. Vai käytätkö jotain arkun muokkaspaneelia?

Jokotai [03.02.2011 22:12:04]

#

Lumpio- kirjoitti:

( ゚∀゚)

キタ━━━(゚∀゚)━━━!!

(Naapurin ystävällinen moderaattori korjasi merkit. Tee postauksen jälkeen search&replace, jossa muutat et-merkin [[:ks ja puolipisteen ]]:ks, niin homma toimii.)

Paratiisin poika [06.02.2011 12:55:35]

#

käytän ftp ohjelmana net2ftp sivustoa.
opettajani sulki sen mun tunnuksen. se sanoi että mun ip:llä on murtauduttu jonku toisen tilille -.- se ei edes näyttäny sitä ip osoitetta. ja mun koneet on pölyssä kun niitä ei olla käytetty. ja mulla ei edes ollut mitään mielenkiintoa murtautua sen tyypin tilille. -.-
ja mikäli puhelimeni ei vain raiskaa tyylejä niin tämä mobiiliulkoasu on aika hieno (Y)

progo [06.02.2011 13:25:51]

#

Eli loppu hyvin, kaikki hyvin?

Paratiisin poika [10.02.2011 12:28:26]

#

En tiedä... minun tunnukset on suljetut koulussa. sain ip osoitteen jolla sotkettiin.
Whois info:
Location Tokyo, Japan
Että osaako joku selittää? -.- en nyt kerro sitä osoitetta koska en halua kertoa. kertokaa sen sijaan että onko TXT Servicessä aukkoja. Älkää tuhotko sitä sivustoa pliiiiiiiiiiis. ja se etten korjaa aukkoja heti johtuu siitä etten tajua niitä tai olen laitteella joka hajottaa koodin täysin mikäli edes otan sen editoriin. ja kiitosta vaan tästä 0.33 viestiä päivässä jutusta (N)

Lebe80 [10.02.2011 12:35:03]

#

1) Poista vanhat itse sivut, jottei tuhoa tule enempää

2) "Harjoittele" osaamista tekemällä jotain vähemmän kriittisiä "palveluita", esim. vieraskirjoja yms.

3) Lue palautetta "mainostamillasi" keskustelualueilla. Jos et ymmärrä kritiikkiä, et ole ehkä paras ihminen ohjelmoijaksi. Tärkeää on osata sisäistää palaute, jotta ymmärrät mitä olet tehnyt väärin, ja osaat korjata sen. Harva "palvelu" toimii netissä alkuperäisillä koodeilla, joten asennoidu siihen, että joudut aluksi silloin tällöin tekemään koodisi alusta asti uudelleen - paremmin.

Lumpio- [10.02.2011 13:03:45]

#

Paratiisin poika kirjoitti:

sain ip osoitteen jolla sotkettiin.
Whois info:
Location Tokyo, Japan
Että osaako joku selittää? -.-

Tietääkö poika mikä on proxy? Nyt tuntuu vähän siltä että IP-lokeistasi ei sittenkään ollut mitään hyötyä.

Paratiisin poika [13.02.2011 19:39:39]

#

tuolla ip osoitteella on löytöpaikka opettajan lukemista ftp lokeista. se ip on rekisteröity jollekin yhtiölle. =)

Metabolix [13.02.2011 19:55:05]

#

Siis oliko sivuillesi murtauduttu FTP:llä? Onneksi olkoon vain. :D Ehkä pidät jatkossa paremmin huolta salasanoistasi.

Lebe80 [13.02.2011 19:56:13]

#

Lumpio- kirjoitti:

Tietääkö poika mikä on proxy?

Paratiisin poika kirjoitti:

tuolla ip osoitteella on löytöpaikka opettajan lukemista ftp lokeista. se ip on rekisteröity jollekin yhtiölle. =)

Paratiisin pojan vastaus lyhyesti: Ei tiedä.

Teknkik [14.02.2011 11:21:46]

#

Mitä tästä opittiin..? Kannattaa ensin opetella asiat ja vasta sitten tehdä suuria projekteja :p

Lebe80 [14.02.2011 11:56:53]

#

Tai ehkä paremminkin se, että jos tehdään jokin asia väärin, ja joku kertoo miten se korjataan, niin oikeasti myös korjataan asia, eikä ruveta tekemään seuraavaa ominaisuutta.

racle [14.02.2011 18:25:16]

#

Teknkik kirjoitti:

Mitä tästä opittiin..? Kannattaa ensin opetella asiat ja vasta sitten tehdä suuria projekteja :p

Tai sitten tehdä suuria projekteja sisäisessä testiympäristössä jossa ei ole vaaraa muille :P

jo123 [14.02.2011 23:01:34]

#

Ja pitää varmuuskopioita :P

Paratiisin poika [19.02.2011 15:09:23]

#

tiedän. mikä on proxy. puhelimella on vaikea ottaa v kopioita kun ei 1. tue t muotoa 2. ei ole tilaa.
virheiden korjaaminen puhelimella on vaikeaa. ja koska tämä on kaukana otsikosta niin palaan ontopickiin.
miten asennan sen mobiili video katselu jutun tai mistä saan puhelimella toimivan flash soittimen?

Deffi [19.02.2011 15:16:58]

#

Mitä jos korjaisit tietoturva-aukot ennen kuin alat lisäämään uusia toimintoja|aukkoja.

somero [19.02.2011 16:30:39]

#

Tämä keskustelu on ollut ebin.

Edit: Nyt vähän enemmän googlattuani niin herra Sinisalo tässä aikuisen neuvo; Opettele php:ta ja opettele ohjelmoimista huviksesi, vaikka näin aluksi. Olet kovin nuori ja sen takia en näe, että olisi mitenkään mielekästä, että syrjäytyisit ikäistesi "piireistä", joten on erittäin tärkeää, että ymmärrät, että vaikka koodaus ja muu luominen on kivaa puuhaa niin se ei saa olla elämän ainoa sisältö ja tarkoitus. Ei kannata istua monomaanisesti koneella tai netissä. Ulkona on maailma ja nuoruus.

The Alchemist [19.02.2011 17:29:56]

#

Ja kun lopetat nyt tuon puhelimen kanssa pelleilyn, niin saat kenties joskus tietokoneesikin takaisin. Olisiko moraalisesti väärin antaa ihmiselle bannit henkisen terveyden palauttamiseksi?

Paratiisin poika [26.02.2011 11:35:28]

#

palataan nyt alkuperäiseen aiheeseen.
Kuinka asennan videoprotokollan palvelimelleni?

efteri [26.02.2011 13:44:56]

#

Jos nyt olen ymmärtänyt oikein että alkuperäinen ideasi on ollut tehdä youtuben kaltainen sivusto johon käyttäjät voivat ladata videoitaan voisit tehdä yksinkertaisen tiedoston latauksen ja näyttää videot HTML 5:n video ominaisuutta hyödyntäen. Lisätietoa tuosta löydät esimerkiksi tuolta: http://www.w3schools.com/html5/html5_video.asp

Paratiisin poika [01.03.2011 12:57:53]

#

Puhuin mobiililaitteiden videoprotokollaa..

Jonkun ehdottama harjoittelusofta, VierasKirja: http://vjgo.viuhka.fi/txt_service/vk/

toimiiko tarpeeksi hyvin?
tein puhelimella alle 2h

txt servicen mobiiliversio: http://vjgo.viuhka.fi/txt_service/mobile/
pääsivu ohjaa puhelimet automaattisesti tuonne. tämän voi estää laittamalla osoitteen perään ?nomobile
esim: http://vjgo.viuhka.fi/txt_service/index.php?nomobile

Lebe80 [01.03.2011 16:22:58]

#

Paratiisin poika: eihän tommosen koodaukseen mene muutenkaan useampaa tuntia. Enemmän sun projekteissas toivoisin, että ymmärtäisit sen, että myöhemmin vieraskirjan ylläpitämiseen tarvitaan muutakin kuin sivu, johon viestit ilmestyvät. Eli suurin punnerrushan kaikissa webisovelluksissa on se, että saadaan nimenomaan ylläpitäjän työkalut sellaisiksi, että nopeasti voidaan moderoida viestejä, estää käyttäjiä tai vaikka sulkea seinä.

Metabolix [01.03.2011 16:45:37]

#

Paratiisin poika kirjoitti:

toimiiko tarpeeksi hyvin?
tein puhelimella alle 2h

Toimii hienosti, onneksi olkoon! Olet siis nyt niin taitava, että osaat tulostaa sivulle tavallista, muotoilematonta tekstiä – eikä edes kestä kuin pari tuntia. Todella mahtava saavutus, näillä eväillä onkin hyvä aloittaa uuden menestyssivuston koodaaminen!

(Toivottavasti ymmärrät ironiaa etkä käsitä tätä väärin.)

punppis [01.03.2011 17:03:46]

#

Eikös tuo ole enemmänkin sarkasmia?

E: No eipä sittenkään, kun katselin Wikipediasta vähän tarkempaa tekstiä aiheesta :D

raakaliha [02.03.2011 01:46:45]

#

Metabolix: ei ole moderaattorin käytöstä nyt. Yhtään mikään häiritsevän käyttäjän haitarin soittelua banaanilla. Jos se ei ymmärrä viestisi sanomaa lukematta, niin peli on selvä.

Provoamalla saatte aikaan lisää vastaavaa takaisin, joten miksiköhän pidätte yllä tätä nyt tässä?

Metabolix [02.03.2011 02:34:23]

#

raakaliha kirjoitti:

Metabolix: ei ole moderaattorin käytöstä nyt.

Kerro lisää. Mitä mielestäsi sanoin asiattomasti? Nähdäkseni totesin vain, että tuollaisen äärimmäisen karun tai suorastaan ruman vieraskirjan tekeminen ei ole minkäänlainen taidonnäyte, päinvastoin, kun aikaakin kului noin paljon.

raakaliha kirjoitti:

Jos se ei ymmärrä viestisi sanomaa lukematta, niin peli on selvä.

Mieti nyt itse vähän, mitä kirjoitat. Sanot, että viestin lukeminen ei auta ymmärtämistä. Oletko siis sitä mieltä, että Paratiisin poika ei osaa lukea, vai sitä, että Paratiisin poika ei ymmärrä lukemastaan mitään? Aika asiaton kommentti sinulta joka tapauksessa.

raakaliha kirjoitti:

Provoamalla saatte aikaan lisää vastaavaa takaisin, joten miksiköhän pidätte yllä tätä nyt tässä?

Paratiisin poika jatkaa keskustelua, joten vaikea sitä on muidenkaan lopettaa. Kun sinulla kerran on noin paljon varaa valittaa muiden toiminnasta, niin kerropa, miten sinusta saataisiin Paratiisin poika tajuamaan, että tässä projektissa ei ole mitään järkeä, kun taidot ja kärsivällisyys eivät riitä? Ei projektia voi tehdä niin, että kysyy kaikkea ja saa valmista koodia suuremman määrän, kuin lopulliseen tuotteeseen edes tarvitaan.

Merri [02.03.2011 09:25:00]

#

Tässä on kyse ehkä enemmän siitä, että onko järkeä ylipäätään välittää keskustelusta niin paljon, että ottaa siihen osaa ja käytännössä nolaa itsensä sillä, että yrittää "puhua järkeä" jollekulle, johon aiemmatkaan viestit eivät ole auttaneet.

raakaliha [02.03.2011 19:30:58]

#

Tarkoitin, että jos käyttäjä ei itse tajua em. tekeleen olevan korkeintaan yksityishiekkalaatikoksi kelpaava roska, niin selittäminen on turhaa, varsinkin "Onneksi olkoon vain :D" -tyylillä. Laittaisin: ketju lukkoon, viimeinen varoitus olla kommentoimatta VJGO Tube -projektia sanallakaan, yhtään valmiskoodiriviä ei saa pyytää, omien harjoitusten testauspyyntöjen kielto, ylipäätään testauspyyntöjä korkeintaan yksi kolmessa päivässä; muuten suora esto.

Ilmari123 [05.03.2011 00:00:15]

#

Mitä te mollaatte? Tuo TXT service on mainio.

Paratiisin poika [05.03.2011 01:23:49]

#

raakaliha. lopeta dissaamiseni.

metabolix. tuon vk:n tarkoitus oli toimia. ei näyttää.

ilmari123. kiitos kommentista ja hyvä kun pidät

Metabolix [05.03.2011 01:43:28]

#

Paratiisin poika kirjoitti:

tuon vk:n tarkoitus oli toimia. ei näyttää.

Kuitenkin kirjoitit sinne, että se on tehty putkalaisten ehdotuksesta. Täällä ei ehdotettu, että väsäisit nopeasti epämääräisen vieraskirjan. Ehdotuksen idea oli, että tekisit jotain pientä mahdollisimman hyvin ja huolellisesti. Jos et ikinä tee asioita kunnolla, et ikinä opi ohjelmoimaan kunnolla. VJGO Tuben vääntämisestä opit ehkä vähän jotain, mutta oppisit sata kertaa enemmän tekemällä pienen vieraskirjan hallintatyökaluineen oikein viimeisen päälle, niin hyvin, että taitavatkin koodarit voisivat sitä rehellisin mielin kehua onnistuneeksi, toimivaksi ja tyylikkääksi.

Paratiisin poika [08.03.2011 10:51:35]

#

voitteko te kertoa kuinka asennan sen mobilevideoprotokollan?

Blaze [08.03.2011 11:00:01]

#

Ei, me ei tiedetä, mitä "mobiilivideoprotokollan asennus" tarkottaa.

Paratiisin poika [12.03.2011 15:26:51]

#

siis se protokolla jota mm. youtube käyttää... =)

Blaze [12.03.2011 15:42:59]

#

Useimmat Youtuben videot tulee HTTP:n yli.

(Edit: Joo, useimmat, joihinki käytetään näköjään rtmp:tä, mut ei se tarkota, ettetkö sää pärjäis http:llä)

Runeli [13.03.2011 00:25:32]

#

Tein pussillisen popcornia ja luin tän threadin läpi. Melkoista menoa :)

Paratiisin poika [16.03.2011 14:50:59]

#

kiva että tykkäät. kertokaa miten se onnistuu ku katsokaas puhelimellakin halutaan nykyään katsoa videoita. -.- ja olen muutenkin kiinnostunut siitä miten erilaisia asioita voi asentaa palvelimelle :D

Grez [16.03.2011 14:57:47]

#

Edelleenkään kukaan ei tiedä mitä oikeastaan haluat sinne palvelimelle asentaa, niin on vaikea neuvoa.

Eli avoimet kysymykset on oikeastaan:

1) Mikä protokolla on mielestäsi mobiilivideoprotokolla?
Youtube käyttää videoiden lähettämiseen mm. http-protokollaa, mutta se ei varsinaiseti ole mobiilivideoprotokolla.

2) Mitä tarkoitat protokollan asentamisella palvelimelle?
a) ko. protokollaa tukevan palvelinohjelmiston asentamista
b) ko. protokollaa tukevan asiakasohjelmiston asentamista
c) ko. protokollan lisäämistä protokollien oletusporttien listalle
d) jotain muuta, mitä?

Jos haluat tasan saman palvelinohjelman kuin youtubessa, niin joudut pyytämään Googlelta. Näyttäisi olevan gvs 1.0, eli veikkaan tarkoittavan "Google Video Server"

Lebe80 [17.03.2011 09:55:52]

#

Tai Googlelta pyytämisen sijaan tosiaankin voit käyttää vapaasti aiemmin ehdotettua YouTube APIa, jolloin voit lähettää videoita sivuiltasi suoraan YouTubeen.

YouTube on kuitenkin sen verran iso palvelu, että se toimii lähes kaikilla mobiililaitteilla suoraan, ja voit listata videoita omille sivuillesi ilman ongelmia.

Paratiisin poika [21.03.2011 17:38:49]

#

sain sen rtps protokollan toimimaan. tai no se sanoo että yhdistetään, mutta sitten antaa virheen. mikä vikana?
ps. noi youtube apit on maukkaita :P

Macro [21.03.2011 17:44:07]

#

Antaa minkä virheen?

Paratiisin poika [29.03.2011 15:10:48]

#

Yhdistäminen ei onnistunut. Menin vain osoitteeseen rtsp(sejoku)://vjgo.arkku.net/mediaplayer/videos/test.3gp puhelimellani. Tuo on ihan toimiva video tietääkseni. :D

Lebe80 [29.03.2011 15:26:42]

#

Onko se vai eikö ole toimiva video? Yritäpä selvittää se ensitöiksesi.

Blaze [29.03.2011 15:33:22]

#

blaze@nanoha ~ $ nmap -PN -p 554,1935 vjgo.arkku.net

Starting Nmap 5.21 ( http://nmap.org ) at 2011-03-29 15:32 EEST
Nmap scan report for vjgo.arkku.net (85.14.201.130)
Host is up.
rDNS record for 85.14.201.130: http.arkku.net
PORT     STATE    SERVICE
554/tcp  filtered rtsp
1935/tcp filtered rtmp

Nmap done: 1 IP address (1 host up) scanned in 3.04 seconds

...miksi en ole yllättynyt.

Metabolix [29.03.2011 15:36:26]

#

Toisin sanoen et ole asentanut yhtään mitään etkä saanut yhtään mitään toimimaan. Arkku.netin palvelimella ei ole RTSP-palvelinohjelmaa.

Eikö ole jo tullut selväksi, että RTSP:n käyttöä varten sinun pitää asentaa palvelimelle (omalle palvelimellesi, webhotelliin et voi) RTSP-palvelinohjelma ja avata palomuurista sen käyttämä portti (ilmeisesti 554)?

Paratiisin poika [29.03.2011 17:30:49]

#

no väitinkö asettaneeni jotain? kertokaa nyt siis että miten asennan omalle palvelimelle sen rtps ohjelman

Grez [29.03.2011 17:36:29]

#

Paratiisin poika kirjoitti:

no väitinkö asettaneeni jotain? kertokaa nyt siis että miten asennan omalle palvelimelle sen rtps ohjelman

No et suoraan väittänyt, mutta oletimme tietenkin että et olisi niin pöljä, että yrität käyttää jotain sellaista mitä et ole asentanut.

Paratiisin poika kirjoitti:

Yhdistäminen ei onnistunut. Menin vain osoitteeseen rtsp(sejoku)://vjgo.arkku.net/mediaplayer/videos/test.3gp puhelimellani. Tuo on ihan toimiva video tietääkseni. :D

Ilmeisesti siis olimme väärässä.

Metabolix [29.03.2011 18:39:17]

#

Väitit, että sait RTSP:n toimimaan, jolloin on järkevää olettaa, että olisit ensin edes asentanut sen. Ei tullut mieleen, että olisit noin tohelo.

Testasinpa. Ei ollut vaikeaa. Voisit opetella itsekin selvittämään asioita.

Asenna VLC, jossa on sellainen RTSP-kykyinen osa kuin VLM. Käynnistä se komentoriviltä esimerkiksi näin:

vlc --intf telnet --telnet-port 4212 --telnet-password kissa2 --rtsp-host 0.0.0.0:5540

Komennot voi lähettää telnetillä porttiin 4212, telnetin salasana on kissa2, ja streamit tulevat portista 5540. Komentoja voi lähettää vaikka seuraavalla koodilla. Tiedostonimet ovat suhteessa VLC:n ajohakemistoon, ja välilyönnit ym. erikoismerkit luultavasti vaatisivat jotain erikoiskäsittelyä, joten älä käytä niitä.

<?php
class VML {
	private $sock;
	private function komenna($komento) {
		fwrite($this->sock, $komento."\r\n");
	}
	public function __construct() {
		$this->sock = @fsockopen("127.0.0.1", 4212, $errno, $errstr, 5);
		if (!$this->sock) {
			throw new Exception("fsockopen: $errno: $errstr");
		}
		$this->komenna("kissa2");
	}
	public function __destruct() {
		$this->komenna("quit");
		fclose($this->sock);
	}
	public function lisaa($tiedosto) {
		$this->komenna("new {$tiedosto} vod enabled input {$tiedosto}");
	}
	public function poista($tiedosto) {
		$this->komenna("del {$tiedosto}");
	}
}

$vml = new VML();
$vml->lisaa("kappale.mp3");  // rtsp://palvelin:5540/kappale.mp3
sleep(10);
$vml->poista("kappale.mp3");

Tarvitset ehkä lisäksi jotain mux- ja output-asetuksia, jos tiedostosi eivät ole valmiiksi kunnollisessa muodossa.

Paratiisin poika [10.04.2011 15:49:39]

#

Kiitoksia tästä selvästä avusta. heti kun saan Linuxin toimimaan palvelimena niin asennan nuo. kiitoksia paljon oikeasti

Iaxul [17.04.2011 23:39:03]

#

Eh. Luin ensin sivut 1-3, aluksi ihan huumorilla, mutta sitten alkoi hieman harmittaa. Sitten hyppäsin sivulle 12 ja sama meno näköjään jatkuu edelleen.

Sanoisin, ettei tämän kyseisen koodarin auttamisessa ole mitään järkeä. Ohjelmoinnin perusteet pitää hommata jostain muualta, ja niitä kannattaisi olla sen verran ettei tarvitse jokaista perusasiaa kysyä erikseen. Jos tyyppi ei tajua eikä kuuntele, ja porukka vaan kirjoittaa tälle kaiken koodin valmiiksi, tilanne voi mennä pian tähän suuntaan: http://thedailywtf.com/Articles/The-Speed-of-Code.aspx

Olen itsekin nähnyt kun porukka on valmistunut periaatteessa päteväksi koodariksi erittäin huonoilla ohjelmointitaidoilla. Jos he saavat töitä, kuka ne työt tekee? Ei ehkä millään tavalla todennäköistä tässä tapauksessa, mutta kuitenkin.

Eikä pahalla kys. koodaria kohtaan. Et vaan kovinkaan hyvin opi jos yrität sokkona väsätä turhan monimutkaista systeemiä.

Paratiisin poika [18.04.2011 16:26:04]

#

suurimpia ongelmiani ovat pystyä hahmottamaan esim että miten saan jonku vaikean jutun tehtyä. ei koodi. sitten toinen suurista ongelmista on se, että jos pitää tehdä jotain käyttäen funktioita, joista ei ole koskaan kuullutkaan. tosin sekin liittyy usein hahmotus ongelmaan. :D

Lebe80 [18.04.2011 16:58:40]

#

Paratiisin poika kirjoitti:

sitten toinen suurista ongelmista on se, että jos pitää tehdä jotain käyttäen funktioita, joista ei ole koskaan kuullutkaan.

Joku voisi väittää, että se johtuu siitä, ettet omatoimisesti tutki mitään, etkä viitsi perehtyä ohjeilmointikieleen, vaan odotat vaan foorumeilla, koska joku vastaa kysymykseesi/pulmaasi.

Grez [18.04.2011 19:13:46]

#

Mielestäni ohjelmoijan tärkein ominaisuus on ongelmanratkaisukyky, eli juurikin tuo että hahmottaa miten joku juttu saadaan tehtyä. Sen jälkee kun tietää mitä haluaa käskeä tietokoneen tekemään, varsinaisen koodin pystyy kyllä kirjoittamaan suunnilleen kuka vaan - ilman kokemusta toki kestää kauemmin ja joutuu lukemaan dokumentaatiota enemmän.

Itselläni on vähän päinvastainen ongelma. Minua kiinnostaa selvittää, miten jutut toimii, hahmottaa kokonaisuudet ja ratkaista ongelmat. Sitten siinä vaiheessa kun tiedän jo miten homma kannattaa tehdä niin ei oikein nappaisi kirjoittaa sitä varsinaista koodia. Sinänsähän se on tietysti helppoa, riittää kun saa motivoitua itsensä.

Paratiisin poika [06.05.2011 15:40:14]

#

Kyllä minä osaan hahmottaa että miten joku asia tehdään. Ongelmana on joskus (tai no yleensä) se, että en ole koskaan kuullutkaan mistään tyylistä tehdä jotain juttua, tai tiedä functioita joilla tehdä joku juttu. Esim jos en tietäisi funktiota explode, niin en todellakaan osaisi pilkkoa tekstinpätkää. Hyvä esimerkki siitä, etten osannut jotain millään, on tuo samankaltaisia videoita laatikko. toinen vielä parempi esimerkki on se, että miten saan videon pyörimään puhelimella netin kautta streamilla, kun en edes koneella osaa ko. asiaa käyttää.

Grez [06.05.2011 15:49:49]

#

Jotenkin mielestäni ristiriitaisia väitteitä:

Paratiisin poika kirjoitti:

Kyllä minä osaan hahmottaa että miten joku asia tehdään.

Paratiisin poika kirjoitti:

Esim jos en tietäisi funktiota explode, niin en todellakaan osaisi pilkkoa tekstinpätkää.

Jos en voisi käyttää explode, split tms, valmista funktiota, niin 10 sekunnin miettimisellä tulisi mieleen kaksikin erilaista tapaa tehdä asia.

Ei nuo valmiit funktiotkaa mitään taikuutta ole, vaan ne on ihan samalla tavalla koodattu kuin kaikki muutkin ohjelmat. Merkkijonon jakaminen on kyllä sen sortin ongelma, ettei jos siihen ei pysty keksimään muuta ratkaisua kuin valmiin funktion käyttämisen, niin jotain on pahasti hukassa.

Paratiisin poika [18.05.2011 12:46:25]

#

Osaan joissain tapauksis ja tiedän et funktiot on tehty kuten kaikki muukin koodaus.

empty()

<?php
function empty($text) {
if($text == "") {
return true;
exit;
}
if($text == "0"){
return true;
exit;
}
return false;
}

Äkkiä tehtynä. Saattaa olla virheellinen mut no joo kuitenki.

Graphic [18.05.2011 13:58:14]

#

Paratiisin poika kirjoitti:

Osaan joissain tapauksis ja tiedän et funktiot on tehty kuten kaikki muukin koodaus.

output = first
"str|foo".each do |letter|
    output = second if letter == "|"
    output << letter
end

Mod. lisäsi kooditagit.

racle [18.05.2011 13:59:41]

#

Paratiisin poika kirjoitti:

Osaan joissain tapauksis ja tiedän et funktiot on tehty kuten kaikki muukin koodaus.

empty()

<?php
function empty($text) {
if($text == "") {
return true;
exit;
}
if($text == "0"){
return true;
exit;
}
return false;
}

Äkkiä tehtynä. Saattaa olla virheellinen mut no joo kuitenki.

Onneksi ei ole bloatti :3

Lumpio- [18.05.2011 14:02:14]

#

Asiantuntijavinkki: PHP:ssä empty() ei ole funktio. Jos se olisi funktio niin empty($an_undefined_variable) tuottaisi virheen, mutta emptyn kanssa ei tuotakaan.

Lähelle pääset tekemällä funktiosi parametristä referenssin mutta en ole ihan varma pystytkö emuloimaan emptyä täysin.

Paratiisin poika [31.05.2011 08:44:58]

#

Voitko selittää sanat "referenssi" ja "emuloida"?

<?php
function empty($variable == "0") {
//...

Torgo [31.05.2011 10:44:10]

#

Paratiisin poika kirjoitti:

Voitko selittää sanat "referenssi" ja "emuloida"?

referenssi = viittaus, lähde, vertailupohja. Tässä tapauksessa tuo ensimmäinen.
emuloida = matkia, jäljitellä.

Runeli [22.06.2011 17:13:40]

#

vjgo.arkku.net ei toimi :(


Sivun alkuun

Vastaus

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

Tietoa sivustosta