Problém s (ne)funkčným php kódom

Programovacie jazyky, rady, poradňa...
clavo
Light Expert
Light Expert
Príspevky: 59
Registrovaný: 27 máj 2008, 16:41

Problém s (ne)funkčným php kódom

Príspevok od používateľa clavo »

zdravím, mám taký problém... kód, ktorý prikladám je plne funkčný - robí presne čo potrebujem, avšak ak sa odošlú údaje z formulára do databázy (tie údaje sa do databázy dostanú všetky) vypíše mi aj tak chybu.. prosím preto o pomoc v hľadaní chyby a prípadne o opravu kódu.. sedím nad tým už hodiny a ja tam chybu nevidím :nono: .. vopred ďakujem. :|

Kód: Vybrať všetko

<!DOCTYPE HTML>

<html>
<head>
<meta charset="utf-8">

</head>

<body>
<?php include 'spojenie.php';?>
<?php include 'funkcie.php';?>
<?php include 'menu_bar.php';?>

<h3>Register Here: </h3>

<form method="post">
<?php
if (isset($_POST['submit'])) {
	$username = $_POST['username'];
	$password = md5($_POST['password']);
	if (empty($username) or empty($password)) {
		echo "<p>Fields empty</p>";
	} else {
		if ($stmt = $conn->prepare("INSERT INTO users (id, username, password, user_level, type) VALUES ('','$username','$password','2','a')"))
      {
       $stmt->bind_param('issis', $id, $username, $password, $user_level, $type);
       $stmt->execute();
       $stmt->close();
      }
      echo "<p>Successfuly Registered !</p>";
	}
}
?>
	User Name : <br/>
	<input type="text" name="username" />
	<br/><br/>
	Password : <br/>
	<input type="password" name="password" />
	<br/><br/>
	<input type="submit" name="submit" value="Register" />
</form>

</body>
</html>
konkrétne na tomto riadku píše chybu:

Kód: Vybrať všetko

$stmt->bind_param('issis', $id, $username, $password, $user_level, $type);
Prílohy
chyba.JPG
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Problém s (ne)funkčným php kódom

Príspevok od používateľa BX »

Tu by nemali byť priamo hodnoty, ale otázniky na ktoré potom "nabinduješ" hodnoty pomocou tej metódy bind

Kód: Vybrať všetko

if ($stmt = $conn->prepare("INSERT INTO users (id, username, password, user_level, type) VALUES (?,?,?,?,?)"))
S-player
Light Star
Light Star
Príspevky: 277
Registrovaný: 23 júl 2011, 22:30

Re: Problém s (ne)funkčným php kódom

Príspevok od používateľa S-player »

Kód: Vybrať všetko

if ($stmt = $conn->prepare("INSERT INTO users (id, username, password, user_level, type) VALUES ('','$username','$password','2','a')"))
 {
       $stmt->bind_param('issis', $id, $username, $password, $user_level, $type);
       $stmt->execute();
       $stmt->close();
}
  
echo "<p>Successfuly Registered !</p>";

Pokiaľ ti prepare vráti false kvôli nejakej chybe tak užívateľovi vypíše ,že je regnutí aj keď v skutočnosti nieje. To by si mal dať dokopy...

// Inač v query vkladáš do DB id ako "" a v bind_param máš premennú $id čo je prvá chyba a druhou chybou je ,ak spraviš niečo podobné ako postol BX. IDčko by malo byť auto_increment tz. ,že ti stačí v query nahodiť NULL a nemusíš bindovať žiaden parameter (Aktuálne tam posielaš nikde nedeklarované $id tz. null označený ako int) prípadne IDčko v query neuvádzaj vôbec.

// Pozerám ,že používaš md5(), prečo si heslá nenahadzuješ do DB rovno ako plain text?

// Asi tu s editmi neskončím :D Pri kontrole username/password používaš empty() ,ktoré vráti true aj v prípade ,že user má meno napríklad "0" čo nieje "prázdne pole" + či bolo zadané nejaké heslo kontroluješ až po tom čo prešlo MD5kou :|

// Pridaj trim pre username
Napísať odpoveď