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...
Gebruik of procedureel met mysqli_***(..), OF Object Oriënted met $mysqli->.....

Maar niet door elkaar.
Kan je misschien helpen het goed te doen? Ik vind namelijk niet waar ik dat dan door elkaar haal...

[size=xsmall]Toevoeging op 27/11/2016 20:57:40:[/size]


<?php
session_start();

include '../../assets/include/config.php';
include '../../assets/include/functions.php';

$sql_PaneelLevel = mysqli_query($con, "SELECT * FROM paneel_personeel WHERE gebruikersnaam='".$_SESSION['gebruikersnaam']."'");
$PaneelLevel = mysqli_fetch_assoc($sql_PaneelLevel);
				if ($PaneelLevel['toegang_promotag'] == 1)
				{
if(!logged_in()) {
	header('Location: /');
	die();
}
$error = '';
if(isset($_POST['submit'])){
	$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 (mysqli_query($con,$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 (mysqli_query($con,$sql) === true) {
			header('Location: /paneel/admin/promotag/overzicht');

		} else {
			
			}
	}
}
?>


Volgensmij alles goed veranderd, maar werkt nog steeds niet...

[size=xsmall]Toevoeging op 27/11/2016 21:13:23:[/size]

Laat maar! Hartelijk dank voor uw reactie! Ik heb het problemeen gevonden.. Namelijk dit:

$sql = "SELECT * FROM paneel_promotags WHERE gebruikersnaam='$gebruikersnaam'";
$result = mysqli_query($con,$sql);
$result = mysqli_fetch_array($result);

ik plakte dit eronder:

$sql = "SELECT * FROM paneel_promotags WHERE promotag='$promotag'";
$result = mysqli_query($con,$sql);
$result = mysqli_fetch_array($result);

en toen werkte het :D

[size=xsmall]Toevoeging op 27/11/2016 21:25:13:[/size]

Huh, nu werkt het niet!!! Pls help me

[size=xsmall]Toevoeging op 27/11/2016 21:31:43:[/size]

en ipv $sql = "SELECT * FROM paneel_promotags WHERE gebruikersnaam='$gebruikersnaam'" dit: $sql = "SELECT * FROM paneel_promotags WHERE gebruikersnaam='$gebruikersnaam' AND promotag='$promotag'" werkt ook niet...
Los van het feit dat je makkelijk hackbaar bent vanwege SQL-injection, ben ik benieuwd wat er niet werkt?
Waar loop je precies op vast, en wat werkt er precies niet en wat gebeurt er?
Nou, het is de bedoeling dat als je de gebruikersnaam en promotag invoerd, dat die dan geinsert worden in de database. Maar als de gebruikersnaam of promotag al bestaat, moet die het niet insterten, maar een error geven. Dus ik probeer steeds te zorgen dat die de gebruikersnaam EN de promotag controleerd, maar elke keer controleerd die er maar 1. Dus de ene keer als ik iets aanpas kan je niet de zelfde promotag maar wel de zelfde gebruikersnaam en de andere keer kan je niet dezelfde gebruikersnaam en wel de zelfde promotag...

[size=xsmall]Toevoeging op 28/11/2016 14:08:29:[/size]

- Ariën - op 28/11/2016 00:01:18

Los van het feit dat je makkelijk hackbaar bent vanwege SQL-injection, ben ik benieuwd wat er niet werkt?
Waar loop je precies op vast, en wat werkt er precies niet en wat gebeurt er?


Volgensmij kan dat niet echt want je moet ten eerste ingelogd zijn, en een admin zijn, als je dat niet bent wordt je door gelinkt naar index.
Rob Chesture op 28/11/2016 14:07:32

[quote="- Ariën - op 28/11/2016 00:01:18"]
Los van het feit dat je makkelijk hackbaar bent vanwege SQL-injection...


Volgensmij kan dat niet echt want je moet ten eerste ingelogd zijn, en een admin zijn, als je dat niet bent wordt je door gelinkt naar index.
[/quote]

Als het inloggen op bovenstaande manier van query-opbouw is gemaakt zal ook daar een lek zitten.
Nee, login script is volgensmij wel goed :P zou je even kunnen kijken?

<?php
$error = "";

$gebruikersnaam = $_POST['gebruikersnaam'];
$wachtwoord = $_POST['wachtwoord'];
 
$gebruikersnaam = stripslashes($gebruikersnaam);
$wachtwoord = stripslashes($wachtwoord);
$gebruikersnaam = mysqli_real_escape_string($con, $gebruikersnaam);
$wachtwoord = mysqli_real_escape_string($con, $wachtwoord);
$wachtwoord = md5($wachtwoord);
 
$sql = "SELECT * FROM paneel_leden WHERE gebruikersnaam='$gebruikersnaam' and wachtwoord='$wachtwoord'";
$result = mysqli_query($con,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
 
if(mysqli_num_rows($result) == 1)
{
$_SESSION['gebruikersnaam'] = ucfirst($gebruikersnaam);
$sql = "UPDATE `paneel_leden` SET inactief='0' WHERE gebruikersnaam='$gebruikersnaam'";
if (mysqli_query($con, $sql) === true) {
header("Location: paneel/dashboard");} else {
}
}
else
{
$error = "Log opnieuw in, geen account? <a href='/registreer'>Maak er één!</a>";
}
?>



[size=xsmall]Toevoeging op 28/11/2016 14:24:44:[/size]

Bij index staat er wel if(isset($_POST['submit'])){ CODE VAN HIERBOVEN} ga ik denk zo even veranderen


[size=xsmall]Toevoeging op 28/11/2016 14:33:37:[/size]

Ik kon ze al niet vinden ;P bedankt!
Waarom zou je slashes strippen als je toch al mysqli_real_escape_string gebruikt?
Verder is mysqli_real_escape_string() voor een wachtwoord niet nodig, want een wachtwoord in MD5 bevat toch alleen maar hexadecimale tekens. Los daarvan is MD5 behoorlijk verouderd.

En zou je voortaan de code-tags op het forum willen gebruiken?
I know, maar vreemd genoeg is mijn MD5 heel anders dan andere in mijn database. Je kan in deze database MD5 niet encrypten

[size=xsmall]Toevoeging op 28/11/2016 14:37:46:[/size]

Maar dit probleem heb ik ook bij het registreren, de gebruikersnaam controleert die, maar de email niet..
Dan neemt niet weg dat md5() behoorlijk zwak blijft. Gebruik liever de password_hash() en password_verify() functies.
okay, zal ik doen

Reageren