Ohjelmoinnin ongelmanurkkaus

Mikä on sivuston alusta, vai onko staattinen sivusto?

Eipä salasanojen vaihtamisesta haittaa ole, mutta ennemmin tulee mieleen jokin haavoittuvuus.
 
10% ALENNUS KOODILLA PAKKOTOISTO
No siis peruskikkareet, viimeisen päälle palikkaHTMLää notepädin kautta kierrätettynä, ei mitään ihmeellisyyksiä. Kai se on silloin "staattinen" :)
 
Juu eli staattinen, joten ellei webhotelli ole erityisen reikäinen niin salasanat vaihtoon.
 
Vaihtui ohjelmointireenin puolella alusta. Eli nykyään Win 7:ssa pyörii serverinä VertrigoServ (Apache + MySQL) ja PHP:ta reenaan NetBeans IDE 8.0.2 :lla.

Nyt pukkaa virheilmoitusta, josta en 2 h googlettelulla selviä.

---Koodi---

<?php
$lomake="<form action=\"$PHP_SELF\" method=\"post\">
Arvaa numero: <input type=\"text\" name=\"arvattava_numero\" size=\"5\" maxlength=\"80\" value=\"\">
<br>
<input type=\"submit\" value=\"Arvaa\">
</form>";
if ( $arvattava_numero == "" )
{
print $lomake;
}
elseif ( $arvattava_numero == "10" )
{
print "Arvasit oikein!";
}
elseif ( $arvattava_numero < "10" )
{
print "Arvaamasi numero on liian pieni.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
else
{
print "Arvaamasi numero on liian iso.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
?>

Tulos:
Ongelma.jpg
Koska seuraan opasta, voinen olettaa että pelkässä koodissa ei kommenttien perusteella ole ongelmaa. Joku siis mättää nyt serveri / ohjelmistotasolla tai näiden kaikkien yhteisvaikutuksesta Netbeanssin päivitin uusimpaan. Ideoita? <ohjelma ei myöskään etene, kun syötän kenttään arvon ja painan "Arvaa"-nappia.
 
Jatkuu, muutin 2. rivin
$lomake="<form action=\"$PHP_SELF\" method=\"post\">
tilalle tämän:
$lomake="<form action=\"$_SERVER['PHP_SELF']\" method=\"post\">

"Superglobaalit muuttujat
PHP:n versiosta 4.20 lähtien globaalit muuttujat ovat default-asetuksissa disabloituna, joten jaksossa 3 käsitellyt esimerkit eivät nykyään välttämättä toimi. "
http://www.jorkki.com/artikkelit/php8.php

( ! ) Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\Program Files (x86)\VertrigoServ\www\PHPProject\index.php on line 2

Mutta edelleen prakaa.
 
Äh, sori. Luin väärin.

$lomake="<form action=" . $_SERVER['PHP_SELF'] . " method=\"post\">

Eli liität muuttujan stringiin käyttämällä pisteitä. Kerro auttoiko
 
Vaihtui ohjelmointireenin puolella alusta. Eli nykyään Win 7:ssa pyörii serverinä VertrigoServ (Apache + MySQL) ja PHP:ta reenaan NetBeans IDE 8.0.2 :lla.

Nyt pukkaa virheilmoitusta, josta en 2 h googlettelulla selviä.

---Koodi---

<?php
$lomake="<form action=\"$PHP_SELF\" method=\"post\">
Arvaa numero: <input type=\"text\" name=\"arvattava_numero\" size=\"5\" maxlength=\"80\" value=\"\">
<br>
<input type=\"submit\" value=\"Arvaa\">
</form>";
if ( $arvattava_numero == "" )
{
print $lomake;
}
elseif ( $arvattava_numero == "10" )
{
print "Arvasit oikein!";
}
elseif ( $arvattava_numero < "10" )
{
print "Arvaamasi numero on liian pieni.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
else
{
print "Arvaamasi numero on liian iso.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
?>

Tulos:
katso liitettä 127258
Koska seuraan opasta, voinen olettaa että pelkässä koodissa ei kommenttien perusteella ole ongelmaa. Joku siis mättää nyt serveri / ohjelmistotasolla tai näiden kaikkien yhteisvaikutuksesta Netbeanssin päivitin uusimpaan. Ideoita? <ohjelma ei myöskään etene, kun syötän kenttään arvon ja painan "Arvaa"-nappia.

Kaksi virhettä antaa:

1. kokeile: action=".$_SERVER['PHP_SELF']."
2. Tokan virheen mukaan ei ole olemassa muuttujaa arvattava_numero. Eli et saa tuosta lomakkeesta muuttujaa $arvattava_numero...

$arvattava_numero = $_GET['arvattava_numero'];

Tai jotain.... Toi lomake on omaan silmään nopeasti hassu :)
 
Äh, sori. Luin väärin.

$lomake="<form action=" . $_SERVER['PHP_SELF'] . " method=\"post\">

Eli liität muuttujan stringiin käyttämällä pisteitä. Kerro auttoiko
Eips auta.

<?php
$lomake="<form action=" . $_SERVER['PHP_SELF'] . " method=\"post\">
Arvaa numero: <input type=\"text\" name=\"arvattava_numero\" size=\"5\" maxlength=\"80\" value=\"\">
<br>
<input type=\"submit\" value=\"Arvaa\">
</form>";
if ( $arvattava_numero == "" )
{
print $lomake;
}
elseif ( $arvattava_numero == "10" )
{
print "Arvasit oikein!";
}
elseif ( $arvattava_numero < "10" )
{
print "Arvaamasi numero on liian pieni.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
else
{
print "Arvaamasi numero on liian iso.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
?>

( ! ) Notice: Undefined variable: arvattava_numero in C:\Program Files (x86)\VertrigoServ\www\PHPProject\index.php on line 7
Tips:
Ilmoitus.jpg

Lomake ei ole omaa käsialaa, vaan Jorkki.com » Artikkelit » PHP-opas
Voisi tuosta ohi pompata, mutta pythonia kun reenailin, huomasin että eniten oppi juuri näistä, kun googlaat joskus muutaman päivän mistä kiikastaa.
 
Eips auta.

<?php
$lomake="<form action=" . $_SERVER['PHP_SELF'] . " method=\"post\">
Arvaa numero: <input type=\"text\" name=\"arvattava_numero\" size=\"5\" maxlength=\"80\" value=\"\">
<br>
<input type=\"submit\" value=\"Arvaa\">
</form>";
$arvattava_numero = $_POST["arvattava_numero"];
if ( $arvattava_numero == "" )
{
print $lomake;
}
elseif ( $arvattava_numero == "10" )
{
print "Arvasit oikein!";
}
elseif ( $arvattava_numero < "10" )
{
print "Arvaamasi numero on liian pieni.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
else
{
print "Arvaamasi numero on liian iso.<br>";
print "Arvaa uudestaan:<br>$lomake";
}
?>

( ! ) Notice: Undefined variable: arvattava_numero in C:\Program Files (x86)\VertrigoServ\www\PHPProject\index.php on line 7
Tips:
katso liitettä 127260

Lomake ei ole omaa käsialaa, vaan Jorkki.com » Artikkelit » PHP-opas
Voisi tuosta ohi pompata, mutta pythonia kun reenailin, huomasin että eniten oppi juuri näistä, kun googlaat joskus muutaman päivän mistä kiikastaa.

Lisäsin koodin rivin.

Tutoriaalit on oikeasti hyviä. Katsele vähän uudempaa vain. Tai sitten sellaisin, missä tutoriaalin tekijällä ei PHP tuota virheitä ;)

Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Helsinki' for 'EEST/3.0/DST' instead in /var/www/fs1/2/jorkki/public_html/pikavipit/yla_pikavipit.php on line 239
 
Joo, huomasin että lienee vanha sekä aikasemminkin tosin törmännyt jossain oppaassa virheisiin, silloin tosin kommenttikentässä ollut jonkun korjaus.

Mutta nyt toimii ohjelma, mutta pukkaa ennen arvon syöttämistä vielä riviltä seitsemän tämän, sen jälkeen poistuu, kun ensimmäisen kerran on nappia painettu.

( ! ) Notice: Undefined index: arvattava_numero in C:\Program Files (x86)\VertrigoServ\www\PHPProject\index.php on line 7 Onkohan tämä jo "rautaan" liittyvää? Tuohon "Undefine index":iin törmäsin aiemmin päivällä etsiessäni ongelmaa tuohon juuri ratkaistuun ongelmaan.

Kiitos vinkeistä!
 
On kyllä ilo huomata, että kun tuolla pythonilla on tullut tehtyä tutoriaaleja läpi, niin tämä PHP luistaa sen ansiosta hieman sukkelammin.
 
Taas ois ongelma joka ei selviä googlen avustuksella. Koitan siis täällä...

Teen harjoituksessa vieraskirjaa, jossa opetellaan ensimmäistä kertaa tietokantojen käyttöjä.

Virheet ovat tälläiset:
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'mikkomallikas'@'localhost' (using password: YES)' in C:\Program Files (x86)\VertrigoServ\www\PHPProject\yhteys.php on line 3

( ! ) PDOException: SQLSTATE[HY000] [1045] Access denied for user 'mikkomallikas'@'localhost' (using password: YES) in C:\Program Files (x86)\VertrigoServ\www\PHPProject\yhteys.php on line 3

--yhteys.php---
<?php
$yhteys = new PDO("mysql:host=localhost;dbname=testit",
"mikkomallikas", "mikonsalasana");
?>

Eli kysymyksiä, viestihän on, että mikkomallikkaan pääsy on estetty. Tässä en siis luo mitään uutta käyttäjää? Vaan pitää jostain serverin configeista kaivaa mitkä on VertrigoServerin oletus username ja password? Mitään en ole siis aiemmin muuttanut, ekaa kertaa teen mitään tietokantoihin liittyvää.

Tuolla vielä koko harjoitus, jos selventää. http://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=php_12
 
No siis, kai sulla siellä on joku SQL tunnus ja salasana luotu....? Vissiin ei?
Luo siis käyttäjä sinne tietokantaan.
EDIT: Sekä sulla pitää olla itse tietokanta luotu, eli tuo "testit".

Tuol on muuten Xenforon editorissa videonapin vieressä nappi mistä saa koodin, ja PHP:lle on jopa oma missä näkyy värjättynä syntaxin mukaan:

PHP:
<?php
$yhteys = new PDO("mysql:host=localhost;dbname=testit",
"mikkomallikas", "mikonsalasana");
?>
 
No jumankauta, tuleepa komeesti tuon napin takaa.

Ei ole mitään SQL tunnuksia ja salasanoja ainakaan itse luotuja. Jahas, aletaas siis selvitteleen noita ensin sekä tuota tietokannan luontia.
 
No jumankauta, tuleepa komeesti tuon napin takaa.

Ei ole mitään SQL tunnuksia ja salasanoja ainakaan itse luotuja. Jahas, aletaas siis selvitteleen noita ensin sekä tuota tietokannan luontia.
Samaisessa mestassa minkä linkitit on se erillinen ohje tietokantojen käyttöön.
Eli tosiaan sun pitää luoda tietokanta sekä käyttäjä/salasana.
 
Joo kiitos vinkistä! Huomasinkin, että taas tulee uutta, kun joko hallitaan tietokantoja phpMyAdmin kautta tai komentoriviltä.

Eiköhän tämä taas etene, kun pikkasen tökkäsit oikeaan suuntaan.
 
Jos siellä phpMyAdmin on asennettuna sun servulla, niin voi olla helppo sen kautta tehdä. En tosin yhtään minkälaisel servul tätä duunailet ja oliko kuinka valmis jne., eli onko phpMyAdmin ollut imagessa mukana jo tms.

Tietty komentoriviltä se on hyvä oppia, etenkin jos joskus tulee vastaan tilanne ettei ole sitä phpmyadminii tai et tiedä sen osoitetta.
Admin nyt on ihan klikkailua vaan.
 
Vain vieraskirjan toimimaan. Kiitos! + Että tuotta oppaassa oli myös virhe jonka huomasin. Muualla koodissa puhuttiin taulusta nimeltä "viestit", mutta taulu luotiin nimellä "testit". Saattaa hieman vaikuttaa asiaan, että moista ei löydy.

Koitin kummankin kautta, mutta komentoriviltä en jostain syystä saanut tulostettua taulun sisältöä, lisäys kyllä onnistui.
Koodi:
SELECT * FROM viestit;


phpMyAdmin sen sijaan pelitti ja sieltä hommat sitten hoidin. Harjoittelen nyt ihan PC:llä asennetulla VertrigoServ:llä. Tuossa vieressä on kyllä raspi, jossa myös Apachet ja muut asennettuna, meni vaan niin hankalaksi sillä harjoittelu, niin laitan sen pyöriin vasta kun on jotain projektin tynkää jota koittaa pyörittää. Pythonia sillä reenailin niin sai GPIO pinneillä ohjailla harjoituksissa ledejä. Tarkotus ois saada se vielä käyttämään mokkulaa, eikä Wifi donglea. Tosin en ole koittanut sen kanssa vielä taistella.
 
Jahas, äkkiä kun kirjoittaa innoissaan, niin omasta tekstistä saa edes selvää. Muutama typo näköjään eksynyt matkaan :D
 

Suositut

Back
Ylös Bottom