Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
Autor | Správa |
---|
Registrovaný: 05.04.10 Prihlásený: 08.04.15 Príspevky: 46 Témy: 13 | 13 |
Zdravim som strasny laik konecne sa mi podarilo spojazdnit prihlasenie a registraciu na bezplatnom serveri.
Ak som to dal na platenu domenu prestalo to fungovat a neviem preco.
index.php
Kód: <?php
//This will start a session
session_start();
$username = $_SESSION['username'];
$password = $_SESSION['password'];
//Check do we have username and password
if(!$username && !$password){
echo "Welcome Guest! <br> <a href=login.php>Login</a> | <a href=register.php>Register</a>";
}else{
echo "Welcome ".$username." (<a href=logout.php>Logout</a>)";
}
?> login.php
Kód: <?php
session_start();
//This displays your login form
function index(){
echo "<form action='?act=login' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."<input type='submit' value='Login'>"
."</form>";
}
//This function will find and checks if your data is correct
function login(){
//Collect your info from login form
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
//Connecting to database
$connect = mysql_connect("host", "username", "password");
if(!$connect){
die(mysql_error());
}
//Selecting database
$select_db = mysql_select_db("database", $connect);
if(!$select_db){
die(mysql_error());
}
//Find if entered data is correct
$result = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$row = mysql_fetch_array($result);
$id = $row['id'];
$select_user = mysql_query("SELECT * FROM users WHERE id='$id'");
$row2 = mysql_fetch_array($select_user);
$user = $row2['username'];
if($username != $user){
die("Username is wrong!");
}
$pass_check = mysql_query("SELECT * FROM users WHERE username='$username' AND id='$id'");
$row3 = mysql_fetch_array($pass_check);
$email = $row3['email'];
$select_pass = mysql_query("SELECT * FROM users WHERE username='$username' AND id='$id' AND email='$email'");
$row4 = mysql_fetch_array($select_pass);
$real_password = $row4['password'];
if($password != $real_password){
die("Your password is wrong!");
}
//Now if everything is correct let's finish his/her/its login
session_register("username", $username);
session_register("password", $password);
echo "Welcome, ".$username." please continue on our <a href=index.php>Index</a>";
}
switch($act){
default;
index();
break;
case "login";
login();
break;
}
?> register.phpKód: <?php
//This function will display the registration form
function register_form(){
$date = date('D, M, Y');
echo "<form action='?act=register' method='post'>"
."Username: <input type='text' name='username' size='30'><br>"
."Password: <input type='password' name='password' size='30'><br>"
."Confirm your password: <input type='password' name='password_conf' size='30'><br>"
."Email: <input type='text' name='email' size='30'><br>"
."<input type='hidden' name='date' value='$date'>"
."<input type='submit' value='Register'>"
."</form>";
}
//This function will register users data
function register(){
//Connecting to database $connect = mysql_connect(" mysql51.websupport.sk", "eurowebsite", "mojeheslo");
if(!$connect){
die(mysql_error());
}
//Selecting database
$select_db = mysql_select_db("database", $connect);
if(!$select_db){
die(mysql_error());
}
//Collecting info
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$pass_conf = $_REQUEST['password_conf'];
$email = $_REQUEST['email'];
$date = $_REQUEST['date'];
//Here we will check do we have all inputs filled
if(empty($username)){
die("Please enter your username!<br>");
}
if(empty($password)){
die("Please enter your password!<br>");
}
if(empty($pass_conf)){
die("Please confirm your password!<br>");
}
if(empty($email)){
die("Please enter your email!");
}
//Let's check if this username is already in use
$user_check = mysql_query("SELECT username FROM users WHERE username='$username'");
$do_user_check = mysql_num_rows($user_check);
//Now if email is already in use
$email_check = mysql_query("SELECT email FROM users WHERE email='$email'");
$do_email_check = mysql_num_rows($email_check);
//Now display errors
if($do_user_check > 0){
die("Username is already in use!<br>");
}
if($do_email_check > 0){
die("Email is already in use!");
}
//Now let's check does passwords match
if($password != $pass_conf){
die("Passwords don't match!");
}
//If everything is okay let's register this user
$insert = mysql_query("INSERT INTO users (username, password, email) VALUES ('$username', '$password', '$email')");
if(!$insert){
die("There's little problem: ".mysql_error());
}
echo $username.", you are now registered. Thank you!<br><a href=login.php>Login</a> | <a href=index.php>Index</a>";
}
switch($act){
default;
register_form();
break;
case "register";
register();
break;
}
?> sql kodKód: CREATE TABLE `users` (
`id` INT( 50 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 15 ) NOT NULL ,
`password` VARCHAR( 15 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL
)
stranka http://www.eurowebsite.sk
Prosim zdrzte sa komentou nauc sa to atd atd, pisem sem preto aby som sa to naucil...
Prakticky ak mi to niekto vysvetli sa mi to uci najlepsie a najlahsie.
Dakujem
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Takže si zmenil server? Vypíše ti pri pokuse o pripojenie funkcia mysql_connect() nejaký error (prípadne iná chyba, máš zapnuté zobrazovanie chýb v php? - pre potreby odladenia kódu ti to môže dosť pomôcť, aj keď treba vedieť (nájsť), čo jednotlivé hlášky znamenajú - po overení všetkých funkcií zase výpis chýb vypnúť)?
Dúfam, že ak sa zmenili prihlasovacie údaje na databázu, názov databázy a mysql server, že si ich vo svojom kóde upravil (vo všetkých častiach kódov).
Neštudoval som všetky tie kódy, no hneď v index.php som si všimol, že by bolo rozumnejšie v podmienke overovať, či existuje, resp. neexistuje $username alebo (||) $password. Teraz testuješ, či neexistujú obidve (&& - AND) pričom ak by neexistovala len jedna z nich, podmienka sa presunie na else (tiež nie moc rozumné, je lepšie vždy dávať výsledok ktorý očakávaš do if/elseif - else využívaj radšej len ako prostriedok na hlásenie chýb - teda nie vždy je to možné, ale kým nemáš pomienku riadne ošetrenú, bude lepšie písať to takto) vetvu.
Treba si to ošetriť, nikdy nevieš, kto sa na tvoje stránky prihlasuje.
btw. ty v databáze ukladáš nehashované heslo?
_________________ always is always wrong |
|
Registrovaný: 05.04.10 Prihlásený: 08.04.15 Príspevky: 46 Témy: 13 | 13 |
To heslo nieje heslo
To uz je namna moc hovorim ze som laik takze budem len vdacny ak sa mi podari toto spustit a neskor budem upravovat.
Neviem ci to mam spravne zapisane ale ked mi to nefungovalo na bezplatnom serveri tak mi pekne napisal chybu ze to nieje spojene na tomto nic...
http://imgupload.sk/viewer.php?file=jktuy9ojg13zhzw83v7z.png
na serveri v priecinku databaza je napisane toto
V php skriptoch používajte pre mysql 5.1: :/tmp/mysql51.sock
V php skriptoch v prípade Improved MySQL funkcií je syntax nasledovná:
$socket = "/tmp/mysql50.sock";
$mysqli = new mysqli("localhost", $uzivatel, $heslo, $databaza, 0, $socket);
V php skriptoch v prípade PDO funkcií je syntax nasledovná:
$dsn = "mysql:unix_socket=/tmp/mysql50.sock;dbname=$databaza";
try {
$dbh = new PDO($dsn, $user, $password);
}
catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
Externý prístup k databázam:
mysql 5.1 server: mysql51.websupport.sk port: 3309
neviem ci je to dolezite a mal by som pouzit nieco stoho
Mozno to len nemam dobre zapisane skusal som to pomenit viac sposobov ale nic
|
|
Registrovaný: 08.08.09 Príspevky: 12449 Témy: 39 | 39 |
Na websupporte používam (možno nie celkom správne, neviem, neskúmal som to - funguje to) ako server (prvý argument funkcie mysql_connect) na pripojenie mojich php skriptov "db51.websupport.sk".
Chcelo by to napísať len nejaký jednoduchý skript na výber "niečoho" z databázy, pričom si otestuješ jednotlivé spôsoby, ktoré píše websupport vo svojich manuáloch a budeš mať istotu, že keď sa budeš chcieť pripojiť na databázu, že budeš pripojený. Totiž chýb tam môže byť viac, treba to odlaďovať postupne.
A nehnevaj sa, no podľa mňa ak tvoríš nejaký skript, máš vedieť aspoň základy - my tu niesme od toho, aby sme za teba opravovali také základné chyby (a že by sa ich tam ešte pár našlo). Predstav si, že do tvojej databázy teraz niekto zaregistruje účet na heslo, ktoré používa ešte na tisíc ďalších stranách. To sa ti zdá férové? Navyše - keď to teraz píšeš s prázdnou databázou, ľahko to prerobíš na md5() prípadne sha() hashovanie. No čo potom, keď budeš mať v tabuľke heslá viac ako jedného užívateľa? Bude komplikovanejšie to (potichu) prepísať a všetky údaje manuálne meniť, ako teraz. Takže odporúčam ti (naozaj je to rada) písať to poriadne a hlavne bezpečne, ušetríš sebe aj ostatným hromadu času a nervov.
_________________ always is always wrong |
|
Registrovaný: 05.04.10 Prihlásený: 08.04.15 Príspevky: 46 Témy: 13 | 13 |
Len mne to fungovalo na tom bezplatnom serveri zrazu ak som si dal plateny to nefunguje... Chcel som len vediet preco... Nejde mi oto hladat chyby v skriptoch len sa pripojit k mysql...
Chcem sa to naucit len neviem sa to naucit z teorie, uz som to tolko krat cital a stale nic... Druha pomocka premna bola youtube navody ale tam zas nieje vsetko... Takze posledna moznost mi ostala napisat tu...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
ved si si uz sam odpovedal - ak hostujes u ws, tak v mysql_connect pouzijes okrem hostu aj socket (podla verzie mysql: mysql50.sock alebo mysql51.sock):
Kód: $connect = mysql_connect("localhost:/tmp/mysql50.sock", "username", "password");
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.04.10 Prihlásený: 08.04.15 Príspevky: 46 Témy: 13 | 13 |
Super cez socket mi to spojilo... Dakujem // pridané po 50 minútach od posledného príspevkuEste sa chcem opytat, pripojit sa uz ide len neviem najist spravnu cestu k databaze...
Na fotke co som daval je moja databaza a meno db netreba nejaky iny prikraz namiesto
Kód: $select_db = mysql_select_db("database", $connect); ?
?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
v danej funkcii staci uviest len nazov databazy, ku ktorej sa chces pripojit, cize to, co mas v kode, by malo byt ok, ak namiesto "database" uvedies meno existujucej db
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 05.04.10 Prihlásený: 08.04.15 Príspevky: 46 Témy: 13 | 13 |
Nech robim co robim furt pise cannot select DB
Nepotrebujem nejaky iny prikaz kedze to mam na websupport.sk ?
Ako si napisal ze kedze hostingujem na ws potrebujem aj iny prikaz na pripojdenie k mysql
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
Neexistuje ti taka databaza, mozno si ju nevytvoril. Ak si si isty, ze existuje, posli screenshot z phpMyAdmina alebo co tam mate na spravu databaz, aby sme videli.
Nepotreboval si iny "prikaz", ani predtym, ani teraz, skratka bola ina hostname, je tam toho.
|
|
Stránka: 1 z 1
| [ Príspevkov: 10 ] | |
|