Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ongelma kirjautumisen teossa

Daih [30.01.2010 16:08:04]

#

Eli olen teossa nettisivuilleni kirjautumis-systeemiä täältä putkasta löytyneet koodivinkin pohjalta, niin nyt tulee seuraavanlaista virheilmoitusta ja en ymmärrä, mistä se voisi johtua:

Catchable fatal error: Object of class PDO could not be converted to string in /home/jesse/public_html/tarkista.php on line 27

Alla vielä käytössä oleva koodi:

<?php
	// Aloitetaan istunto
	session_start();
	// Muodostetaan yhteys tietokantaan
	try {
		$yhteys = new PDO("mysql:host=localhost;dbname=maailmat","maailmat","*********");
	} catch (PDOExpection $e) {
		die("VIRHE: ".$e->getMessage());
	}
	$yhteys->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

	// Käyttäjä oletuksena false
	$kayttaja = false;
	$admin = false;

	// Sisäänkirjautuminen
	if (isset($_POST["tunnus"]) && isset($_POST["salasana"])) {
		// muuttujat turvallisesti talteen
		$tunnus = get_magic_quotes_gpc() ? $_POST['tunnus'] : mysql_real_escape_string($_POST['tunnus']);
		$salasana = get_magic_quotes_gpc() ? $_POST['salasana'] : mysql_real_escape_string($_POST['salasana']);
		$salasana = md5($salasana);

		// Luodaan käyttäjäkohtainen uniikki id
		$istuntotunnus = md5(uniqid(""));

		// Lisätään istunto käyttäjän tietoihin
		$kysely = $ $yhteys->prepare('UPDATE kayttajat SET istunto = ? WHERE nimi = ? AND salasana = ?');

		// Suoritetaan kysely
		$kysely->execute(array($istuntotunnus, $tunnus, $salasana));
		if ($kysely->fetch()==1); {
			$_SESSION["istuntotunnus"] = $istuntotunnus;
		}
	}

	// Käyttäjän tunnistaminen
	if (isset($_SESSION["istuntotunnus"])) {
		// Haetaan käyttäjän tiedot
		$kysely = $yhteys->prepare("SELECT * FROM kayttajat WHERE istunto = ?");
		$kysely->execute(array(mysql_real_escape_string($_SESSION['istuntotunnus'])));
		$kayttaja = $kysely->fetch();

		// Jos käyttäjä on pääkäyttäjä, niin hän on admin
		if ($kayttaja["id"] == 1) {
			$admin = true;
		}

	}
?>

Metabolix [30.01.2010 16:12:15]

#

Jos käyttäisit aivojesi sijaan silmiäsi :), huomaisit ehkä kyseisellä rivillä ylimääräisen dollarimerkin. Lisäksi pari riviä myöhemmin on ylimääräinen puolipiste if-lauseen jälkeen, minkä vuoksi if-lohko ei sisällä yhtään koodiriviä ja aaltosulkujen sisältö ajetaan joka tapauksessa.

Oma tapani on usein lukea virheilmoituksesta vain rivinumero; 90 % virheistä on kirjoitusvirheitä, jotka löytyvät nopealla vilkaisulla. Jos mitään ei näy, voi sitten lukea ilmoituksen tarkemmin.

Vastaus

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

Tietoa sivustosta