| Autor | Zpráva | ||
|---|---|---|---|
| Sobky Profil |
#1 · Zasláno: 3. 7. 2014, 16:57:24
Dobrý deň!
Spravil som si stránku, na ktorej sa treba najprv prihlásiť. No a po prihlásení by som chcel aby sa na tej stránke zmenil jej obsah ale link osal taký istý. Viem, že sa to dá, ale neviem ako :/ Tu je skript <!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' lang='sk'>
<head>
<title>Invite list</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="author" content="SobkyLuckSK">
<link rel="stylesheet" type="text/css" href="invite.css">
</head>
<body>
<img class="logo" src="http://www.magicraft.4fan.cz/wp-content/uploads/2014/06/MAGICRAFT-3.png">
<form action="" method="POST">
<fieldset class="table">
<legend><p style="font-size: 2em; color: gold; font-weight: bold">Prihlásenie</p></legend>
<table width="100%">
<tr>
<p style="font-size: 0,5em; color: gold; font-weight: bold">Pre prihlásenie použite rovnaké údaje ako k serveru MagiCraft</p>
</tr>
<tr>
<td width="80%"><input type="text" class="nick" name="nick" tabindex="1" size="25" placeholder="Nick"></td>
</tr>
<tr>
<td width="80%"><input type="password" class="heslo" name="heslo" tabindex="2" size="25" placeholder="Heslo"></td>
</tr>
<tr>
<td colspan="4" align="center"><input type="submit" class="tlacitko" value="Prihlásiť" tabindex="3"></td>
</tr>
</table>
</fieldset>
</form>
<?php
$nick = $_POST['nick'];
$heslo = $_POST['heslo'];
$heslicko = "tajne";
if($heslo == $heslicko) {
header("Location: invite.php");
echo "Prihlasený"
exit;
}
?>
</body>
</html>Od toho <?php už neviem ako |
||
| Tomáš123 Profil |
#2 · Zasláno: 3. 7. 2014, 17:12:14
Sobky:
S PHP-čkom nedosiahneš dynamiku presmerovania. Na to je JavaScript. Riadok 25: Načo spájaš 4 stĺpce, keď tabuľka má iba jeden? |
||
| Taps Profil |
#3 · Zasláno: 3. 7. 2014, 17:17:27
|
||
| Sobky Profil |
#4 · Zasláno: 3. 7. 2014, 17:23:19
aha no diki ale ja s javaskriptom neviem nič :D tak ako by to malo asi vyzerať?
|
||
| David Klouček Profil |
#5 · Zasláno: 3. 7. 2014, 17:43:28
Sobky:
„aha no diki ale ja s javaskriptom neviem nič“ Správnej čas se ho začít učit JavaScript. „tak ako by to malo asi vyzerať?“ Dá se to napsat různě. |
||
| jenikkozak Profil |
#6 · Zasláno: 3. 7. 2014, 17:53:33
Já jsem to pochopil trochu jinak než kluci přede mnou.
Jde ti jen o to, aby poté, co uživatel odešle přihlašovací údaje, se nepřesměrovávalo na jinou stránku, ale zůstala zobrazená ta samá adresa? Na to by totiž JavaScript ani AJAX nebyly potřeba. |
||
| Tomáš123 Profil |
#7 · Zasláno: 3. 7. 2014, 18:07:51
Sobky:
Možno sa pletiem, ale na vyriešenie toho čo napísal jenikkozak by stačilo dať do <form action="#"...> mriežku, nie?
|
||
| Taps Profil |
#8 · Zasláno: 3. 7. 2014, 18:08:30
jenikkozak:
„ale zůstala zobrazená ta samá adresa?“ ano, ale jiný obsah, proto si myslím, že by v tomto případě byl využitelný AJAX |
||
| jenikkozak Profil |
#9 · Zasláno: 3. 7. 2014, 18:31:05
Tomáš123:
Nesmysl. I kdyby stránka nevyhazovala parse error kvůli chybějícímu středníku na 35. řádku a nevyhazovala chybu, že se stránka snaží měnit hlavičky poté, co byl prohlížeči odeslán kus HTML, mřížka jako obsah atributu action by se jen připojila k URL po odeslání formuláře, ovšem pak by došlo k přesměrování vyvolanému na řádku 36.
Pokud někdo chce, aby se vyplněný formulář odeslal téže stránce, může action formuláře úplně vynechat.
Taps: Myslím si, že když se ze skriptu vyhodí přesměrování na řádku 35 a za příkaz na 36. řádku přidá středník, bude zadání splněno i bez AJAXu. |
||
| Sobky Profil |
#10 · Zasláno: 3. 7. 2014, 18:51:28
No to čo napísal jenikkozak, že som dal preč ten 35. riadok a na 36 doplnil ; tak sa niečo zmenilo. ale stále tam bol tan istý obsah a ja chcem po prihlásení iný
|
||
| Taps Profil |
#11 · Zasláno: 3. 7. 2014, 19:37:22
Sobky:
if($heslo == $heslicko) {
echo "Můj tajný obsah";
} |
||
| Sobky Profil |
#12 · Zasláno: 3. 7. 2014, 20:15:35
Ale toto napíše pod ten obsah čo mám tu vetu, ja chcem aby sa ten obsah cely zmenil
|
||
| yFang Profil |
#13 · Zasláno: 3. 7. 2014, 20:56:37
Sobky:
Asi to chceš nějak takhle: <?php if ($heslo == $heslicko): ?> <!-- html a obsah tajné stránky --> <?php else: ?> <!-- přihlašovací formulář --> <?php endif; ?> |
||
| Fisir Profil |
#14 · Zasláno: 4. 7. 2014, 00:10:53
Reaguji na Sobkyho:
Na úplný začátek souboru vlož: <?php
if(isset($_POST['heslo'])){
$heslo = $_POST['heslo'];
$heslicko = "tajne";
if($heslo == $heslicko) {
include('poprihlaseni.php');
exit();
}
}
?>poprihlaseni.php do kterého vlož obsah, který chceš aby se ti zobrazil po přihlášení. Atribut action přihlašovacího formuláře nech prázdný.
|
||
| Sobky Profil |
#15 · Zasláno: 4. 7. 2014, 10:25:21
No toto je celkom dobré aj to funguje a potom by sa ako dalo nataviť lebo keď refreshnem stránku tak ma to zase hodí na login a ja chcem aby už potom ostal na tej stránke po prihlasení
|
||
| jenikkozak Profil |
#16 · Zasláno: 4. 7. 2014, 10:34:59
Potřebuješ tedy na serveru uchovat informaci, že se uživatel již při některém z předchozích načtení stránky přihlásil. K tomu se ti budou hodit session: Sessions.
|
||
| Sobky Profil |
#17 · Zasláno: 4. 7. 2014, 12:00:06
Tu mám skript
Kamoš mi poradil, že Do session si ulož něco jako $loggedIn = TRUE; a pak normálně podmínka if ($loggedIn) { (zobrazení formuláře s přihlášením } else { (obsah pro přihlášenýho uživatele }. A to už neviem, kde mám dať <?php
///////////////
// NASTAVENI //
///////////////
$db_host = "dsasadsad"; // Zde zadej hostitele
$db_uzivatel = "adasddsa"; // Zde uživatelské jméno
$db_heslo = "sadsasddsa"; // Zde heslo
$db_databaze = "asfafsfdsg"; // Zde jméno databáze
$db_tabulka = "authme"; // Zde zadej jméno AuthMe tabulky
$hash = "SHA256"; // Zde zadej typ šifrování
///////////////
// SKRIPT //
///////////////
$mysqli = new mysqli($db_host, $db_uzivatel, $db_heslo, $db_databaze);
if ($mysqli->connect_errno)
{
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
if (isset($_POST['nick']) && isset($_POST['heslo']))
{
if (!empty($_POST['nick']) && !empty($_POST['heslo']))
{
//Ochrana a tvorba variablů
$nick = preg_replace('/\s+/', '', $_POST['nick']);
$heslo = preg_replace('/\s+/', '', $_POST['heslo']);
$result = $mysqli->query("SELECT password FROM ".$db_tabulka." WHERE username = '".$nick."'");
$row = $result->fetch_assoc();
switch ($hash) {
case 'MD5':
$heslicko = hash('md5', $heslo) === $row['password']; break;
case 'SHA1':
$heslicko = hash('sha1', $heslo) === $row['password']; break;
case 'SHA256':
$userPasswordField = explode('$', $row['password']);
$heslo = hash('sha256', $heslo);
$heslo .= $userPasswordField[2];
$heslo = '$SHA$' . $userPasswordField[2] . '$' . hash('sha256', $heslo);
$heslicko = $heslo === $row['password'];
break;
}
$ip = $_SERVER['REMOTE_ADDR'];
//Ověření nicku
$query_nick = mysqli_query($mysqli, "SELECT username FROM ".$db_tabulka." WHERE username = '".$nick."'");
if ($data_nick = mysqli_fetch_array($query_nick))
{
//Ověření hesla
if ($heslicko)
{
$_SESSION['uzivatel'] = $nick;
// toto neviem ako spraviť
$loggedIn = TRUE;
if ($loggedIn)
{
include('login.php');
exit();
}
else
{
include('login.php');
exit();
}
}
else
{
//Neúspěšné přihlášení
echo "<div style='color: red;'><strong>Toto heslo není správné.</strong></div>";
}
}
else
{
//Neexistující přezdívka
echo "<div style='color: red;'><strong>Tato přezdívka nebyla nalezena.</strong></div>";
}
}
}
?>
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' lang='sk'>
<head>
<title>Invite list</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="author" content="SobkyLuckSK">
<link rel="stylesheet" type="text/css" href="invite.css">
<script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<img class="logo" src="http://www.magicraft.4fan.cz/wp-content/uploads/2014/06/MAGICRAFT-3.png">
<form action="" method="POST">
<fieldset class="table">
<legend><p style="font-size: 2em; color: gold; font-weight: bold">Prihlásenie</p></legend>
<table width="100%">
<tr>
<p style="font-size: 0,5em; color: gold; font-weight: bold">Pre prihlásenie použite rovnaké údaje ako k serveru MagiCraft</p>
</tr>
<tr>
<td width="80%"><input type="text" class="nick" name="nick" tabindex="1" size="25" placeholder="Nick"></td>
</tr>
<tr>
<td width="80%"><input type="password" class="heslo" name="heslo" tabindex="2" size="25" placeholder="Heslo"></td>
</tr>
<tr>
<td colspan="4" align="center"><input type="submit" class="tlacitko" value="Prihlásiť" tabindex="3"></td>
</tr>
</table>
</fieldset>
</form>
</body>
</html> |
||
| jenikkozak Profil |
#18 · Zasláno: 4. 7. 2014, 14:35:39
Kdyby sis ten odkázaný návod prošel, udělal bys lépe. Takto máš sice velkolepý skript, o kterém ale netušíš, jak funguje. Takže ho v budoucnu neopravíš ani nedoplníš.
|
||
| Sobky Profil |
#19 · Zasláno: 4. 7. 2014, 15:00:13
no ano ten php neni môj lebo vôbec neviem ako to spraviť ale ten html som robil ja
|
||
| Kubo2 Profil |
#20 · Zasláno: 4. 7. 2014, 17:22:49
Sobky:
„no ano ten php neni môj lebo vôbec neviem ako to spraviť ale ten html som robil ja“ To je síce pekné, ale HTML v tomto nehrá žiadnu rolu. Najprv si prosím pozorne prečítaj odkázaný návod. |
||
|
Časová prodleva: 12 let
|
|||
0