Tässä on koodia, johon luultavasti pitäisi lisätä jotain omaa tuohon sql query kohtaan, mutta en tiiä mitä siihen pitää lisätä?
Koodinpätkä register.php:stä
<?php
// Fields are clear, add user to database
// Setup query
$q = "INSERT INTO `dbUsers` (`username`,`password`,`email`) "
."VALUES ('".$_POST["username"]."', "
."PASSWORD('".$_POST["password"]."'), "
."'".$_POST["email"]."')";
// Run query
$r = mysql_query($q);
// Make sure query inserted user successfully
if ( !mysql_insert_id() )
{
die("Error: User not added to database.");
}
else
{
// Redirect to thank you page.
Header("Location: register.php?op=thanks");
}
} // end ifKun ajan register.phpn, tulee virheilmoitus:
Koodi:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'vu5026'@'localhost' (using password: NO) in /var/www/virtual/edit/edit/htdocs/register.php on line 39
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/virtual/edit/edit/htdocs/register.php on line 39
Warning: mysql_insert_id() [function.mysql-insert-id]: A link to the server could not be established in /var/www/virtual/edit/edit/htdocs/register.php on line 42
Sinun täytyy koodin alussa yhdistää tietokantapalvelimeen funktiolla mysql_connect oikealla tunnuksella ja salasanalla.
Toinen huomio: PASSWORD-funktiota ei kuulu käyttää itse. Käytä esimerkiksi funktiota MD5 tai SHA1.
<?php
mysql_query("INSERT INTO `kayttajat` (tunnus, salasana, sahkoposti) VALUES('" . $_POST["tunnus"] . "', '" . md5($_POST["salasana"]) . "', '" . $_POST["email"] . "')");Koodiin kannattaa myös tehdä tarkistukset, että mikään kenttä ei ole tyhjä (!empty($kentta)). Tämä aihe varmaan kuuluu nettisivuohjelmoinnin puolelle. (mod. siirsi)
Tässä on koko register scripti, eli miten tuo mysql connect tapahtuu? ja muutin PASSWORDIN MD5seen.
<?php // dbConfig.php is a file that contains your // database connection information. This // tutorial assumes a connection is made from // this existing file. include ("dbConfig.php"); //Input vaildation and the dbase code if ( $_GET["op"] == "reg" ) { $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } // If we had problems with the input, exit with error if ($bInputFlag == false) { die( "Problem with your registration info. " ."Please go back and try again."); } // Fields are clear, add user to database // Setup query $q = "INSERT INTO `dbUsers` (`username`,`password`,`email`) " ."VALUES ('".$_POST["username"]."', " ."MD5('".$_POST["password"]."'), " ."'".$_POST["email"]."')"; // Run query $r = mysql_query($q); // Make sure query inserted user successfully if ( !mysql_insert_id() ) { die("Error: User not added to database."); } else { // Redirect to thank you page. Header("Location: register.php?op=thanks"); } } // end if //The thank you page elseif ( $_GET["op"] == "thanks" ) { echo "<h2>Thanks for registering!</h2>"; } //The web form for input ability else { echo "<form action=\"?op=reg\" method=\"POST\">\n"; echo "Username: <input name=\"username\" MAXLENGTH=\"16\"><br />\n"; echo "Password: <input type=\"password\" name=\"password\" MAXLENGTH=\"16\"><br />\n"; echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n"; echo "<input type=\"submit\">\n"; echo "</form>\n"; } // EOF ?>
Kummatkin esitetyt koodit ovat muuten loistavia esimerkkejä siitä, miten ei koskaan pidä tehdä! Voi sattua SQL-injektio, eli käyttäjä voi kirjoittaa tunnuksekseen tai sähköpostiosoitteekseen haitallista koodia. PHP:n kanssa onneksi yksi mysql_query voi sisältää vain yhden kyselyn, mutta silläkin voi onnistua tekemään kaikenlaista.
Kaikki tietokantaan laitettavat arvot pitää ajaa mysql_real_escape_string-funktion läpi haitallisten SQL-lauseiden estämiseksi, ja kaikki sivulle tulostettavat pitää ajaa htmlspecialchars-funktion läpi haitallisen HTML- ja JS-koodin estämiseksi.
Selvä, otin tuon koodin kuitenkin valmiista tutoriaalista, enkä ole muokannut siitä mitään, joten miten saisin sen toimivaksi, jottei mitään virheilmoitusta ilmestyisi?
Yhdistämällä tietokantaan funktiolla mysql_connect, kuten jo sanottiin.
eli lisään alkuun vain:
// Luodaan tietokantayhteys
$connection = mysql_connect($mysql_host,$mysql_username,$mysql_password) or die(mysql_error());
$db = mysql_select_db($mysql_db) or die(mysql_error());Muuttujiin lisäät sittenkin tiedot oikein. $mysql_host = localhost, $mysql_username = tunnuksesi, $mysql_password = salasanasi ja $mysql_db = tietokanta. Lisäksi $db = on mysql_select_db:n alussa täysin turha.
Anteeksi tämä tietämättömyyteni, mutta koodini on nyt tämä: ja valittaa
"Parse error: syntax error, unexpected T_STRING in"
<?php // dbConfig.php is a file that contains your // database connection information. This // tutorial assumes a connection is made from // this existing file. include('dbConfig.php'); $connection = mysql_connect($mysql_host = localhost, $mysql_username = tunnus, $mysql_password = **** ja $mysql_db = 1697_Kanta. //Input vaildation and the dbase code if ( $_GET["op"] == "reg" ) { $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "")
Oletko koskaan yhtään yrittänyt opetella koodausta? Tuo ja-sana keskellä koodia on jo melko lailla typeryyden huippu.
<?php
mysql_connect("localhost", "tunnus", "salasana", "tietokanta");Jotenkin arvasin :DD
kysyisin vielä, että tiedättekö mitä olen tehnyt väärin kun valittaa tuota kohtaa että Error: User not added to database.
// Fields are clear, add user to database
// Setup query
$q = "INSERT INTO `dbUsers` (`username`,`password`,`email`) "
."VALUES ('".$_POST["username"]."', "
."PASSWORD('".$_POST["password"]."'), "
."'".$_POST["email"]."')";
// Run query
$r = mysql_query($q);
// Make sure query inserted user successfully
if ( !mysql_insert_id() )
{
die("Error: User not added to database.");
}
elseMuuta rivi $r = mysql_query($q); täksi: $r = mysql_query($q) or die(mysql_error()); ja kerro sitten mitä näytölle tulostuu.
"No database selected"
Metabolix kirjoitti:
<?php mysql_connect("localhost", "tunnus", "salasana", "tietokanta");
Ei tietokantaa valita mysql_connect funktiossa.
Hex kirjoitti:
"No database selected"
Lisää mysql_connect funktion jälkeen rivi mysql_select_db("Tietokannan nimi");
<?php
mysql_connect("localhost", "tunnus", "salasana");
mysql_select_db("tietokanta");Jo menee vaikean kautta, nyt valittaa:
Warning: Cannot modify header information - headers already sent by (output started at sivuni.com/htdocs/dbConfig.php:1) in sivuni.com/htdocs/register.php on line 51
Koska sivulla on tulostettu tekstiä ennen header-funktiota. Lisää sivun dbConfig.php ensimmäiselle riville ob_start();
Tulostat ennen headereita jotakin. Vika ei tuosta koodipätkästä selviä, koska tulostus alkaa jo dbConfig.php-tiedoston rivillä 1.
Macro kirjoitti:
Ei tietokantaa valita mysql_connect funktiossa.
Joo, oho. Katsoin järjestyksen kysyjän muokkaamasta koodista, kun jotenkin oletin taas kerran, että aiempia ohjeita noudatettaisiin edes sen verran, että annetut funktiot olisivat entisessä (oikeassa) järjestyksessä. Ilmeisesti nyt kuitenkin ymmärrys ohjelmoinnista on niin heikolla tasolla, että parempi olisi vain palkata joku tekemään...
hmm... dbconfigini näyttää nyt tältä?
<? ob_start(); // Replace the variable values below // with your specific database information. $host = "localhost"; $user = "sensored"; $pass = "sensored"; $db = "sensored"; // This part sets up the connection to the // database (so you don't need to reopen the connection // again on the same page). $ms = mysql_pconnect($host, $user, $pass); if ( !$ms ) { echo "Error connecting to database.\n"; } // Then you need to make sure the database you want // is selected. mysql_select_db($db); ?>
Äh, ota tiedoston register.php alusta pois include rivi. Tuon verran sinun pitäisi ymmärtää tuota ohjeidemme avulla. Laita register.php:n alkuun se ob_start(). Ei sitä MySQL yhteyttä kahdesti muodosteta!
nyt valittaa "Parse error: syntax error, unexpected T_STRING" vaikka tein ohjeidesi mukaan..
tämän höskän jälkeen lähtee sellanen php kuuri, että varmasti tulee yksinkertaisemmatkin asiat selväksi :D
Taas sinulla on jossain päin tekstiä, minne se ei kuulu. Helpottaisi, kun näyttäisit koodia tuosta kohtaa.
Register.php:
<?php ob_start() // dbConfig.php is a file that contains your // database connection information. This // tutorial assumes a connection is made from // this existing file. mysql_connect("localhost", "sens", "sens"); mysql_select_db("sens"); //Input vaildation and the dbase code if ( $_GET["op"] == "reg" ) { $bInputFlag = false; foreach ( $_POST as $field ) { if ($field == "") { $bInputFlag = false; } else { $bInputFlag = true; } } // If we had problems with the input, exit with error if ($bInputFlag == false) { die( "Problem with your registration info. " ."Please go back and try again."); } // Fields are clear, add user to database // Setup query $q = "INSERT INTO `dbUsers` (`username`,`password`,`email`) " ."VALUES ('".$_POST["username"]."', " ."PASSWORD('".$_POST["password"]."'), " ."'".$_POST["email"]."')"; // Run query $r = mysql_query($q) or die(mysql_error()); // Make sure query inserted user successfully if ( !mysql_insert_id() ) { die("Error: User not added to database."); } else { // Redirect to thank you page. Header("Location: register.php?op=thanks"); } } // end if //The thank you page elseif ( $_GET["op"] == "thanks" ) { echo "<h2>Thanks for registering!</h2>"; } //The web form for input ability else { echo "<form action=\"?op=reg\" method=\"POST\">\n"; echo "Username: <input name=\"username\" MAXLENGTH=\"16\"><br />\n"; echo "Password: <input type=\"password\" name=\"password\" MAXLENGTH=\"16\"><br />\n"; echo "Email Address: <input name=\"email\" MAXLENGTH=\"25\"><br />\n"; echo "<input type=\"submit\">\n"; echo "</form>\n"; } // EOF ?>
dbconfig.php:
<? // Replace the variable values below // with your specific database information. $host = "localhost"; $user = "sens"; $pass = "sens"; $db = "sens"; // This part sets up the connection to the // database (so you don't need to reopen the connection // again on the same page). $ms = mysql_pconnect($host, $user, $pass); if ( !$ms ) { echo "Error connecting to database.\n"; } // Then you need to make sure the database you want // is selected. mysql_select_db($db); ?>
Helpointa olisi varmaan kertoa, mistä olet tuon pätkän ladannut, niin saisit paljon täsmällisemmät ohjeet.
Hex kirjoitti:
tämän höskän jälkeen lähtee sellanen php kuuri, että varmasti tulee yksinkertaisemmatkin asiat selväksi :D
Mikset lue esimerkiksi jo nyt putkan PHP-opasta? Tuolla menolla tuskin saat edes tuota pätkää toimintakuntoon.
Edit. Teit todellakin kirjaimellisesti ohjeiden mukaan... puolipiste päättää rivin.
ob_start():n perään kuuluu laittaa ;-merkki.
Ota varmuuden vuoksi tiedostojen lopusta ?>-merkinnät pois.
toimii! ongelmana oli tuo: ;
Nyt register.phpn jälkeen siirrytään seuraavaan ongelmakohtaan nimeltä: login.php..
ei jaksais jokaista käydä läpi? onko tosiaan noin huono toi systeemi että jokaisessa virheitä...
tämän tein:
http://www.trap17.com/index.php/php-simple-login-tutorial_t7887.html
tässä vielä virheellisen login.phpn koodi:
<?php session_start(); // dBase file include "dbConfig.php"; if ($_GET["op"] == "login") { if (!$_POST["username"] || !$_POST["password"]) { die("You need to provide a username and password."); } // Create query $q = "SELECT * FROM `dbUsers` " ."WHERE `username`='".$_POST["username"]."' " ."AND `password`=PASSWORD('".$_POST["password"]."') " ."LIMIT 1"; // Run query $r = mysql_query($q); if ( $obj = @mysql_fetch_object($r) ) { // Login good, create session variables $_SESSION["valid_id"] = $obj->id; $_SESSION["valid_user"] = $_POST["username"]; $_SESSION["valid_time"] = time(); // Redirect to member page Header("Location: members.php"); } else { // Login not successful die("Sorry, could not log you in. Wrong login information."); } } else { //If all went right the Web form appears and users can log in echo "<form action=\"?op=login\" method=\"POST\">"; echo "Username: <input name=\"username\" size=\"15\"><br />"; echo "Password: <input type=\"password\" name=\"password\" size=\"8\"><br />"; echo "<input type=\"submit\" value=\"Login\">"; echo "</form>"; } ?>
valittaa:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'vu5026'@'localhost' (using password: NO) in /var/www/virtual/sivuni.com/htdocs/login.php on line 19
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/www/virtual/sivuni.com/htdocs/login.php on line 19
Sorry, could not log you in. Wrong login information.
https://www.ohjelmointiputka.net/koodivinkit/
Noh, koitetaan.. Kyllä aikaa riittää ja kirjottelen tänne samaan aiheeseen jos tulee tuosta linkistä ongelmia :D
aha, voiko olla näin yksinkertaista että lähettämäsi linkin ohjeet toimi heti :D
EDIT: millä koodilla saisin koko sivun keskittymään?
Aihe on jo aika vanha, joten et voi enää vastata siihen.