Mysqli regisztráció & bejelentkezés

Mysqli regisztráció & bejelentkezés
2019-07-21T12:04:29+02:00
2019-07-24T12:05:05+02:00
2022-10-15T21:41:41+02:00
Progtry
Heló!

Mit ronthattam el? Elkészítettem a kódot aminek célja, hogy tudjon regisztrációs formon keresztül datokat továbbítani a megfelelő adattáblába utána pedig be tudjon a user jelentkezni.

 A fájlokat mellékeltem.

Csak 1 fájlt engedett csatolni ezért bemásolom a többi kódot.





connect.php:

<?php
$computer="localhost";
$databaseUsername="root";
$databasePassword="";
$databaseName="valami";

$conn = mysqli_connect($computer, $databaseUsername, $databasePassword, $databaseName) or ('Failed to connect to database.');

//check connection
/*if ($conn){
echo 'Success.';
} else {
echo 'You have fucked up.';
}*/
?>







registration.php:



<?php
include '../../connect.php';
?>
<?php
include 'server_register.php';
?>
<!doctype html>
<html lang="hu">
<head>
<link rel="icon" href="../../lasowlogo.png">
<title>projektnév</title>
<link rel="stylesheet" href="registration.css">
<meta charset="UTF-8">
<?php
require_once 'formvalidation.js';
?>
</head>
<body>
<?php
include '../basiccss/befregistrmenubar.html';
?>
<?php
if($_SESSION['msg_register'] != null && $_SESSION['msg_type'] == "error"){
echo "<script type='text/javascript'>document.getElementById('message').setAttribute('class', 'error');</script>";
echo $_SESSION['msg_register'];
}
?>
<h1>Regisztráció</h1>
<div class="registrfield">
<p>Ékezetes betűket felhasználónévhez egyenlőre nem használhatsz.<br>
Felhasználónevedet 60 nap múlva fogod tudni megváltoztatni.</p>
<form name="registrationForm" method="POST" action="../dashboard/dashboard.php" onsubmit="return validateForm()">
<label for="surName">Vezetéknév:</label><br>
<input name="surName" type="text"><br>
<label for="firstName">Keresztnév(ek)</label><br>
<input name="firstName" type="text"><br>
<label for="emailAddress">Email:</label><br>
<input name="emailAddress" type="email"><br>
<label for="phoneNumber">Telefonszám:</label><br>
<input name="phoneNumber" type="number"><br>
<label for="password">Jelszó:</label><br>
<input name="password" type="password"><br>
<label for="passwordConfirm">Jelszó újra:</label><br>
<input name="passwordConfirm" type="password"><br>
<input id="sub" type="submit" name="submitRegistration" value="Regisztrálok!">
</form>
</div>
</body>
</html>




Hozzátenném, hogy ez az első olyan regisztráció-bejelentkezés rendszer aminek nekikezdtem így kérek mindenkit, hogy legyen elnéző ha valami fatális hülyeséget írtam.
Mutasd a teljes hozzászólást!
Csatolt állomány
Igazából a beszúrásnál használni kell a tompa ékezetet a hivatalos neve most nem jut eszembe. ctrl+alt+7 `.  a tábla nevét e közé kell tenni és a mezőneveket is.

INSERT INTO `TablaNev` (`Mezo1`,`Mezo2`,`Mezo3`,`Mezo4`) VALUES ('Ertek1', 'Ertek2','Ertek3','Ertek4');

de ha php változott használsz érték megadáshoz akkor így szebb megoldás '".$ertek1."'

INSERT INTO `TablaNev` (`Mezo1`,`Mezo2`,`Mezo3`,`Mezo4`) VALUES ('".$Ertek1."', '".$Ertek2."','".$Ertek3."','".$Ertek4."');
Mutasd a teljes hozzászólást!

  • Van bármilyen hiba szöveg a kimeneten?
    A session_start(); elől vedd ki a error_reporting(0); sort és tedd mögé.
    Mutasd a teljes hozzászólást!
  • Egyrészt köszönöm a választ, másrészt megcsináltam a módosításokat amiket említettél és nem jelez ki hibát, de az adatbázisba még mindig nem ír.

    Annyit még hozzáteszek (mert lehet, hogy ez a baj), hogy a connect.php a gyökérmappában van és a registration.php és a server_register.php is 2 mappával beljebb. (A registration.php és server_register.php is ugyanabban a mappában kapott helyet.)

    Az adatbázis kapcsolódásával kapcsolatban:

    Amit hozzáírtam az előbb a connect.php-nél a "check connection" részt, az utána levő ellenőrzésnél folyamatosan a success-t írja ki.
    Mutasd a teljes hozzászólást!
  • A registration.php -be tedd bele ezt a sort, a session_start() után.
    ini_set('display_errors', 1);

    Ha nem vagy biztos abba melyik fájlra kerül a vezérlés akkor tegyél a vélt fájlba egy ilyen részt:

    echo __LINE__; exit;
    Mutasd a teljes hozzászólást!
  • Az "ini.set"-tel kezdődő kódot csak a server_register.php fájlba tudtam beletenni mert csak ott van olyan, hogy session start. Ennek ellenére sem sikerült az adattáblába írás illetve az echo _LINE_; exit; kód beírása után egyszerűen csak eltűnt a teljes oldal.
    Mutasd a teljes hozzászólást!
  • Ok.
    Akkor hagyjuk a __LINE__ és exit részt.
    Ezt a sort:

    mysqli_query($conn, "INSERT INTO users (surName, firstName, email, phoneNumber, password) VALUES ('$surName', '$firstName', '$emailAddress', '$phoneNumber', '$password')");
    Cseréld ki erre:

    $sql = "INSERT INTO users (surName, firstName, email, phoneNumber, password) VALUES ('". $surName ."', '". $firstName ."', '." $emailAddress. "', '". $phoneNumber. "', '". $password. "') "; echo "SQL parancs: ". $sql; if (!mysqli_query($conn,$sql)){ echo("Error description: " . mysqli_error($conn)); }
    Mutasd a teljes hozzászólást!
  • Így egyből ezt a hibát dobja ki:

    Parse error: syntax error, unexpected '$emailAddress' (T_VARIABLE) in C:\xampp\htdocs\lasow\hu-HU\regisztracio\server_register.php on line 94
    Mutasd a teljes hozzászólást!
  • Ja, elbénáztam.
    Így lenne jó:

    $sql = "INSERT INTO users (surName, firstName, email, phoneNumber, password) VALUES ('". $surName ."', '". $firstName ."', '". $emailAddress. "', '". $phoneNumber. "', '". $password. "') ";
    echo "SQL parancs: ". $sql;
    if (!mysqli_query($conn,$sql)){
    echo("Error description: " . mysqli_error($conn));
    }
    Mutasd a teljes hozzászólást!
  • Így ezt írja ki:

    Parse error: syntax error, unexpected '!', expecting '(' in C:\xampp\htdocs\lasow\hu-HU\regisztracio\server_register.php on line 96



    A 96. sorban egyébként ez a parancssor fut:

    if !mysqli_query($conn,$sql)){
    Mutasd a teljes hozzászólást!
  • Attól, hogy ez az első ilyen kódod még a szintaktikát ismerned kellene, ahogy a hibajelzések értelmezését is. Szóval azt tanácsolom mielőtt ilyennek nekiállsz kezd el elölről rendesen.

    Vajon mi hiányozhat itt a ! jel előtt, hogy helyes legyen?

    if !mysqli_query($conn,$sql)){
    Mutasd a teljes hozzászólást!
  • Igen meg is van, mégpedig egy "(" karakter. Kipótoltam, de nem ír az adattáblába még mindig.
    Mutasd a teljes hozzászólást!
  • És mit ír az SQL parancs: rész után, azt kellene iderakni.
    Olyan is van hogy az adatbázis tábla mezője nem lehet üres, de ami az INSERT részbe van az üres. Ezért kellene a parancs amit ki is kellett írnia.
    Ha nem írta ki akkor gond van már az INSERT előtt.
    Mutasd a teljes hozzászólást!
  • Igazából a beszúrásnál használni kell a tompa ékezetet a hivatalos neve most nem jut eszembe. ctrl+alt+7 `.  a tábla nevét e közé kell tenni és a mezőneveket is.

    INSERT INTO `TablaNev` (`Mezo1`,`Mezo2`,`Mezo3`,`Mezo4`) VALUES ('Ertek1', 'Ertek2','Ertek3','Ertek4');

    de ha php változott használsz érték megadáshoz akkor így szebb megoldás '".$ertek1."'

    INSERT INTO `TablaNev` (`Mezo1`,`Mezo2`,`Mezo3`,`Mezo4`) VALUES ('".$Ertek1."', '".$Ertek2."','".$Ertek3."','".$Ertek4."');
    Mutasd a teljes hozzászólást!
  • Sosem használok a tábla nevek köré semmilyen jelet 16 éve, és sosem reklamál érte.
    Mutasd a teljes hozzászólást!
  • Az elhagyható. de gondolom a mezőnevek köré raksz jeleket.
    Mutasd a teljes hozzászólást!
  • Ahogy a 3. hozzászólásomban is látszik átalakítottam a kérdést felvevő SQL lekérdezését úgy hogy a változók köré raktam idéző jeleket. Ha viszont integer akkor nem rakok csak php miatt pontot, és a változó elé egy (int)-et.
    Mutasd a teljes hozzászólást!
  • Értem én, de a mező felsorolását is tompa idézőjellel kell körbefogatni. Emiatt nem tölti fel a kérdezőnek az adatokat.
    Mutasd a teljes hozzászólást!
  • Nem kell tompa idézőjel, tökéletesen megfelel az aposztróf vagy a sima idézőjel.
    Sőt, ahogy  a kérdést feltevő írta az is megfelel:

    mysqli_query($conn, "INSERT
    INTO users (surName, firstName, email, phoneNumber, password) VALUES
    ('$surName', '$firstName', '$emailAddress', '$phoneNumber',
    '$password')");
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd