Ukládání dat na foru – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ukládání dat na foru – PHP – Fórum – Programujte.comUkládání dat na foru – PHP – Fórum – Programujte.com

 

Luky
~ Anonymní uživatel
25 příspěvků
19. 6. 2018   #1
-
0
-

Zdravím všeci, mám na webzdarma stránky chtěl bych tam dát forum kde by registrovaný uživatel mohl dávat příspěvky soubory a mohl je i stahovat. Mám to napsat v php, registrování už mám v phpmyadmin ale nevím jak mám vytvořit tabulku která by zvalidovala jméno registrovaného aby mohl ukládat a stahovat data. Všem děkuji

Nahlásit jako SPAM
IP: 151.249.107.–
peter
~ Anonymní uživatel
4014 příspěvků
19. 6. 2018   #2
-
0
-

Nedava to prilis smysl.

Pro forum se obvykle stahne a nainstaluje cms pro forum. MiniBB, phpBB...
google = cms forum php

Mas neco vlastniho, co mas? Zkus predlozit nejaky kod.
Registrovat uzivatele primo pres phpadmina je takove divne, ale lze to tak delat. Nicmene, mel bys pro heslo pouzit hash a nedrzet hesla jako text v databazi.
Sql prikazy, ktere by se pouzil je: 

SELECT id, name FROM users where name = 'lojza' AND psw = 'heslo'

A potom tam musis mit samotny ten pseudo-program, ktery by mohl vypadat:

// vyresit post
user = isset($_POST['user']) ? $_POST['user'] : ''
psw  = isset($_POST['psw'])  ? $_POST['psw']  : ''
// vyresit session
if (user='' && psw='')
  {
user = isset($_SESSION['user']) ? $_SESSION['user'] : ''
psw  = isset($_SESSION['psw']) ? $_SESSION['psw'] : ''
  }
sql->connect('server', 'user', 'psw', 'db')
sql->query('SET NAMES UTF-8')
result = sql->query('SELECT user, psw...')
sql->disConnect()
// vytahnout data z db
user = sql->fetch(result,0,'user')
psw  = sql->fetch(result,0,'psw')
// vyresis session
$_SESSION['user'] = user
$_SESSION['psw'] = psw
if (user!='' && psw!='') { ...zbytek programu... }

To je samozrejme velice, velice spatne, vytahovat z db hesla uzivatelu. Ale principialne by to takhle mohlo fungovat

Nahlásit jako SPAM
IP: 193.84.204.–
Kit+15
Guru
19. 6. 2018   #3
-
0
-

#2 peter
Hash se pro šifrování už dávno nepoužívá, je zranitelný i po zasolení. Mnohem lepší je použití funkce crypt(), která náhodně vygeneruje i tu sůl.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:5ca4:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Luky
~ Anonymní uživatel
25 příspěvků
21. 6. 2018   #4
-
0
-

#2 peter


Mám to docela rozkouskované jsem v tom začátečník všechno web :) 

Vše co zatím k tomu mám.

https://uloz.to/!KByzCX6jPCux/poslat-rar     

Tady je ta registrace + přihlášení je o stránky renegades.wz.cz no a musím v rámci školy aspon nějak základně, potom kdo ví. 

Zadání zní takto:

Vyberte si, jakou aplikaci chcete dělat. Musí obsahovat:
- databázi, minimálně jedna vazba 1:N
- přihlašování uživatelů
- administrační rozhraní pro databázi, formuláře
- RSS výstup

Chybí mě 2 docela zásadní věci a to propojení tabulky mám jenom tabulku kde se mi registrují uživatelé a já nevím jak mám vytvořit a propojit tyto dvě tabulky aby registrovaný uživatel mohl ukládat či mazat. Jinak děkuji moc za veškerou pomoc.

Nahlásit jako SPAM
IP: 185.21.220.–
peter
~ Anonymní uživatel
4014 příspěvků
22. 6. 2018   #5
-
0
-

Jsi odnekud kopiroval bez premysleni, ze? 

<?php
 $spojeni=mysql_connect('185.64.219.6','renegadeswzc8368', '*************' );
                Mysql_Select_DB("renegadeswzc8368");
                MySQL_Query ("SET Names 'utf-8'") ;
 
// Pokud te ta prvni cast pripoji k databazi, pak ta druha je nesmysl, ktery pripojeni zas zrusi.
//$spojeni = @MySQL_Connect($db_server ,$db_login, $db_password);
//MySQL_Select_DB("renegadeswzc8368")or die('<p style="color: red">Nastala chyba v pripojeni k databazi');
//mysql_query("set names utf8");
?>

login.html - html stranka se ihned posila uzivateli, neprochazi pres server-apache, takze php kod se nezpracuje 

<?php
include "./connect.php";
$login = mysql_real_escape_string($_POST["nick"]);
$heslo = mysql_real_escape_string($_POST["heslo"]);
$md5heslo = md5($heslo);

$dotaz = mysql_query("select * from uzivatele where login = '$login' and heslo = '$md5heslo'");
$overeni = mysql_num_rows($dotaz);
$row = mysql_fetch_array($dotaz);
echo '<pre>'; var_dump('$_POST', $_POST, '$row', $row, '$_SESSION', $_SESSION);// to bych tam pridal
if($overeni == 1) {
 session_start();
 $_SESSION['login'] = stripslashes($login); 

 $_SESSION['id'] = $row["id"];
echo '<pre>'; var_dump('$_POST', $_POST, '$row', $row, '$_SESSION', $_SESSION);// to bych tam pridal
// header("Location: admin.php");  to bych zatim vyradil
 die();
} else {
 echo"Zadal jsi špatný login nebo heslo!";
}
?>

admin.html - opet, nemelo by to byt php? Ostatne, v predchozim kodu mas preci header("Location: admin.php");, ne?
 

Podle toho kodu mi prijde, ze ti unika to zasadni :)
pc uzivatel - Www prohlizec umi pracovat se soubory typu html, css, js, image, file, ...
pc server - Program apache, umi pracovat se soubory *.php. Jakykoliv jiny soubor posila jako soubor.
Kdyz zpracovava php, generuje soubor. Defaultne jej posila jako text/html. Ale pomoci header() funkce je mozne to zmenit na file, text/css, text/javascript, image/jpeg a pod. Cili, pomoci php programu generujes html stranku, obvykle. (Nebo v pripade captcha je to obrazek, proste, co potrebujes).
Kdyz mu ale das priponu html, tak to ignoruje, posila uzivateli, jako by to byl soubor.txt.

Ostatne, na ulozto mas stahnout rar. Rar soubory umi precist jen winrar.exe. Pripadne jiny program, ktery ma k tomu plugin. Ale necekas, ze ti zobrazi obsah raru html prohlizec, ne?

Nahlásit jako SPAM
IP: 193.84.204.–
Kit+15
Guru
22. 6. 2018   #6
-
0
-

#5 peter
Proč tam dáváš funkci mysql_connect(), která v PHP7 už není? A co md5()? Ta se přece pro hesla také nemá používat.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:8e3:8...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
22. 6. 2018   #7
-
0
-

   

$dotaz   = mysql_query("select * from uzivatele where login = '$login' and heslo = '$md5heslo'");

// To oznaceni neni uplne presne. Ale je to jen detail. Na php.net najdes
// toto oznacovani:
$query  = "select * from uzivatele where login = '$login' and heslo = '$md5heslo'"
$result = mysql_query($query);

Dotaz je ten samotny string.
Funkce mysql_query = zpracovani dotazu.
$result = vysledek funkce
Ale, samozrejme, oznacuj si to, jak chces, kdyz se v tom budes orientovat, je to ok.

---

Nemas tam nikde error_reporting(E_ALL);
Neresis pro dotazy mysql error.

$result = mysql_query($query) or die( 'Error: ' . mysql_error() );
Nahlásit jako SPAM
IP: 193.84.204.–
peter
~ Anonymní uživatel
4014 příspěvků
22. 6. 2018   #8
-
0
-

#6 Kit
Stahni si ten rar balicek z ulozto. Kopiruji jeho kod.
Ano, dobre zminit, ze aktualne pouzivane php 7 pouziva pdo_funkce() ne mysql_funkce(). Ze, jako skolni priklad dobry, ale ten ucitel uci neco, co uz ani neexistuje. Neco, jako parni lokomotiva :)

Nahlásit jako SPAM
IP: 193.84.204.–
peter
~ Anonymní uživatel
4014 příspěvků
22. 6. 2018   #9
-
0
-

Samozrejme to kopiruji i s temi chybami, jako treba soubor, ktery se mel jmenovat neco.php ma pojmenovany jako neco.html :)

Nahlásit jako SPAM
IP: 193.84.204.–
Kit+15
Guru
22. 6. 2018   #10
-
0
-

#8 peter
Ani nevím, čím bych si ten rar rozbalil a popravdě se mi nechce to stahovat odněkud, kde mi v tom brání CAPTCHA. Raději si vždy počkám, až dotyčný ukáže tu nefunkční část kódu a teprve pak se tím začnu zabývat.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:8e3:8...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
4014 příspěvků
22. 6. 2018   #11
-
0
-

By ses taky nemusel dockat :) Proto jsem zkopiroval aspon neco. Jako, mohl pouzit neco jako jsfiddle.net nebo neco podobne pro php.

Kazdy ten soubor je necim zvlastni. Uz jen, kdyz mrknes na nazev a uvnitr najdes php kod. Vypada to na copy-paste z ruznych zdroju. Ti to klidne cele vykopiruji, ale prijde mi, ze by si to mel spravit sam. V 'code' je primo plain-text :)
admin.html Aplikace.docx connect.php index.html login.html logout.html registrace.html RSS.rss

Edit admin.php

<?php
session_start(); 
?>
<head>
</head>
<body>
<h2>Forum</h2> 
<?php
 if($_SESSION['login']!=""){
 echo'Vítej!!!<br> 
 <a href="/logout.php">Odhlásit se</a>'; 
 } else {
 echo'Tato stránka je pøístupná pouze pøihlášeným uživatelùm. Pokud nemáš úèet, <a href="/registrace.php">zaregistruj se</a>!<br> 
 <h2>Pøihlásit se:</h2>
 <form action="login.php" method="post"> 
 <table>
 <tr>
 <td>Pøezdívka: </td>
 <td><input type="text" name="nick" value="" size="17" tabindex="1" /></td>
 </tr>
 <tr>
 <td>Heslo: </td>
 <td><input type="password" name="heslo" value="" size="17" tabindex="2" /></td>
 </tr>
 <tr>
 <td colspan="2"><input type="submit" name="submit" value="Pøihlásit se" /></td>
 </tr>
 </table>
 </form>';
 }
?>
 
---

<?php
 $spojeni=mysql_connect('185.64.219.6','renegadeswzc8368', '*************' );
                Mysql_Select_DB("renegadeswzc8368");
                MySQL_Query ("SET Names 'utf-8'") ;
 
$spojeni = @MySQL_Connect($db_server ,$db_login, $db_password);
MySQL_Select_DB("renegadeswzc8368")or die('<p style="color: red">Nastala chyba v pripojeni k databazi');
mysql_query("set names utf8");
?>

---

<form action="login.php" method="post"> 
 <table>
 <tr>
 <td>Pøezdívka: </td>
 <td><input type="text" name="nick" value="" size="17" tabindex="1" /></td>
 </tr>
 <tr>
 <td>Heslo: </td>
 <td><input type="password" name="heslo" value="" size="17" tabindex="2" /></td>
 </tr>
 <tr>
 <td colspan="2"><input type="submit" name="submit" value="Pøihlásit se" /></td>
 </tr>
 <tr>
 <td colspan="2" align="right">Pokud nemáte úèet, <a href="/registrace.php">registrujte se</a></td>
 </tr>
 </table>
 </form>

---

<?php
include "./connect.php";
$login = mysql_real_escape_string($_POST["nick"]);
$heslo = mysql_real_escape_string($_POST["heslo"]);
$md5heslo = md5($heslo);

$dotaz = mysql_query("select * from uzivatele where login = '$login' and heslo = '$md5heslo'");
$overeni = mysql_num_rows($dotaz);
$row = mysql_fetch_array($dotaz);
if($overeni == 1) {
 session_start();
 $_SESSION['login'] = stripslashes($login); 

 $_SESSION['id'] = $row["id"];
 header("Location: admin.php"); 
 die();
} else {
 echo"Zadal jsi špatný login nebo heslo!";
}
?>

---

<?php
session_start();
session_destroy();
header("location: index.php"); 
?>

---

<?php
include "connect.php";
if(isset($_POST['submit'])) {
 $nick = mysql_real_escape_string($_POST['nick']);
 $heslo = mysql_real_escape_string($_POST['heslo']);
 $over_heslo = mysql_real_escape_string($_POST['over_heslo']);
 $md5_heslo = md5($heslo);
 $email = mysql_real_escape_string($_POST['email']);
 
 $user_check = mysql_query("SELECT login FROM uzivatele WHERE login='".$nick."'");
 if($nick==""){echo"Nebyl vyplnìn nick!";}
 else if(mysql_num_rows($user_check)){echo"Tento nick používá již jiný uživatel.";}
 else if($heslo==""){echo"Nebylo vyplnìno heslo";}
 else if($over_heslo==""){echo"Nebylo vyplnìno ovìøovací heslo";}
 else if($heslo!=$over_heslo){echo"Vyplnìná hesla se neshodují";}
 else if($email==""){echo"Nebyl vyplnìn email";}
 else{
 $sql= mysql_query("INSERT INTO uzivatele VALUES ('','$nick','$md5_heslo','$email')") or die(mysql_error());
 echo"Registrace byla úspìšnì dokonèena!";
 }
}
?>

<form action="#" method="post"> 
<table> 
<tr> <td>Pøezdívka: </td> <td><input type="text" name="nick" value="<?php if(isset($_POST["nick"])){echo $_POST["nick"];}?>" size="25" tabindex="1" /></td> </tr>
<tr> <td>Heslo: </td> <td><input type="password" name="heslo" value="" size="25" tabindex="2" /></td> </tr> 
<tr> <td>Ovìøení hesla: </td> <td><input type="password" name="over_heslo" value="" size="25" tabindex="3" /></td> </tr> 
<tr> <td>Email: </td> <td><input type="text" name="email" value="<?php if(isset($_POST["email"])){echo $_POST["email"];}?>" size="25" tabindex="4" /></td> </tr> 
<tr> <td colspan="2"><input type="submit" name="submit" value="Registrovat se" /></td> </tr> 
</table> 
</form>

---

<?php 
$db = new mysql ('185.64.219.6','renegadeswzc8368', 'Monty236') ;

$query = $db->query(  " SELECT  'articles' 'id'
                                'articles' 'title '
                                'articles' 'timeline'
                        FROM 'articles'
                        ORDER BY 'articles' 'timestamp'
                        DESC
                        limit 10
                        
    ");
    
    if ($db->effected_rows >= 1)
    
    
    {
    
      echo'<?xml version="1.0" encoding="UTF-8" ?> 


    
    
echo>
<?xml version="1.0"?>
		<rss version="2.0">
		   <channel>
			  <title>Airsoft</title>
			  <ttl>10</ttl>
			  <link>www.renegdes.wz.cz/</link>
			  <description>Web o airsoft týmu.</description>
			  <language>cs</language>
			  
			  
			  <generator>Webtea RSS Generator 1.0</generator>
			  
			  
              <?php
               while ($row = squery-> fetch_assoc ())
              ?>
              
              <item>
              
              <title> <?php echo $row{'Title'}?>
               <description>Web o airsoft týmu.</description>
                <link>www.renegdes.wz.cz/article/ <?php echo $row{'id
                 <pubDate><?php echo date ('r',$row{'timestamp'} )     ?>  </pubDate>
              </item>
					  
		   </channel>
		</rss>
Nahlásit jako SPAM
IP: 193.84.204.–
Kit+15
Guru
22. 6. 2018   #12
-
0
-

#11 peter
Také existuje Pastebin, GitHub, Bitbucket a další úložiště, která se na zdrojáky přímo specializují. Navíc se u některých dá uložit komentář přímo k pochybnému řádku. Vůbec by nebylo od věci, kdyby je učitelé naučili pracovat s verzovacími systémy (zejména Git), neboť bez nich si v praxi ani nevrznou.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:8e3:8...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Luky
~ Anonymní uživatel
25 příspěvků
22. 6. 2018   #13
-
0
-

#7 peter
Ahoj hele já teď nevím zda jsme se pochopili mě ta registrace funguje i přihlášení funguje, je to stažený z jednoho zdroje. Já potřebuji propojit v mysql databázi aby přihlášení uživatel mohl vkládat data a zase je mazat v té sekci foru. 

Nahlásit jako SPAM
IP: 185.21.220.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 45 hostů

Podobná vlákna

Ukladani dat — založil Earl Cash

C# Ukladani dat do .ini — založil nevimjakejmeno

C# : Ukládání dat ve WForms — založil Hoffik

AS - ukladaní a načitaní dat — založil Borisek

Ukládání dat na disk — založil sh00ter

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý