Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php ei mee jakeluun

Sivun loppuun

karvinen [01.07.2004 20:50:01]

#

Mikähän tuossa kyseisessä lauseessa takkuaa...

Oon jo katsellut pitkään muttei jakeluun...

Print:tin kanssa toimii ilman ongelmia.


$tarkistus = mysql_result($hakutulos, $i, "salasana");

Antti Laaksonen [02.07.2004 01:47:03]

#

Ei tuossa kyllä mitään vikaa pitäisi olla, jos muuttujien arvot ovat oikeat. Tieto siis näkyy tulostettuna oikein? Ei nyt muuta tule mieleen, kuin että merkkijonoon on eksynyt ylimääräisiä välilyöntejä tai rivinvaihtoja, joita ei huomaa, kun merkkijonon tulostaa sivulle (jos siis salasanaa verrataan toiseen). Mutta jos ei ongelma muuten ratkea, niin näytä vähän enemmän koodiasi.

karvinen [02.07.2004 14:07:42]

#

Hokasin virhettä vähän pidemmälle.
Alla oleva haku tulostaa salasana kentän kolmannelta riviltä.

Tarkoitus olisi että tulostaa kentän, salasana riviltä jossa id:n arvona 3.

Myslistä poistettu php:llä rivejä joten ei vastaa toisiaan.

echo mysql_result($hakutulos, 3, "salasana");

ajv [02.07.2004 14:59:49]

#

Öh öh... Mikset sitten hae id:n perusteella salasanaa?

karvinen [02.07.2004 15:12:35]

#

ajv kirjoitti:

Öh öh... Mikset sitten hae id:n perusteella salasanaa?

Miten???

Se tässä onkin ongelma ei mee jakeluun ;)

ajv [02.07.2004 15:25:00]

#

<?php
$temp = mysql_query("SELECT salasana FROM taulu WHERE id = 3");
$temp = mysql_fetch_array($salasana);
$salasana = $temp['salasana'];
echo $salasana;
?>

Nyt vaikuttaa siltä että tietokanta on hieman oudosti suunniteltu. Ihan mielenkiinnosta: miksi salasana edes haetaan tietokannasta? Yleensähän siihen vain verrataan ja haetaan muita tietoja sen perusteella.

karvinen [02.07.2004 15:34:23]

#

Että saa verrattua onko sama kuin käyttäjän lomakkeessa syöttämä salasana.

Jos keino miten saa verrattua tuonne kantaan päin niin kerro ihmeessä.

(PHP + MYSQL opetteluasteella.)

ajv [02.07.2004 15:50:00]

#

Ihan hatusta heitän nyt tämmösen esimerkin:

<?php
//käyttäjän lähettämä salasana lomakkeelta
$user_pswd = mysql_escape_string($_POST['salasana']);
//haetaan salasanan perusteella etunimi ja sukunimi
$temp = mysql_query("SELECT etunimi, sukunimi FROM taulu WHERE salasana = '$user_pswd'");
$temp = mysql_fetch_array($salasana);
$etunimi = $temp['etunimi'];
$sukunimi = $temp['sukunimi'];
//jos vaikka $etunimi ei ole tyhjä kirjautuminen onnistui
if($etunimi != ""){
   echo "Kirjautuminen onnistui<br>\n"
   echo "Tervetuloa $etunimi $sukunimi!";
}else{
   //muistathan, että ennen haederia ei saa tulostaa mitään!
   header("Location: http://perse.com/");
}
?>

Edit:

<?php
//nii ja yleensä kirjauduttaessa kysytään myös käyttäjätunnusta:
$user_pswd = mysql_escape_string($_POST['salasana']);
$tunnus = mysql_escape_string($_POST['tunnus']);
$temp = mysql_query("SELECT etunimi, sukunimi FROM taulu WHERE salasana = '$user_pswd' AND tunnus = '$tunnus'");
//jne...
?>

karvinen [02.07.2004 16:49:38]

#

Vähän metsään selitetään tarkemmin...

Tarkoituksena on tehdä scripti mikä toimii aikaslailla samanlailla kun vieraskirja.

ilmoituksen jättäjä saa valita ilmoitusta jättäessään salasanan millä ilmoituksen voi poistaa.

Tulostaa ilmoitukset for silmukassa tulostaa kaikkiin ilmoituksiin posta linkin.

Painettaessa linkkiä nappaa id:n millä rivilla ilmoitus on ja menee sivulle mikä kysyy salasanan.

Sivulta lähetetään salasana ($salainen) ja id ($iidee) sivulle del.php(allaoleva koodi) koodi postaa viestin(toimii näin)


Pitäisi saada lisäksi tarkistettua samalla id numerolla olevalta rivilta salasana kentän sisällön että on sama kuin $salainen.

Kanta suurinpiirtein.
-----------------------------------------------------
! id ! nimi ! posti ! puhelin ! salasana !
-----------------------------------------------------
! 3 ! minä ! j@k.fi! 0400-33 ! munsala !
-----------------------------------------------------
! 4 ! muu ! h@g.fi! 06-8665 ! kijkij !
-----------------------------------------------------

<?php

include("yhteys.php");

$sqlkom="SELECT * FROM elukat ORDER BY id, salasana";
$hakutulos=mysql_query($sqlkom, $yhteys) or die("SQL-komennossa virhe:" .mysql_error($yhteys));
mysql_query("DELETE FROM `elukat` WHERE `id` = '$iidee' LIMIT 1");

echo "Viesti poistettu onnistuneesti.";

mysql_close($yhteys)
or die("Error in connection.");
?>

ajv [02.07.2004 17:51:31]

#

Ups, vähän meni mettään toi mun esimerkki...
Hilppasen on nyt kiirus, mutta sen verran, että tuohan onnistuu yhdellä kyselyllä:

mysql_query("DELETE FROM elukat WHERE id = $iidee AND salasana = '$salasana'");

id-kentän yhteydessä ei tarvitse käyttää hipsuja, koska id on numeerinen, samoin ei taulun eikä kenttien kanssa.

Tänne kirjotin juuri tuosta viestien poistosta.

Nyt viikonlopun viettoon!

Edit: Just huomasin että sinähän se siellä kuhassakin olit kyselijänä :)

karvinen [02.07.2004 17:59:05]

#

Poisto onnistuukin ongelmitta.

Pitäisi vaan saada tuo tarkistus ettei kuka tahansa pysty poistamaan.

ajv [03.07.2004 23:37:12]

#

~3 promillea:
Siis jos kaikki viestin kirjoittajan tiedot viesti mukaan lukien on samalla rivillä, niin miksei seuraava toimisi?

mysql_query("DELETE FROM elukat WHERE id = $iidee AND salasana = '$salasana'");

Jokaisella rivillä on oma id, niin on mahdottomuus, että poistuisi useampi kuin id:n osoittama rivi ja sekin vain siinä tapauksessa, että salasana on oikea.

Olga [03.07.2004 23:47:42]

#

ajv kirjoitti:

~3 promillea:
Siis jos kaikki viestin kirjoittajan tiedot viesti mukaan lukien on samalla rivillä, niin miksei seuraava toimisi?

mysql_query("DELETE FROM elukat WHERE id = $iidee AND salasana = '$salasana'");

Jokaisella rivillä on oma id, niin on mahdottomuus, että poistuisi useampi kuin id:n osoittama rivi ja sekin vain siinä tapauksessa, että salasana on oikea.

Aika hyvin 3:lla promillella :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta