Moi,
Yritin tehdä kirjautumis sivustoa, mutta tuli:
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in * on line 4
<?php if(!isset($tunnus) and $_GET['tarkista'] != "tunnus"){ echo'<form action="'.$_SERVER['PHP_SELF'].'?tarkista=tunnus" method="post"> if(!isset($salasana) and $_GET['tarkista'] != "salasana") { echo'<form action="'$_SERVER['PHP_SELF'].'?tarkista=salasana" method="post"> Nimi:<br> Salasana:<br> <input type="text" name="tunnus"><br> <input type="text" name="salasana"><br> <input type="submit" value="Kirjaudu"><br></form>'; } if($_GET['tarkista'] == "tunnus") if($_GET['tarkista'] == "salasana") { $nimi = "".$tunnus.".php"; $salasana = "".$tunnus.".php"; if(!file_exists($tunnus)) if(!file_exists($salasana)) { echo'Tunnusta '.$tunnus.' ei löytynyt! <a href="'.$_SERVER['PHP_SELF'].'">Kirjaudu </a>'; }else{ header("Location: ".$kirjautuminen.""); } } ?>
Tarkoitus olisi saada erillinen tunnus ja kirjautumis kenttä. Salasana tarkistetaan tunnuksen sisällä olevasta salanasta tai .dat tiedostosta ja sitten jos tunnus ja salasana on oikea siirrytään tunnus sivulle. es:
Jos tunnus on testaaja ja salasana test tarkistetaan tunnuksen olemassa olo ja oikea salasana ja siirrytään jos tunnus on olemassa sivulle testaaja.php ja jos ei ole olemassa tulee tuo ilmoitus tunnusta ei löytynyt, mutta koodissa on jotakin vikaa ja tämä ei toimi, voinko saada apua?
Sulta nyt ainakin puuttuu '; 3. rivin lopusta.
Korjasin rivin:
... header("Location: ".$kirjautuminen."")';
Ei tähän voi sanoa kuin että: WTF?
Muuta rivi 4 tälläseks:
echo'<form action="'.$_SERVER['PHP_SELF'].'?tarkista=salasana"
Korjattu..., mut vielä on sama virhe ilmoitus...
Pitäisi ehkä jättää vastaamatta kun vaikuttaa taas ihan trollaukselta koko postaus.
Mutta siltä varalta, ettei olisikaan niin lisää sinne 3. rivin loppuun se '; kuten jo ehdotin ja poista tuo ylimääräinen ' minkä sanoit lisänneesi 21. rivin loppuun. Sen jälkeen siellä on vielä runsaasti virheitä, mutta ehkä näillä pääset eteenpäin.
Ja kannattaa hankkia joku kelvollinen editori, niin näet helpommin tuollaiset triviaalit virheet.
Tuossa nyt olisi tuo koodisi oikealla määrällä } merkkejä ja sisennettynä, mutta ei siinä kyllä hitusenkaan järkeä ole. (muita virheitä en korjannut)
Siis jos avaat lohkon {-merkillä niin se täytyy myös sulkea }-merkillä. Sisennykset voi auttaa hahmottamaan koodia, eli näet yhdellä silmäyksellä mitä lohkoa ei suoriteta suoraan jos if ei toteudu, yms.
<?php if(!isset($tunnus) and $_GET['tarkista'] != "tunnus") { echo'<form action="'.$_SERVER['PHP_SELF'].'?tarkista=tunnus" method="post">'; if(!isset($salasana) and $_GET['tarkista'] != "salasana") { echo'<form action="'$_SERVER['PHP_SELF'].'?tarkista=salasana" method="post"> Nimi:<br> Salasana:<br> <input type="text" name="tunnus"><br> <input type="text" name="salasana"><br> <input type="submit" value="Kirjaudu"><br></form>'; } if($_GET['tarkista'] == "tunnus") if($_GET['tarkista'] == "salasana") { $nimi = "".$tunnus.".php"; $salasana = "".$tunnus.".php"; if(!file_exists($tunnus)) if(!file_exists($salasana)) { echo'Tunnusta '.$tunnus.' ei löytynyt! <a href="'.$_SERVER['PHP_SELF'].'">Kirjaudu </a>'; }else{ header("Location: ".$kirjautuminen.""); } } } ?>
echo'<form action="'.$_SERVER['PHP_SELF'].'?tarkista=tunnus" method="post">
->
echo'<form action="'.$_SERVER['PHP_SELF'].'?tarkista=tunnus" method="post">';
ja
echo'<form action="'$_SERVER['PHP_SELF'].'?tarkista=salasana"
->
echo'<form action="'.$_SERVER['PHP_SELF'].'?tarkista=salasana"
Kiitos, nyt toimii niin, että tulle lomake tunnus ja salasana, mutta se ei vielä ymmärrä tunnuksien ja salasanan päälle, koska se etenee eteenpäin vaikka siihen ei laittaisi tunnust tai salasanaa.
Nyt jos tässä olisi luotuna vaikkapa tunnus nimi testaaja niin jos tunnus riville annetaan testaaja ja salasana löytyy .htpasswd -tiedostosta ja kun testaaja salasana olisi vaikkapa test, joka olisi lisätty tonne .htpasswd -tiedostoon tunnuksen lisäksi pass: test ja jos nämä kaksi on laitettu riville tunnus ja salasana niin siirrytään sivulle testaaja.php ja jos tunnus on väärä (= ei ole olemassa) ilmoitetaan siitä. Muuten kaikki on ok.
Aihe on jo aika vanha, joten et voi enää vastata siihen.