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; } } ?>
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.