Autor Zpráva
ondrej16556
Profil
Dobrý deň,
potreboval by som pomôcť s php kódom na prihlásenie.
Po prihlásení mi píše: Parse error: syntax error, unexpected '}' in /home/users/adminstr/stredovek.comehere.cz/web/login.php on line 68

Kód súboru login.php :
<?php session_start() ?>
<html>
<head>
<title>Storočná vojna > Registrácia</title>
</head>
<body bgcolor="#980000">
<table align="center" bgcolor="#FF0000" width="900px">
<tr bgcolor="#FF0000">
<?php include ("logo.php"); ?>
</tr>
<tr bgcolor="#FF0000">
<?php include ("title.php"); ?>
</tr>
<tr bgcolor="#FF0000" align="center">
<?php include ("menu.php"); ?>
</tr>
<tr bgcolor="#FF0000">
<?php
	if($_POST) {
		require_once 'db.php';
		$username = $_POST['username'];
		$password = $_POST['password'];	
		$server = $_POST['server'];
		$conn = mysql_connect($dbhost,$dbuser,$dbpass)
			or die ('Error connecting to mysql');
		mysql_select_db($dbname);
		$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('%s') AND password='%s'",
			mysql_real_escape_string($username),
			mysql_real_escape_string(md5($password)));
		$result = mysql_query($query);
		list($count) = mysql_fetch_row($result);
		if($count == 1) {
			$_SESSION['authenticated'] = true;
			$_SESSION['username'] = $username;
			$query = sprintf("UPDATE users SET last_login = NOW() WHERE UPPER(username) = UPPER('%s') AND password = '%s'",
				mysql_real_escape_string($username),
				mysql_real_escape_string(md5($password)));
			mysql_query($query);
			$query = sprintf("SELECT narod FROM users WHERE UPPER(username) = UPPER('%s') AND password='%s'",
				mysql_real_escape_string($username),
				mysql_real_escape_string(md5($password)));
			$result = mysql_query($query);
			list($narod) = mysql_fetch_row($result);
			if($narod == 'fra'): {
				$_SESSION['narod'] = 'fra';		
			} elseif($narod == 'ang'): {
				$_SESSION['narod'] = 'ang';		
		    } elseif($narod == 'sve'): {
				$_SESSION['narod'] = 'sve';		
			};
			
			$query = sprintf("SELECT is_admin FROM users WHERE UPPER(username) = UPPER('%s') AND password='%s'",
				mysql_real_escape_string($username),
				mysql_real_escape_string(md5($password)));
			$result = mysql_query($query);
			list($is_admin) = mysql_fetch_row($result);
			if($is_admin == 1) {
				$_SESSION['vstup'] = 'prihlaseny';
				$_SESSION['password'] = $password;
				$_SESSION['server'] = $server;
				header('Location:admin.php');			
			} else {
				$_SESSION['vstup'] = 'prihlaseny';
				$_SESSION['password'] = $password;
				$_SESSION['server'] = $server;
				header('Location:Dedina/dedina.php');				
			}
		} else {	?>
<div class="text">Toto užívateľské meno a hoslo nezodpovedá databáze!</div>
<?php	}
	}
?>
</tr>
</table>
<div align="center" style="color:#888; font-size:12px;">Copyright © <a href="index.html" class="odkaz">rannystredovek.euweb.cz</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Optimalizované pre IE 1440x900</div>
</html>


Skúšal som aj chybu nájsť, niečo som našiel ale nie všetko :(
Poradili by ste mi prosím?
panther
Profil
ondrej16556:
chybová hláška je nejasná? Řiď se číslem řádku.

Neočekávaná závorka - že by na inkriminovaném řádku nějaká přebývala, co?
ondrej16556
Profil
Chyba je v riadku 68, to viem ale mám tam
} else {  ?>

A v tom riadku nie je žiadna chyba.
Pozriem sa ešte na to.
AM_
Profil
ondrej16556:
if($narod == 'fra'): {
$_SESSION['narod'] = 'fra';
}
tady mícháš dohromady dvě alternativní syntaxe.
Jedna možnost:
if ($podminka) { //zadna dvojtecka!!
...
} else {
...
}

Druhá možnost:
if ($podminka):
...
else:
...
endif;

V tom bude nejspíš problém.
panther
Profil
ondrej16556:
A v tom riadku nie je žiadna chyba
v tomhle ne, ale kolem něj. Závorky si přepočítat zvládneš, dělat to za tebe nebudu.

EDIT: tak nepřebývá, AM_ je vítěz :-)
AM_
Profil
[#3] ondrej16556
občas se stane, že předmět chyby není na tom řádku, tam je pouze něco, s čím si překladač neporadil. Může se stát, že závorku navíc máš o několik řádků výš, což je sice programově špatně protože tam být nemá, ale překladač neví, kde jsi chtěl blok ukončit. Proto ohlásí chybu až u závorky, kterou si neumí zařadit. Doporučuju použít editor se zvýrazněním syntaxe (např. PSPad).
ondrej16556
Profil
Používam editor Notepad++

//EDIT:
A keď som odstránil dvojbodky vypísalo mi, že sa to nezhoduje z databázou.
AM_
Profil
ondrej16556:
Nebudeme ti hledat každou chybu. Ty nemáš konkrétní programátorský problém který chceš vyřešit, ty jsi napsal nefunkční kód a chceš ho po nás odladit. To tu neděláme.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0