Hallo PHPhulp,

Ik heb een probleem waar ik maar niet uitkom, namelijk bij deze code:


<?php
$gebruikersnaam = $_POST['gebruikersnaam'];
	$promotag = $_POST['promotag'];
	$gegeven_door = $_SESSION['gebruikersnaam'];
	$date = date("Y-m-d h:i:s");
	
	$sql = "SELECT * FROM paneel_promotags WHERE gebruikersnaam='$gebruikersnaam'";
	$result = mysqli_query($con,$sql);
	$result = mysqli_fetch_array($result);
	
	if($gebruikersnaam == $result['gebruikersnaam'] || $promotag == $result['promotag']){
		$error = 'error';
	}
	else{
		$sql = "INSERT INTO `paneel_promotags` (gebruikersnaam, promotag, gegeven_door, datum) VALUES ('$gebruikersnaam', '$promotag', '$gegeven_door', '$date')";
		if ($con->query($sql) === true) {

		} else {
			echo "Error: " . $sql . "<br>" . $con->error;
		}
		
		$sql = "INSERT INTO `paneel_logs` (gebruikersnaam, subject, log, datum) VALUES ('$gegeven_door', 'Promotag toegevoegd', '$gegeven_door heeft $gebruikersnaam de promotag $promotag gegeven.', '$date')";
		if ($con->query($sql) === true) {
			header('Location: /paneel/admin/promotag/overzicht');

		} else {
			echo "Error: " . $sql . "<br>" . $con->error;
			}
	}
?>


Alvast bedankt voor de hulp

[size=xsmall]Toevoeging op 27/11/2016 19:42:32:[/size]

Bij gebruikersnaam werkt die wel, maar bij promotag niet, ze zijn alle 2 goed gedifind...
Los van het feit dat dit alles nogal offtopic is geraakt is het spaghetti-gehalte van deze code nogal hoog... Het eerste fragment is praktisch onleesbaar vanwege:
- compleet willekeurige inspring
- het compleet ontbreken van annotatie, *wat* zou deze code uberhaupt moeten doen?

Daarnaast controleer je niet of er resultaten zijn maar haal je deze meteen op...

Is het mogelijk dat eenzelfde gebruiker meerdere promotags heeft? In het algemeen: hoe luidt het gedrag van promotags.

En als het loggen van "paneelacties" een terugkerend fenomeen is loont het misschien de moeite om hier een functie voor te introduceren?
Functie van promotag is dat er maar 1 de zelfde kan zijn, en een gebruiker er maar 1 kan krijgen. Hoe controleer ik of er resultaten zijn? En sorry voor spaghetti code. Let er nog niet erg op. Doe nog maar 3 daagjes echt php, daarvoor alleen wat simpele dingen.

Ik ga straks ook even overnieuw beginnen, want heb nieuwe dingen toegevoegd en door al die spaghetti code is het erg moeilijk te verbeteren.

[size=xsmall]Toevoeging op 28/11/2016 15:38:12:[/size]

- Ariƫn - op 28/11/2016 14:42:53

Dan neemt niet weg dat md5() behoorlijk zwak blijft. Gebruik liever de password_hash() en password_verify() functies.


Als ik deze functie gebruik, kan ik niet meer inloggen. Ik heb het ook bij registreren die functie gedaan (password_hash()) met 2 values


[size=xsmall]Toevoeging op 28/11/2016 17:46:20:[/size]

Hebbes! Ik moet niet <code>
$sql = "SELECT * FROM paneel_promotags WHERE gebruikersnaam='$gebruikersnaam'";
$result = mysqli_query($con,$sql);
$result = mysqli_fetch_array($result);

if($gebruikersnaam == $result['gebruikersnaam'] || $promotag == $result['promotag']){
$error = 'error';
}</code> maar dit doen: <code>
$sql = "SELECT * FROM paneel_promotags WHERE gebruikersnaam='$gebruikersnaam'";
$result = mysqli_query($con,$sql);
$result = mysqli_fetch_array($result);

if($gebruikersnaam == $result['gebruikersnaam']){
$error = 'error';
}
$sql = "SELECT * FROM paneel_promotags WHERE promotag='$promotag'";
$result = mysqli_query($con,$sql);
$result = mysqli_fetch_array($result);

if($promotag== $result['promotag']){
$error = 'error';
</code>

Allemaal hartstikke dank voor jullie hulp! Ik heb er zeer veel aan gehad en ook veel geleerd :D.

Reageren